如何添加包含反斜杠的字符串注册表项?

时间:2011-08-31 12:54:07

标签: javascript registry

我想使用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" + "\"

但这没有用。有什么建议是正确的方法吗?

1 个答案:

答案 0 :(得分: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));