MMC 不能打开文件 C:\WINDOWS\system32\devmgmt.msc
【原创,转载请注明。看到这么多朋友关心这个问题,于是我便把这篇文章重新整理下,使其容易被理解2009.03.27】
在“我的电脑”的右键中的一个快捷菜单“设备管理器”,某些时候它出错,至于为何出错,我也不记得了,没法重现。
由于后缀名为MSC的文件实际上是XML格式的文件,它需要msxml parser程序的编译以便系统识别,因此出现此问题时,也可以尝试重新注册一下msxml parser看是否能解决问题,方法是:在“运行”对话框
中输入
regsvr32 %WINDIR%\system32\msxml3.dll
很多人都这么说。可是我的计算机上就不管用。我的计算机上好像是
“MMC 不能打开文件 %systemdrive%\WINDOWS\system32\devmgmt.msc”
迫不得已,自己动手吧。搜了下注册表中关于devmgmt.msc的项,不过就两三个。找找看,应当是下面这个了。
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}]
@="我的电脑"
这个便是“我的电脑”的右键菜单的注册表设置项。我看了看devmgmt.msc的相关项,不仔细看还真看不出来毛病在哪里。在“我的电脑”右键中还有一个“服务(管理器)”,这个没有出错,和“硬件管理器”的原理是一样的(注:在安装原版操作系统的计算机上,如果不自定义,在“我的电脑”右键上是只有一个“管理”的)。
对比下右键中正确的“服务”(或者其它正确的右键菜单,“搜索”“管理”)和错误的“设备管理器”。
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\services]
@="服务(&F)"
正确的HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\devmgr 的数据类型是可扩展的字符串REG_EXPAND_SZ;出错的时候是字符串值REG_SZ
正确的shell\devmgr \command的数据类型是可扩展的字符串。并且命令是
%windir%\system32\mmc.exe /s %%SYSTEMDRIVE%%\WINDOWS\SYSTEM32\devmgmt.msc
出错的是“mmc.exe %%SYSTEMDRIVE%%\WINDOWS\SYSTEM32\devmgmt.msc”
以上找到了问题所在,下面说说我的解决方法。
先说一个很重要的问题:在注册表中新建一个项的时候,会默认一个字符串的值,用系统自带的regedit没法给这个默认的改为其他类型的,而我们需要这个值是可扩展的字符串。
手动解决的步骤:导出
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\services 这个正常的项,然后用记事本编辑。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\services]
@="服务(&F)"
"SuppressionPolicy"=dword:4000003c
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\services\command]
@=hex(2):25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,73,00,79,00,73,\
00,74,00,65,00,6d,00,33,00,32,00,5c,00,6d,00,6d,00,63,00,2e,00,65,00,78,00,\
65,00,20,00,2f,00,73,00,20,00,25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,\
00,6f,00,6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,\
32,00,5c,00,73,00,65,00,72,00,76,00,69,00,63,00,65,00,73,00,2e,00,6d,00,73,\
00,63,00,20,00,2f,00,73,00,00,00
把services改为devmgr 【说明:其实改为其他任意不是services的就行,这一步一定要在导入前修改,因为导出的是services,再导入一个services,倒来倒去多没劲】
把服务(&F)改为设备(w) 【说明:其实这个修改也可以在导入后进行】
保存,导入,再打开注册表,找到刚才导入的这一项,数据类型就是我们想要的“可扩展的字符串”,而不是系统默认的数据类型字符串了。然后我们修改后面的执行命令的路径(即command的值)为
%windir%\system32\mmc.exe /s %%SYSTEMDRIVE%%\WINDOWS\SYSTEM32\devmgmt.msc
至此,大功告成
事后我找到一款软件Registrar Registry Manager_5.01。目前这个软件到了5.66可是最新版没有破解版,也没有汉化版。这个软件可以修改默认值的数据类型。
—————————————————————————————————————————————
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell]
@="none"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\DevMgr]
@=hex(2):be,8b,07,59,28,00,26,00,57,00,29,00,00,00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\DevMgr\command]
@=hex(2):25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,73,00,79,00,73,\
00,74,00,65,00,6d,00,33,00,32,00,5c,00,6d,00,6d,00,63,00,2e,00,65,00,78,00,\
65,00,20,00,2f,00,73,00,20,00,25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,\
00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,64,00,65,00,\
76,00,6d,00,67,00,6d,00,74,00,2e,00,6d,00,73,00,63,00,00,00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\find]
@=hex(2):40,00,25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,\
00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,53,00,\
48,00,45,00,4c,00,4c,00,33,00,32,00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,38,\
00,35,00,30,00,33,00,00,00
"SuppressionPolicy"=dword:00000080
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\find\command]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,45,00,78,00,70,00,6c,00,6f,00,72,00,65,00,72,00,2e,00,65,00,78,00,\
65,00,00,00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\find\ddeexec]
@="[FindFolder(\"%l\", %I)]"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\find\ddeexec\application]
@="Folders"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\find\ddeexec\topic]
@="AppProperties"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Manage]
@=hex(2):40,00,25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,73,00,79,\
00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,6d,00,79,00,63,00,6f,00,6d,00,\
70,00,75,00,74,00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,34,00,30,00,30,00,00,\
00
"SuppressionPolicy"=dword:4000003c
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Manage\command]
@=hex(2):25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,73,00,79,00,73,\
00,74,00,65,00,6d,00,33,00,32,00,5c,00,6d,00,6d,00,63,00,2e,00,65,00,78,00,\
65,00,20,00,2f,00,73,00,20,00,25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,\
00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,63,00,6f,00,\
6d,00,70,00,6d,00,67,00,6d,00,74,00,2e,00,6d,00,73,00,63,00,00,00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\services]
@="服务(&F)"
"SuppressionPolicy"=dword:4000003c
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\services\command]
@=hex(2):25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,73,00,79,00,73,\
00,74,00,65,00,6d,00,33,00,32,00,5c,00,6d,00,6d,00,63,00,2e,00,65,00,78,00,\
65,00,20,00,2f,00,73,00,20,00,25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,\
00,6f,00,6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,\
32,00,5c,00,73,00,65,00,72,00,76,00,69,00,63,00,65,00,73,00,2e,00,6d,00,73,\
00,63,00,20,00,2f,00,73,00,00,00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\控制]
@="控制(&C)"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\控制\command]
@="rundll32.exe shell32.dll,Control_RunDLL"
——————————————————————————————————————————————————
如果觉得我说的乱,就把上面横线中的内容保存为reg文件,双击导入就行了。会在“我的电脑”右键中增加“设备,搜索,服务,管理,控制”。主要是在这个百度空间中配图太麻烦了,所以我力图用文字说明白。