2014-12-22 73 views
1

我目前使用下面的代码修改JavaScript中的注册表,从我的.hta安装程序文件中调用。WScript.Shell RegWrite在Windows 8.1上失败

var wsh = new ActiveXObject("WScript.Shell"); 
wsh.RegWrite("HKEY_LOCAL_MACHINE\\Software\\blah\\blah\\myKey", "0","REG_DWORD"); 

但是,在Windows 8.1上,此代码失败,出现Invalid root in registry key错误。

我研究了这个,它似乎由于缺乏权限而失败,我需要做些什么来确保此ActiveX调用正在使用提升的权限运行?

回答

1

您可以使用VBScript函数来测试用户是否具有权限,如下所示(我不认为这在JavaScript中是可行的,但这并不重要,因为Javascript可以使用在VBScript中声明的函数):

<script type="text/vbscript"> 
    Function test() 
      If CBool(IsNTAdmin) = True Then 
       test = true  'Returns true if the user has elevated permissions 
      Else 
       test = false  'Returns false if the user doesn't 
      End If 
    End Function 
</script> 
<script type="text/javascript"> 
    if(test()){ 
      var wsh = new ActiveXObject("WScript.Shell"); 
      wsh.RegWrite("HKEY_LOCAL_MACHINE\\Software\\blah\\blah\\myKey","0","REG_DWORD"); 
    } 
    else{ 
      alert("You don't have permission to do this!"); 
    } 
</script> 
+0

那么,我该如何使用该方法来根据需要升级权限呢? –

+1

你不能。在Windows上,您有两种类型的帐户:管理员和有限帐户。管理员已拥有所有权限,并且受限帐户具有有限权限,因为它的名称表示权限。如果您想升级权限,则需要使用管理员帐户并更改您的帐户类型。如果你不知道如何做到这一点,我建议你用“windows”标签问一个新问题。 –