[英]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下找到了它。 這是因為:
因此,然后,我為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.