2014-12-22 75 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」標籤問一個新問題。 –