msconfig.exe禁用自启动项
msconfig.exe禁用自启动项的时候,都是先删除注册表自启动目录下的相应的项,比如TIM,在msconfig禁用了之后,msconfig会删除"HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run"目录下的"TIM"项,然后在"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg"下生成"TIM"目录。
因此,如果你需要代码恢复自启动项需要先自己重新添加自启动项到"HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run"目录下,并且将"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg"下生成的"TIM"目录删除,后面的删除步骤可以不做,但是会让msconfig的启动中残留一个被禁止的自启动项
PS:在64位系统删除"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg\TIM"的时候要注意,如果你是用的是SHDeleteKey函数去删除的话,写成以下形式:
HKEY hKey;
RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"", 0, KEY_ENUMERATE_SUB_KEYS | DELETE | KEY_WOW64_64KEY, &hKey);
DWORD res = SHDeleteKey(hKey, L"SOFTWARE\\Microsoft\\Shared Tools\\MSConfig\\services\\EPolSDAgent");
因为64微系统默认的打开的是"SOFTWARE\\Wow6432Node\\Microsoft\\Shared Tools\\MSConfig\\services\\EPolSDAgent"
msconfig.exe禁用服务
msconfig.exe禁用VMTools服务的时候,会直接在"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\services"下生成"VMTools"目录,但是并不会删除注册表的服务的信息
因此,如果你需要代码恢复被禁用的服务,直接将"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\services"下生成的"VMTools"目录删除,必须这么做,不然无法解除禁用,删除方法同上。
备注
以上的方法都在win7x64位的系统上实验的,其余系统的情况如下(只测试过以下系统):
禁用自启动项:win7和winxp都是一样的,win10原理不明,如果有人知道,希望能够留言告知一下。
禁用服务:win7和win10都是一样的,winxp比较特别,不再是在"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\services"下生成"VMTools"目录,而是在"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\services"下生成"VMTools"的子健,恢复方法与win7类似
64位系统和32位系统差异不大,或者说暂时没遇到差异,有问题到时候指出一下
原文地址:https://blog.csdn.net/a854500070/article/details/84403143
请勿随意转载