Javascript 如何添加本身包含反斜杠的字符串注册表项?
我想使用Jscript在注册表中的Javascript 如何添加本身包含反斜杠的字符串注册表项?,javascript,registry,Javascript,Registry,我想使用Jscript在注册表中的AppCompatFlagsRegistryKey=“HKEY\U CURRENT\U USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\”添加一个条目。但是,我要添加的条目是一个REG_SZ,其名称本身带有反斜杠。 例如: name=“C:\Program Files\vendor\myPackage.exe”和Data=“RUNASADMIN” 使用时:WshShe
AppCompatFlagsRegistryKey=“HKEY\U CURRENT\U USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\”
添加一个条目。但是,我要添加的条目是一个REG_SZ
,其名称本身带有反斜杠。例如:
name=“C:\Program Files\vendor\myPackage.exe”
和Data=“RUNASADMIN”
使用时:
WshShell.RegWrite(AppCompatFlagsRegistryKey+名称、值、类型)代码>
结果是,只有名称的最后一部分(package.exe)被视为叶。我试过了
name=“\”+”C:\Program Files\vendor\myPackage.exe“+”\”
但这没有帮助。有什么建议吗?正确的方法是什么?你必须用\\
将每个\
用文字字符串转义,以避免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));
必须使用\\
以文本字符串形式转义每个\
,以避免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));
我很确定javascript不能处理注册表,如果我错了请纠正我…我不是在浏览器上运行这个。但作为来自命令行(addStuff ToRegistry.js)的Jscript,这是因为RegWrite无法正确理解最终字符串“HKEY\U CURRENT\U USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\C:\Program Files\vendor\myPackage.exe”中的结束键名和开始新值名。可能是RegWrite的限制我很确定javascript不能适应注册表,如果我错了请纠正我…我不是在浏览器上运行这个。但作为来自命令行(addStuff ToRegistry.js)的Jscript,这是因为RegWrite无法正确理解最终字符串“HKEY\U CURRENT\U USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\C:\Program Files\vendor\myPackage.exe”中的结束键名和开始新值名。可能是RegWriteThat的限制是正确的。我的两个反斜杠在将代码复制到浏览器中时丢失了,这篇文章是在写这篇文章时丢失的。因此,事实上我在所有字符串中都使用了双反斜杠。使用StdRegProv而不是dead更新亲爱的@Alex K。我想用您的方法执行以下批处理文件:REG添加“HKCU\Software\Google\Chrome\NativeMessagingHosts\com.Google.Chrome.example.echo”/ve/t REG_SZ/d”%~dp0com.Google.Chrome.example.echo win.json”/f
您能帮助我吗?%~dp0是包含此bat脚本的目录,以反斜杠结尾。我想为使用chrome在本地打开的页面添加一个使用javascript的注册表。可能吗?我在某个地方读到,由于安全问题,这是不可能的。在这种情况下,解决方案是什么?这是正确的。我的两个反斜杠在将代码复制到浏览器中时丢失了,这篇文章是在写这篇文章时丢失的。因此,事实上我在所有字符串中都使用了双反斜杠。使用StdRegProv而不是dead更新亲爱的@Alex K。我想用您的方法执行以下批处理文件:REG添加“HKCU\Software\Google\Chrome\NativeMessagingHosts\com.Google.Chrome.example.echo”/ve/t REG_SZ/d”%~dp0com.Google.Chrome.example.echo win.json”/f
您能帮助我吗?%~dp0是包含此bat脚本的目录,以反斜杠结尾。我想为使用chrome在本地打开的页面添加一个使用javascript的注册表。可能吗?我在某个地方读到,由于安全问题,这是不可能的。在这种情况下,解决方案是什么?