WshShell.RegReadを使用して名前がファイルパスであるレジストリ値を読み取る方法

StackOverflow https://stackoverflow.com/questions/454781

質問

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 

また:レジストリを管理するためのスクリプト

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top