0

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: レジストリ キー "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDlls\C:\Program Files\Common Files\ACME Corp\AcmeUtil.dll" の無効なルート
4

1 に答える 1

1

問題はスラッシュにあります...ここで
説明されているように、代わりに 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 

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

于 2009-01-18T14:44:35.450 に答える