簡體   English   中英

在HTA文件中使用Javascript從Windows注冊表讀取/寫入

[英]Using Javascript in HTA file to read/write from Windows registry

我目前正在嘗試編寫Javascript,以便在HTA文件中從Windows注冊表讀取和寫入。 這是我正在編寫的當前代碼:

writeInRegistry = function (sRegEntry, sRegValue) {
    Regpath = "HKEY_LOCAL_MACHINE\\Software\\CompanyName\\CompanyValues\\" + sRegEntry;

    try {
        var oWSS = new ActiveXObject("WScript.Shell");

        oWSS.RegWrite(Regpath, sRegValue, "REG_DWORD");
        oWSS = null;


    } catch (e) {
        alert('Error trying to write "' + sRegValue + '" to registry entry "' + sRegEntry + '"');
    }
}

不幸的是,當我在regedit中檢查值時,它們保持不變。 我確保仔細檢查注冊表路徑是否與javascript中的完全相同。 它不會返回錯誤,所以我假設路徑是正確的。

我也嘗試嘗試

var oWSS = WScript.CreateObject("WScript.Shell");

如此msdn頁中所述,而不是

var oWSS = new ActiveXObject("WScript.Shell");

但這給我帶來了更多問題。

任何幫助表示贊賞! 謝謝!

我根據您的代碼編寫了一個示例HTA HTML應用程序,其中包括函數writeinRegistry()和readFromRegistry()函數。 它將一個值寫入注冊表並檢索到它。 問題是它放在哪里。 搜索注冊表后,我在HKEY_CURRENT_USER \\ VirtualStore \\ MACHINE \\ SOFTWARE \\ Wow6432None \\ CompanyName \\ CompanyValues下找到了它。 這是因為:

  • 我在64位Windows 7計算機上運行此程序,但執行了32位版本的MSHTA.exe(默認)
  • 我以沒有提升權限的普通用戶身份運行

因此,然后,我為C:\\ Windows \\ System32 \\ MSHTA.exe TheNameOfMyScript.hta創建了Windows快捷方式。 為確保我運行的是64位版本,然后執行帶有高程的快捷方式(以管理員身份運行快捷方式)。 完成此操作后,HKLM分支下的注冊表項將更新。

<html>
<head>
<title>RegTest</title>
<script language="JavaScript">
function writeInRegistry(sRegEntry, sRegValue)
{
  var regpath = "HKEY_LOCAL_MACHINE\\Software\\CompanyName\\CompanyValues\\" + sRegEntry;
  var oWSS = new ActiveXObject("WScript.Shell");
  oWSS.RegWrite(regpath, sRegValue, "REG_DWORD");
}

function readFromRegistry(sRegEntry)
{
  var regpath = "HKEY_LOCAL_MACHINE\\Software\\CompanyName\\CompanyValues\\" + sRegEntry;
  var oWSS = new ActiveXObject("WScript.Shell");
  return oWSS.RegRead(regpath);
}

function tst()
{
  writeInRegistry("Version", "101");
  alert(readFromRegistry("Version"));
}
</script>
</head>
<body>
Click here to run test: <input type="button" value="Run" onclick="tst()"
</body>
</html>

我發現在regedit.exe打開/運行時更新代碼中的注冊表項時,在代碼運行后按F5進入regedit刷新它是一個好主意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM