Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1181420
  • 博文数量: 232
  • 博客积分: 7563
  • 博客等级: 少将
  • 技术积分: 1930
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-21 11:17
文章分类

全部博文(232)

文章存档

2011年(17)

2010年(90)

2009年(66)

2008年(59)

分类:

2010-06-12 11:40:25

今天在我的电脑的上单击右键中的一个快捷菜单“设备”时,出现“MMC 不能打开文件 %systemdrive%\WINDOWS\system32\devmgmt.msc”问题,于是google:
其中:
由于后缀名为MSC的文件实际上是XML格式的文件,它需要msxml parser程序的编译以便系统识别,因此出现此问题时,也可以尝试重新注册一下msxml parser看是否能解决问题,方法是:在"运行"对话框,运行"cmd"命令,然后再命令行中输入:

 regsvr32 %WINDIR%\system32\msxml3.dll

很多人都这么说,可是我的电脑上就不管用。



没办法,只有自己动手吧。搜了下注册表中关于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\devmgr 的数据类型是可扩展的字符串;而出错的时候是“字符串值”。

正确的HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\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的就行,只要对应出问题的项就行,这一步一定要在导入前修改)

服务(&F)改为设备(&Q)   (注:其实这个修改也可以在导入后进行)

保存,导入,再打开注册表,找到刚才导入的这一项数据类项就是我们想要的“可扩展的字符串”,而不是系统默认的数据类型了。然后我们修改后面的执行命令的路径(即command的值)为
%windir%\system32\mmc.exe /s %%SYSTEMDRIVE%%\WINDOWS\SYSTEM32\devmgmt.msc(在我这里不需要改...)

到这问题解决!!

阅读(13090) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~