Предполагая, что вы используете JScript через Windows Scripting Host (а не JavaScript из браузера), вы можете получить значение определенного ключа, используя метод WScript.RegRead
:
// MyScript.js
var key = 'HKEY_CURRENT_USER\\SessionInformation\\ProgramCount'
, wsh = WScript.CreateObject('WScript.Shell')
, val = wsh.RegRead(key);
WScript.Echo('You are currently running ' + val + ' programs.');
Если вам действительно нужно искать ключ или значение на основе некоторых условий, а не известного ключа реестра, тогда вы можете реализовать свой собственный алгоритм рекурсивного поиска, где значения реестра типа "REG_SZ" являются конечными узлами.
В качестве упражнения для знакомства с JScript на Windows Scripting Host я создал небольшой интерфейс с реестром , который делает именно это. Пример, включенный в проект, показывает, как выполнить такой поиск в реестре в сценарии WSF:
<job id="FindDisplayVersions">
<script language="jscript" src="../registry.js"/>
<script language="jscript">
// Search the registry and gather 20 DisplayVersion values.
var reg = new Registry()
, rootKey = 'SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\S-1-5-18\\Products'
, keyRegex = /Products\\(.*?)\\InstallProperties\\DisplayVersion$/
, valRegex = /^1\./
, maxResults = 20
, uids = [];
reg.find(rootKey, function(path, value) {
var keyMatch = keyRegex.exec(path);
if (keyMatch) {
if (valRegex.exec(value)) {
uids.push(keyMatch[1] + '\t=\t' + value);
if (uids.length >= maxResults) { return false; } // Stop searching
}
}
return true; // Keep searching.
});
WScript.Echo(uids.join("\n"));
</script>
</job>
Обратите внимание, что, как указывает @Robert Harvey, это может занять очень много времени, если корневой ключ слишком глубоко связан. Простое тестирование занимает всего несколько секунд на ключ, который я выбрал, но ваш пробег может варьироваться; конечно, никаких гарантий или пригодности для какой-либо цели, не вините меня, если ваш компьютер взорвался.