我的机器的注册表被锁了,在网上也很有关解锁的方法,
但都无效。最后还是想通过用API修改或删除
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
下面的"DisableRegistryTools"的值来解除注册表被锁的问题。
众所周知:"DisableRegistryTools"=0 时,解锁
          "DisableRegistryTools"=1 时,被锁
***************************************************************
以下是修改键值"DisableRegistryTools"=0
注:API及常数声明省略
***************************************************************
Private Sub Form_Load()
  Dim skey As String
  Dim result
  Dim hKeyID
  skey = "DisableRegistryTools"
  result = RegOpenKey(HKEY_CURRENT_USER, _
       "Software\icrosoft\indows\urrentVersion\olicies\system", hKeyID)
  If result = 0 Then
      result = RegSetValueEx(hKeyID, skey, 0&, REG_DWORD, 0, 255)
  End If
  result = RegCloseKey(hKeyID)
End Sub
问题:1.在注册表中显示DisableRegistryTools的值为"不正确的dword值"
      2.在调用RegSetValueEx时,我的机器上运行出错,他人机器上运行ok
*************************************************************************
以下是删除键"DisableRegistryTools",
(删除项system也可解锁)
*************************************************************************
Private Sub Form_Load()
  Dim skey As String
  Dim result
  Dim hKeyID
  skey = "DisableRegistryTools"
  result = RegOpenKey(HKEY_CURRENT_USER, _
       "Software\Microsoft\Windows\CurrentVersion\Policies\system", hKeyID)
  If result = 0 Then
        result = RegDeleteValue(hKeyID, skey)
  End If
  result = RegCloseKey(hKeyID)
End Sub
问题:3.调用RegDeleteValue时,在我的机器上运行出错,在他人机器上运行ok说明:系统都是windows2k

解决方案 »

  1.   

    将以下代码粘到记事本中,以 .vbs 扩展名保存。然后双击执行:Dim WSHShell
    Set WSHShell = WScript.CreateObject("WScript.Shell")
    WSHShell.RegWrite ""HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools", 0, 2
      

  2.   

    你的代码中又中文字符。Dim WSHShell
    Set WSHShell = WScript.CreateObject("WScript.Shell")
    WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools", 0, 2
      

  3.   

    你用的是vb 脚本代码解锁吧,
    我的代码中没有中文代码吧,在我的机器上运行出错而别的机器上ok不知道是
    什么原因,是不是系统被人设置过,禁止非管理员对注册表作任何修改呢,即
    使是调用API?
      

  4.   

    以下代码运行错误:
    错误提示为:行:       3
                字符:     1
                错误:     无效的过程调用或参数
                代码:     800A0005Dim WSHShell
    Set WSHShell = WScript.CreateObject("WScript.Shell")
    WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools", 0, 2
      

  5.   

    不要總是說在你的電腦上出錯,在他人電腦上運行OK
    你要把你出錯的信息貼出來是不是你的注冊表禁止運行.REG文件,禁止開始菜單中的“運行”菜單...
      

  6.   

    程序有没有被执行,或者你根本不能运行Regedit.EXE
    只要你打开Regedit.EXE,然后手动试一试.
      

  7.   

    regedit.exe当然是打不开的,因为提示“注册表被管理员禁用”。
    开始菜单的运行当然也是被隐藏的,ms-dos也是被禁用的。其他
    机器也是一样。.reg文件可以运行。运行菜单隐藏,可用批处理文件(***.bat)代替运行菜单的操作。出错信息是:调用result = RegDeleteValue(hKeyID, skey)时,
    result的返回值不等于0。我目前的考虑是:注册表信息可以打开,但不可以写,因为:
    result = RegOpenKey(HKEY_CURRENT_USER, _
           "Software\icrosoft\indows\urrentVersion\olicies\system", hKeyID)
    的返回值为0
    如果是这样的话,那么又如何让注册表可以写呢?Dickson(沧海冷心):直接SHELL函数调用REG命令
    否具体一点? 
    REGEDIT4[HKEY_CURRENT_USER\oftware\icrosoft\indows\urrentVersion\olicies\ystem]
    "DisableRegistryTools"=dword:0000000
    这种方法不行,提示是注册表信息添加成功,但实际上是失败的,
    因为打开注册表时,仍然提示“注册表被管理员禁用”。谢谢!
      

  8.   

    我是有親身經歷的,被鎖的感覺確實不好受
      LZ你去...\Winnt\System32下找到RegEdt32.exe這個文件,雙擊運行,如果此文件被禁止運行的話,你就更名為沒被禁止的文件名,如記事本NOTEPAD.exe
    運行後即可打開注冊表內容,直接在裡面修改就OK了
      

  9.   

    谢谢试过了,但改名后出现这种状况:
    原文件regedt32.exe仍然存在,多了一副本被改名了,
    运行被改名的文件后仍然提示“注册表被管理员禁用”