WshShell.RegReadを使用して名前がファイルパスであるレジストリ値を読み取る方法
質問
Windows Scripting Hostによって実行されるjavascriptを書いています。特定のDLLのレジストリから共有ファイルのカウントを読み取ることができる必要があります。レジストリキーと値は次のようになります。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDlls] "C:\\Program Files\\Common Files\\ACME Corp\\AcmeUtil.dll"=dword:00000002 "C:\\Program Files\\Common Files\\ACME Corp\\SuperEdit.ocx"=dword:00000001
WshShell.RegRead メソッドを使用してこれを行いますが、機能していないようです。問題は、このメソッドが取得する値の連結されたキーパスと値の名前である単一のパラメーターしか受け取らないことだと思います。この場合の値の名前はそれ自体がパスなので、メソッドはそれがキーの一部であると見なします。このメソッドに値の名前を認識させる方法はありますか?
問題を示すコードは次のとおりです。
var shell = WScript.CreateObject("WScript.Shell"); var keyPath = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\SharedDlls\\"; var valName = "C:\\Program Files\\Common Files\\ACME Corp\\AcmeUtil.dll"; WScript.Echo("count = " + shell.RegRead(keyPath + valName));
表示されるエラーは次のとおりです:
WshShell.RegRead: Invalid root in registry key "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDlls\C:\Program Files\Common Files\ACME Corp\AcmeUtil.dll"
解決
問題はスラッシュにあります...
こちらで説明されているように、代わりにWMIで読むことができます:
Const HKEY_CURRENT_USER = &H80000001
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
strKeyPath = "Software\ASoftware\ConfigList\MySettings"
strValueName = "xyz\abc"
oReg.GetStringValue HKEY_CURRENT_USER,strKeyPath,strValueName,strValue
wscript.echo strValue
所属していません StackOverflow