अद्यतन स्क्रिप्ट। सत्यापित काम कर रहा है और अनुमति संवाद बॉक्स को ट्रिगर नहीं करता है।
विंडोज को Desktop.ini बनाने से रोकना संभव नहीं है क्योंकि यह वास्तव में विंडोज नहीं है जो यह कर रहा है। कुछ अन्य तृतीय-पक्ष सेवा उस फ़ाइल के निर्माण को ट्रिगर कर रही है, और स्पष्ट रूप से, Windows UseDesktopIniCache = 0 के बावजूद अनुमति देता है।
Desktop.ini मुझे पागल कर रहा था इसलिए मैं एक रागटैग समाधान के साथ आया। मैंने देखा कि बूट के बाद Desktop.ini फ़ाइल कुछ सेकंड में बन जाती है। मैंने उसका फायदा उठाया। टास्क शेड्यूलर का उपयोग करते हुए, मैं बूट पर डेस्कटॉप पर लिखने की अनुमति अस्थायी रूप से अक्षम करता हूं। यह मेरे डेस्कटॉप के साथ शीनिगन्स प्रदर्शन से तृतीय-पक्ष सेवाओं को रोकता है। फिर बूट करने के एक मिनट बाद, दूसरा कार्य डेस्कटॉप पर लिखने की अनुमति बहाल करता है।
यहां मैंने कार्य करने के लिए कार्य शेड्यूलर के लिए नमूना XML फ़ाइलों का एक सेट साझा किया है।
स्क्रिप्ट का यह संस्करण वंशानुक्रम अक्षम करता है
मैंने विरासत को बहुत भ्रामक पाया है इसलिए इसे डेस्कटॉप फ़ोल्डर के लिए अक्षम कर दिया है। आप दूसरी स्क्रिप्ट में कहीं और भी शामिल हो सकते हैं: यदि आपको वास्तव में इसकी आवश्यकता है, तो दूसरी लिपि में कहीं भी, लेकिन ध्यान दें कि वंशानुक्रम को एक हानिपूर्ण प्रक्रिया को अक्षम करना, इसलिए उस पंक्ति को जोड़ने से सब कुछ वापस नहीं बदल जाएगा जहां वे पहले थे। डेस्कटॉप एक सिस्टम फ़ोल्डर नहीं है, इसलिए यह आपको प्रभावित नहीं करना चाहिए।
यह बूट पर लिखने की अनुमति को अक्षम करने के लिए है:
<?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>
कृपया ध्यान दें कि मेरा बूट ड्राइव एक एसएसडी है, यद्यपि बहुत तेज नहीं है। आपके OS बूट कितनी तेजी से होते हैं, इसके आधार पर समय अलग-अलग हो सकता है।
इसके अलावा, आप इन स्क्रिप्ट्स को सीधे लेखक और उपयोगकर्ता आईडी फ़ील्ड्स की उपस्थिति के कारण आयात नहीं कर सकते। बस सभी मापदंडों पर ध्यान दें।
UseDesktopIniCache=0
( superuser.com/a/650431/523828 पर उत्तर से )