• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:レジストリの値獲得について)

レジストリの値獲得方法と注意点

このQ&Aのポイント
  • ExcelVBAを使用してレジストリの値を取得し、変数に代入する方法について説明します。
  • レジストリの階層をたどり、指定した名前の値を見つけてデータを取得します。
  • レジストリを操作する際には注意が必要であり、間違った操作でシステムに影響を与える可能性があるため、慎重に行ってください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#60992
noname#60992
回答No.2

読むだけでしたら、問題はないと思います。 下記2.が参考になると思います。 vb6で書かれていますが、もっていなければmodule1.basをノートパッドなどで開くことで、コードを見ることができると思います。 レジストリを読むのに必要な部分は、 Function GetReg の部分とそこで使われている三つのapi、 RegOpenKey,RegQueryValueEx,RegCloseKey です。 フォームのほうから GetReg関数を呼んでいてその引数は If GetReg(HKEY_CURRENT_USER, "Control Panel\desktop", "ScreenSaveActive") = 0 then となっています。 (自身→自信 失礼しました)

参考URL:
http://www.vbstation.net/sample/0217.htm
Yes_No_F
質問者

お礼

Excelにて成功しました。以下の様な感じになりました。 有り難うございます。 Option Explicit Public Const ERROR_SUCCESS = 0 Public Const HKEY_CURRENT_USER = &H80000001 Public Const KEY_QUERY_VALUE = &H1& Public Const REG_SZ = 1 Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, _ ByVal lpSubKey As String, ByVal ulOptions As Long, _ ByVal samDesired As Long, phkResult As Long) As Long Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" _ (ByVal hKey As Long, ByVal lpValueName As String, _ ByVal lpReserved As Long, lpType As Long, lpData As Any, _ lpcbData As Long) As Long Sub Sample() Dim lngKey As Long Dim strSubKey As String Dim lngResult As Long Dim strBuffer As String * 80 Dim strBinary As String Dim rc As Long lngKey = HKEY_CURRENT_USER strSubKey = "Software\Microsoft\Windows\CurrentVersion\Test" rc = RegOpenKeyEx(lngKey, strSubKey, 0&, KEY_QUERY_VALUE, lngResult) If rc <> ERROR_SUCCESS Then MsgBox "関数の呼び出しに失敗しました" Exit Sub End If strSubKey = "String" rc = RegQueryValueEx(lngResult, strSubKey, 0&, REG_SZ, ByVal strBuffer, Len(strBuffer)) '値の表示 MsgBox Left(strBuffer, InStr(strBuffer, vbNullChar) - 1) Call RegCloseKey(lngResult) End Sub

その他の回答 (1)

noname#60992
noname#60992
回答No.1

自身がないなら、値を読むだけにしておいたほうがよいと思います。

参考URL:
http://homepage1.nifty.com/MADIA/vb/Tecnick/VBREGISUTORY.htm
Yes_No_F
質問者

補足

早々の回答ありがとうございます。 今のところ、読むだけの処理しか考えていませんので、その場合は 致命傷に至る程の事にはならないと、解釈していいのでしょうか? 又、URLを参照しましたが、 HKEY_CURRENT_USER\Software\VB and VBA Progrm settings にしか参照できない様な記載になってますが、 その点は、質問に書いている様に 「HKEY_CURRENT_USER」→「Software」→「Autodesk」→「AutoCAD LT」 →「R2000」→「ACLT-1:411」→「FixedProfile」→「General」 (名前)P1、(種類)REG_SZ、(データ)1,1 の値を獲得したいと考えています。 API関数を使用とする方法とするようですが、その方法を教えて頂け ると助かります。

関連するQ&A