สคริปต์ที่อัปเดต ตรวจสอบการทำงานและไม่เรียกใช้กล่องโต้ตอบการอนุญาต
เป็นไปไม่ได้ที่จะป้องกันไม่ให้ Windows สร้าง desktop.ini เนื่องจากไม่ใช่ Windows ที่ใช้งานจริง บริการบุคคลที่สามอื่น ๆ กำลังเรียกใช้การสร้างไฟล์นั้นและชัดเจนว่า Windows อนุญาตให้ใช้งานได้ทั้งๆที่ UseDesktopIniCache = 0
Desktop.ini ทำให้ฉันเสียสติดังนั้นฉันจึงคิดวิธีแก้ปัญหา ragtag ฉันสังเกตว่าไฟล์ desktop.ini ถูกสร้างขึ้นไม่กี่วินาทีหลังจากบูต ฉันใช้ประโยชน์จากสิ่งนั้น ใช้ Task Scheduler ฉันปิดการใช้งานการอนุญาตเขียนบน Desktop ชั่วคราวเมื่อบูต นั่นทำให้บริการของบุคคลที่สามไม่สามารถทำงานกับ shenanigans ได้ด้วยเดสก์ท็อปของฉัน จากนั้นหนึ่งนาทีหลังจากบูตอีกงานหนึ่งจะอนุญาตการเขียนบนเดสก์ท็อปอีกครั้ง
ที่นี่ฉันได้แชร์ชุดของไฟล์ XML ตัวอย่างสำหรับ Task Scheduler เพื่อทำงาน
สคริปต์เวอร์ชันนี้ปิดใช้งานการสืบทอด
ฉันพบว่าการสืบทอดมีความสับสนเกินไปดังนั้นจึงปิดการใช้งานสำหรับโฟลเดอร์เดสก์ท็อป คุณอาจเพิ่ม / การสืบทอด: บางที่ในสคริปต์ที่สองหากคุณต้องการจริงๆ แต่โปรดทราบว่าการปิดใช้งานการสืบทอดกระบวนการสูญเสียการสืบทอดดังนั้นการเพิ่มบรรทัดนั้นจะไม่เปลี่ยนทุกสิ่งกลับไปเหมือนเดิม เดสก์ท็อปไม่ใช่โฟลเดอร์ระบบดังนั้นจึงไม่ควรส่งผลกระทบต่อคุณ
อันนี้สำหรับการปิดการใช้งานเขียนอนุญาตในการบูต:
<?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>
อันนี้สำหรับการเริ่มต้นสิทธิ์อีกครั้งในภายหลัง:
<?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>
โปรดทราบว่าไดรฟ์สำหรับบูตของฉันเป็น SSD แม้ว่าจะไม่ใช่ไดรฟ์ที่เร็วมาก การกำหนดเวลาอาจแตกต่างกันไปขึ้นอยู่กับความเร็วของระบบปฏิบัติการของคุณ
นอกจากนี้คุณไม่สามารถนำเข้าสคริปต์เหล่านี้โดยตรงเนื่องจากการมีอยู่ของเขตข้อมูลผู้แต่งและ ID ผู้ใช้ เพียงจดบันทึกพารามิเตอร์ทั้งหมด
UseDesktopIniCache=0
(จากการตอบกลับที่superuser.com/a/650431/523828 ) ไม่ทำงานใน Windows 10?