rkh*_*khj 2 registry vbscript search wsh jscript
有没有办法使用Windows Scripting Host在注册表中搜索特定密钥?
我正在使用JavaScript(Jscript/VBScript?)这样做,而msdn Library没有提到任何这样的方法:http://msdn.microsoft.com/en-us/library/2x3w20xf(v = VS.85 )的.aspx
谢谢,
所以这是对问题的更新:
这个问题比直接注册表搜索要复杂一些.我必须查看Windows框中已安装的产品,以查找我要删除的特定产品条目.注册表路径定义为:
HKEY_LOCAL_MACHINE\SOFTWARE \微软... \产品.
在Products键中,列出已安装的产品,但其键被定义为哈希码.产品密钥中包含具有已定义名称和定义值的其他密钥.我希望能够搜索后面的键和值.我怎么能这样做,绕过未知的哈希码?
例如,我需要找到DisplayVersion key = 1.0.0的产品.该密钥的路径是:
HKLM\SOFTWARE \微软\的Windows\CurrentVersion\Installer程序\的UserData \产品\ A949EBE4EED5FD113A0CB40EED7D0258\InstallProperties\DisplayVersion.
如何选择或避免写入产品密钥:A949EBE4EED5FD113A0CB40EED7D0258 ??
假设您通过Windows Scripting Host(而不是浏览器中的JavaScript)使用JScript,您可以使用以下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.');
Run Code Online (Sandbox Code Playgroud)
如果您确实需要根据某些条件而不是已知的注册表项搜索键或值,那么您可以实现自己的递归搜索算法,其中"REG_SZ"类型的注册表值是叶节点.
作为在Windows Scripting Host上更熟悉JScript的练习,我已经为注册表创建了一个小接口.项目中包含的示例显示了如何在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>
Run Code Online (Sandbox Code Playgroud)
请注意,正如@Robert Harvey指出的那样,如果根密钥连接太深,这可能需要很长时间.我选择的钥匙只需几秒即可完成简单测试,但您的里程可能会有所不同; 当然,没有保证或健身的目的,如果你的电脑爆炸,不要怪我.
| 归档时间: |
|
| 查看次数: |
4677 次 |
| 最近记录: |