Как добавить строку реестра, содержащую обратную косую черту? - PullRequest
1 голос
/ 31 августа 2011

Я хочу добавить запись в реестр на AppCompatFlagsRegistryKey = "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\" с помощью Jscript.Однако запись, которую я хочу добавить, - это 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 Ответ

1 голос
/ 31 августа 2011

Вы должны экранировать каждые \ в буквальной строке с \\, чтобы js не воспринимал \<i>?</i> как escape-последовательность;

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

Edit:

Не похоже, что вы можете сделать это с 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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...