Mike,
谢谢回复!
由于wmic命令确实在21H1后有所改动,因此可能会出现不同以往的情况发生...
那极可能正是 导致21H2系统一启动就总自动生成Recovery文件夹 的原因所在。
AutoReboot、SendAdminAlert、WriteDebugInfo、WriteToSystemLog 这四个的值都要为 False,
即:运行如下四条命令进行设置之后,都 False 成功地站住了脚,系统才不会每每生成Recovery文件夹~
wmic recoveros set AutoReboot = False
wmic recoveros set SendAdminAlert = False
wmic recoveros set WriteDebugInfo = False
wmic recoveros set WriteToSystemLog = False
看来极有可能是微软开发团队在21H2改动了wmic命令相关程式 (尚需调整或有待改进呢),
于是便导致了将WriteDebugInfo设置为False后却站不住脚,
进而又导致了系统每每自动生成Recovery…
这样子情状,就不是我们普通用户所能左右的了…
我忽地想到了个暂时性的法子~
做一个如下的XML文件:
RmvCRootFdrs.xml
<Date>2021-12-01T12:12:12</Date>
<Author>Builtin\Administrators</Author>
<Description>Delete C:\Recovery folder.</Description>
<URI>\RmvCRootFdrs</URI>
<BootTrigger>
<Enabled>true</Enabled>
</BootTrigger>
<LogonTrigger>
<Enabled>true</Enabled>
</LogonTrigger>
<Principal id="Author">
<UserId>NT Authority\System</UserId>
<RunLevel>HighestAvailable</RunLevel>
</Principal>
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>
<AllowHardTerminate>false</AllowHardTerminate>
<StartWhenAvailable>false</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
<IdleSettings>
<StopOnIdleEnd>false</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>false</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
<UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>PT0S</ExecutionTimeLimit>
<Priority>7</Priority>
<Exec>
<Command>D:\Software\Settings\MoveRootFdrs\RmvCRootFdrs.bat</Command>
</Exec>
该 RmvCRootFdrs.xml 文件用于向 Task Scheduler 中导入可删除掉C:\Recovery文件夹的任务。
再做一个如下的批处理文件:
SchDelRmvCRootFdrs.bat
schtasks /delete /tn "\RmvCRootFdrs" /f
该 SchDelRmvCRootFdrs.bat 批处理文件暂时还用不上,是要待21H2改进之后(即改好了而令C:\Recovery不再自动生成之后),再去运行它以删除RmvCRootFdrs这个任务。
再做一个如下的批处理文件:
SchAddRmvCRootFdrs.bat
schtasks /create /tn "\RmvCRootFdrs" /xml "D:\Software\Settings\MoveRootFdrs\RmvCRootFdrs.xml" /f
该 SchAddRmvCRootFdrs.bat 批处理文件用以向 Task Scheduler 加入RmvCRootFdrs任务。
再做一个如下的批处理文件:
RmvCRootFdrs.bat
if exist "C:\EFI" (
robocopy "C:\EFI" "C:\Windows\EFI" /E /COPYALL /XJ
takeown /F "C:\EFI" /R /A /D Y
icacls "C:\EFI" /grant Administrators:F /T /C
rd /s /q "C:\EFI"
)
if exist "C:\PerfLogs" (
robocopy "C:\PerfLogs" "C:\Windows\PerfLogs" /E /COPYALL /XJ
takeown /F "C:\PerfLogs" /R /A /D Y
icacls "C:\PerfLogs" /grant Administrators:F /T /C
rd /s /q "C:\PerfLogs"
)
bcdedit /set {current} recoveryenabled No
wmic recoveros set AutoReboot = False
wmic recoveros set SendAdminAlert = False
wmic recoveros set WriteDebugInfo = False
wmic recoveros set WriteToSystemLog = False
if exist "C:\Recovery" (
takeown /F "C:\Recovery" /R /A /D Y
icacls "C:\Recovery" /grant Administrators:F /T /C
rd /s /q "C:\Recovery"
)
该 RmvCRootFdrs.bat 批处理文件用以删除C:\Recovery文件夹。
将 RmvCRootFdrs.xml、SchDelRmvCRootFdrs.bat、SchAddRmvCRootFdrs.bat、RmvCRootFdrs.bat 都保存在同一个文件夹内,我是都存放到了 D:\Software\Settings\MoveRootFdrs\ 这个路径之下 (如果想要放置到其它路径下,需要将上述四个文件里边的该路径,都替换成想要的路径,即可) 。
滑鼠右击 SchAddRmvCRootFdrs.bat 批处理文件,再点击弹出的快捷菜单中 “Run as administrator”,
然后会弹出 User Account Control 对话框窗口,点击其中的 [Yes] 按钮,
然后弹出了 Command Prompt 窗口,来运行该批处理文件,以将RmvCRootFdrs任务加载到Task Scheduler中去。
这样每次系统启动或重启时,或每有用户登录时,就会触发Task Scheduler中的RmvCRootFdrs任务开始执行,以运行RmvCRootFdrs.bat批处理来删掉C:\Recovery文件夹。
该临时法子,很笨拙,我自个都不甚满意…
有待于请微软进一步改进21H2系统啦,
其他高人若有更佳解决方案,在下愿洗耳恭听,请不吝赐教!
谢谢Mike!谢谢坛上高者诸君!