Kịch bản cập nhật. Đã xác minh làm việc và không kích hoạt hộp thoại cho phép.
Không thể ngăn Windows tạo desktop.ini vì thực tế không phải Windows đang làm điều đó. Một số dịch vụ của bên thứ ba khác đang kích hoạt việc tạo tệp đó và rõ ràng, Windows cho phép sử dụng mặc dù UseDesktopIniCache = 0.
Desktop.ini đang khiến tôi phát điên vì vậy tôi đã đưa ra giải pháp ragtag. Tôi quan sát thấy rằng tệp desktop.ini được tạo vài giây sau khi khởi động. Tôi đã lợi dụng điều đó. Sử dụng Trình lập lịch tác vụ, tôi tạm thời vô hiệu hóa quyền ghi trên Máy tính để bàn khi khởi động. Điều đó ngăn các dịch vụ của bên thứ ba thực hiện các shenanigans với máy tính để bàn của tôi. Sau đó một phút sau khi khởi động, một tác vụ khác sẽ khôi phục quyền ghi trên Desktop.
Ở đây tôi đã chia sẻ một tập hợp các tệp XML mẫu cho Trình lập lịch tác vụ để thực hiện công việc.
Phiên bản này của tập lệnh vô hiệu hóa tính kế thừa
Tôi đã tìm thấy sự kế thừa quá khó hiểu do đó đã vô hiệu hóa nó cho thư mục Desktop. Bạn có thể thêm / thừa kế: e ở đâu đó trong tập lệnh thứ hai nếu bạn thực sự cần nó, nhưng lưu ý rằng việc vô hiệu hóa quá trình thừa kế, do đó việc thêm dòng đó sẽ không thay đổi mọi thứ trở lại vị trí trước đó. Máy tính để bàn không phải là một thư mục hệ thống, do đó nó không ảnh hưởng đến bạn.
Cái này là để vô hiệu hóa quyền ghi khi khởi động:
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.4" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Date>2018-01-09T18:21:14.9818893</Date>
<Author>spero_LAPTOP\spero</Author>
<URI>\Desktop Write Permission disable</URI>
</RegistrationInfo>
<Triggers>
<LogonTrigger>
<ExecutionTimeLimit>PT1M</ExecutionTimeLimit>
<Enabled>true</Enabled>
</LogonTrigger>
</Triggers>
<Principals>
<Principal id="Author">
<UserId>##################################</UserId>
<LogonType>Password</LogonType>
<RunLevel>HighestAvailable</RunLevel>
</Principal>
</Principals>
<Settings>
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
<AllowHardTerminate>true</AllowHardTerminate>
<StartWhenAvailable>false</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
<IdleSettings>
<StopOnIdleEnd>true</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>true</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
<UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>PT1M</ExecutionTimeLimit>
<Priority>7</Priority>
</Settings>
<Actions Context="Author">
<Exec>
<Command>ICACLS</Command>
<Arguments>"C:\Users\spero\Desktop" /inheritance:d /remove "SYSTEM"</Arguments>
</Exec>
<Exec>
<Command>ICACLS</Command>
<Arguments>"C:\Users\spero\Desktop" /remove "Administrators"</Arguments>
</Exec>
<Exec>
<Command>ICACLS</Command>
<Arguments>"C:\Users\spero\Desktop" /remove "spero"</Arguments>
</Exec>
<Exec>
<Command>ICACLS</Command>
<Arguments>"C:\Users\spero\Desktop" /grant "Administrators":(OI)(GR)</Arguments>
</Exec>
<Exec>
<Command>ICACLS</Command>
<Arguments>"C:\Users\spero\Desktop" /grant "spero":(OI)(GR)</Arguments>
</Exec>
</Actions>
</Task>
Cái này là để phục hồi sự cho phép một phút sau:
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.4" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Date>2018-01-09T18:19:03.2968461</Date>
<Author>spero_LAPTOP\spero</Author>
<URI>\Desktop Write Permission</URI>
</RegistrationInfo>
<Triggers>
<LogonTrigger>
<ExecutionTimeLimit>PT1M</ExecutionTimeLimit>
<Enabled>true</Enabled>
<Delay>PT1M</Delay>
</LogonTrigger>
</Triggers>
<Principals>
<Principal id="Author">
<UserId>######################################</UserId>
<LogonType>Password</LogonType>
<RunLevel>HighestAvailable</RunLevel>
</Principal>
</Principals>
<Settings>
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
<AllowHardTerminate>true</AllowHardTerminate>
<StartWhenAvailable>false</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
<IdleSettings>
<StopOnIdleEnd>true</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>true</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
<UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>PT1M</ExecutionTimeLimit>
<Priority>7</Priority>
</Settings>
<Actions Context="Author">
<Exec>
<Command>ICACLS</Command>
<Arguments>"C:\Users\spero\Desktop" /grant "Administrators":F</Arguments>
</Exec>
<Exec>
<Command>ICACLS</Command>
<Arguments>"C:\Users\spero\Desktop" /grant "spero":F</Arguments>
</Exec>
</Actions>
</Task>
Xin lưu ý rằng ổ đĩa khởi động của tôi là SSD, mặc dù không phải là rất nhanh. Thời gian có thể thay đổi tùy thuộc vào tốc độ khởi động hệ điều hành của bạn.
Ngoài ra, bạn không thể nhập các tập lệnh này trực tiếp vì sự hiện diện của các trường Tác giả và ID người dùng. Chỉ cần lưu ý tất cả các tham số.
UseDesktopIniCache=0
(từ trả lời tại superuser.com/a/650431/523828 ) không hoạt động trong Windows 10?