2011-08-31 49 views
1

我想通過使用Jscript在AppCompatFlagsRegistryKey = "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\"的註冊表中添加一個條目。但是,我想添加的條目是REG_SZ,它本身帶有反斜槓。
例如: name = "C:\Program Files\vendor\myPackage.exe"Data = "RUNASADMIN"
當我使用:WshShell.RegWrite(AppCompatFlagsRegistryKey + name, value, type);如何添加包含反斜槓本身的字符串註冊表項?

結果是隻有名稱的最後一部分(package.exe)被視爲葉。我試圖

name = "\" + "C:\Program Files\vendor\myPackage.exe" + "\"

但這並不能幫助。任何建議什麼是這樣做的正確方法?

+0

我敢肯定JavaScript不能發脾氣與註冊表,糾正我,如果我錯了... –

+0

我不是從瀏覽器運行此。但作爲命令行中的Jscript(addStufftoRegistry.js) – user921608

+0

這是因爲RegWrite在最終字符串「HKEY_CURRENT_USER \ Software \ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ Layers \ C:\ Program Files \ vendor \ myPackage中無法正確理解.exe「結尾的KeyName和開始新的ValueName。可能的是RegWrite –

回答

1

爲避免js將\?當作轉義序列,您必須以\\的字符串每隔\轉義;

name = "C:\\Program Files\\vendor\\myPackage.exe"; 

編輯:

似乎不喜歡你可以做到這一點RegWrite,這裏是WMI方式:

var AppCompatFlagsRegistryKey = "Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers"; 
var name = "C:\\Program Files\\vendor\\myPackage.exe"; 
var Data = "RUNASADMIN"; 
var result; 
var objRegistry = GetObject("winmgmts://./root/default:StdRegProv"); 

try { 
    result = objRegistry.SetStringValue(0x80000001 /*HKCU*/, AppCompatFlagsRegistryKey, name, Data); 
} catch (e) { 
    alert(e.message); 
    result = 0; 
} 
alert("success: " + (result == 0)); 
+0

的限制。這是正確的。在製作這篇文章時,我的雙反斜槓在複製代碼到瀏覽器時丟失了。所以實際上我在所有的字符串中使用雙反斜槓。 – user921608

+0

更新使用StdRegProv而不是 –

+0

謝謝!該工作 – user921608

相關問題