Я работаю с хостингом Windows Script (JScript). И моя главная цель - узнать, существует ли ключ реестра. Я пытаюсь «RegRead» этот ключ, и если он выдает ошибку, то ключа не существует (так говорится в документации http://msdn.microsoft.com/en-us/library/x05fawxd(v=vs.84).aspx). Все отлично работает в Win7, но когда я тестирую свой код в WinXP, он терпит неудачу. Проблема в том, что когда вы пытаетесь использовать ключ RegRead, который не имеет значения по умолчанию, он выдает ошибку (только на WinXP, на Win7 все в порядке). И тем более отвратительным моментом является то, что числа ошибок равны при попытке прочитать не существующий ключ (сообщение об ошибке: недопустимый корень в разделе реестра «HKEY_CURRENT_USER \ Software \ NonExistKey \». Код ошибки: 80070002) и существующий ключ, который не имеет значения по умолчанию (Сообщение об ошибке: Не удается открыть раздел реестра «HKEY_CURRENT_USER \ Software \» для чтения. Код ошибки: 80070002). Да, сообщения об ошибках разные, но я не хочу сравнивать сообщения или использовать indexOf («invalid») или indexOf («невозможно»), чтобы отличать одну ошибку от другой, потому что в дефференциальных локалях Windows будут разные сообщения и слова. Это мой код samle. Просто создайте JS-файл с этим контентом и запустите его.Ошибка WshShell.RegRead при чтении ключа со значением по умолчанию не установлено (только WinXP)
var shell = new ActiveXObject('WScript.Shell');
try{
var valueKeyExist = shell.RegRead('HKEY_CURRENT_USER\\Software\\');
}catch(e2) {
WScript.Echo([e2.message, e2.number]);
}
if (e2 !== undefined) {
try{
var valueNonExistKey = shell.RegRead('HKEY_CURRENT_USER\\Software\\NonExistKey\\');
}catch(e1) {
WScript.Echo([e1.message, e1.number]);
}
WScript.Echo('Seems like you are running this script on WinXP and reading reg key with default value not set throws an error.\nError messages are equal: ' + (e1.message == e2.message) + '\nError numbers are equal: ' + (e1.number == e2.number));
} else {
WScript.Echo('Seems like you are running this script on Win7 and reading reg key with default value not set is ok');
}
Любые предложения по устранению этого или как я могу узнать, существует ли ключ реестра?