- 締切済み
RegQueryValueExでエントリ名にNullを指定するとエラー
拡張子から、登録されているアプリケーションを探すために、レジストリを見ようとしています。 \HKEY_CLASSES_ROOT\<.拡張子> の中の、(標準)エントリの値を探し、 \HKEY_CLASSES_ROOT\探した名前\shell\open\command の中の、(標準)エントリで目的とするアプリケーションを見つけられるところまでは判ったのですが、 この最初のエントリ値を求めるところでつまづいています。 下記のような処理で、RegQueryValueExのところで必ずアプリケーションエラーが出てしまいます。 Dim tmpRet As Long Dim tmpKey As Long Dim tmpBuf As String Dim tmpBufLen As Long tmpRet = RegOpenKeyEx(HKEY_CLASSES_ROOT, ".txt", 0&, KEY_ALL_ACCESS, tmpKey) tmpBuf = String$(256, " ") tmpBufLen = 256 tmpRet = RegQueryValueEx(tmpKey, vbNullString, 0&, 0&, tmpBuf, tmpBufLen) tmpBuf = Left$(tmpBuf, tmpBufLen - 1) MsgBox ("データ値:" & tmpBuf)
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
最初のオープンした所と探すキーの場所が違うような気がします。 WScript.Shellオブジェクトを使うともっと手軽にできます。 例 Dim WshShell, exp, aKey, fkind, soft Set WshShell = CreateObject("WScript.Shell") exp=".txt" aKey= "HKEY_CLASSES_ROOT\" & exp & "\" fkind = WshShell.RegRead(aKey) aKey= "HKEY_CLASSES_ROOT\" & fkind & "\shell\open\command\" soft = WshShell.RegRead(aKey) MsgBox "データ値:" & soft
お礼
ありがとうございます。 エラーの原因はわからずじまいですが、 WScript.Shellを使うやりかたで無事、実行ファイルを取得することができました。