掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
APIでレジストリに書き込むには? (ID:79463)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
度々で申し訳有りません。 モジュールにして使用しています。以下のコードがそれです。 矢張り、環境によるものでしょうか? Private 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 Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, ByVal lpData As Any, lpcbData As Long) As Long ' Note that if you declare the lpData parameter as String, you must pass it By Value. Private Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As Long, phkResult As Long, lpdwDisposition As Long) As Long Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal lpData As Any, ByVal cbData As Long) As Long ' Note that if you declare the lpData parameter as String, you must pass it By Value. Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long Private Const STANDARD_RIGHTS_ALL = &H1F0000 Private Const KEY_QUERY_VALUE = &H1 Private Const KEY_ENUMERATE_SUB_KEYS = &H8 Private Const KEY_NOTIFY = &H10 Private Const KEY_CREATE_SUB_KEY = &H4 Private Const KEY_CREATE_LINK = &H20 Private Const KEY_SET_VALUE = &H2 Private Const SYNCHRONIZE = &H100000 Private Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE)) Public Const HKEY_CLASSES_ROOT = &H80000000 Public Const HKEY_CURRENT_USER = &H80000001 Public Const HKEY_CURRENT_CONFIG = &H80000005 Public Const HKEY_DYN_DATA = &H80000006 Public Const HKEY_LOCAL_MACHINE = &H80000002 Public Const HKEY_USERS = &H80000003 Private Const ERROR_SUCCESS = 0& Private Const REG_SZ = 1 ' Unicode nul terminated string '************************************************** '* 関数名 : GetRegKey '* 引 数 : lngRootKey ルートキー '* strSubKey サブキー '* strValueName 値名 '* 戻り値 : 取得した文字列 '************************************************** Public Function GetRegKey(ByVal lngRootKey As Long, ByVal strSubkey As String, _ ByVal strValueName As String) As String Dim lngRet As Long '戻り値 Dim lngHnd As Long Dim strValue As String '取得文字列 Dim lngLength As Long '文字長 'キーをオープンしてハンドルを得る lngRet = RegOpenKeyEx(lngRootKey, strSubkey, 0&, KEY_ALL_ACCESS, lngHnd) 'バッファを確保する strValue = String$(250, Chr$(0)) lngLength = Len(strValue) '値を得る lngRet = RegQueryValueEx(lngHnd, strValueName, 0&, 0&, strValue, lngLength) If lngRet = ERROR_SUCCESS Then GetRegKey = strValue End If 'ハンドルを閉じる Call RegCloseKey(lngHnd) End Function '************************************************** '* 関数名 : SetRegKey '* 引 数 : lngRootKey ルートキー '* strSubKey サブキー '* strValueName 値名 '* strSetValue 値 '* 戻り値 : True 正常 '* False 異常 '************************************************** Public Function SetRegKey(ByVal lngRootKey As Long, ByVal strSubkey As String, _ ByVal strValueName As String, ByVal strSetValue As String) As Boolean Dim lngRet As Long '戻り値 Dim lngHnd As Long Dim lngDisp As Long Dim lngResult As Long Dim lngLength As Long '文字長 lngLength = Len(strSetValue) 'キーを作成する lngRet = RegCreateKeyEx(lngRootKey, strSubkey, 0&, vbNullString, 0&, KEY_ALL_ACCESS, 0&, lngResult, lngDisp) 'キーをオープンしてハンドルを得る lngRet = RegOpenKeyEx(lngRootKey, strSubkey, 0&, KEY_ALL_ACCESS, lngHnd) '値を書き込む lngRet = RegSetValueEx(lngHnd, strValueName, 0&, REG_SZ, strSetValue, lngLength) 'ハンドルを閉じる Call RegCloseKey(lngHnd) If lngRet = ERROR_SUCCESS Then SetRegKey = True Else SetRegKey = False End If End Function '************************************************** '* 関数名 : DeleteRegKey '* 引 数 : lngRootKey ルートキー '* strSubKey サブキー(省略可) '* 戻り値 : 0 正常 '* 0以外 異常 '************************************************** Public Function DeleteRegKey(ByVal lngRootKey As Long, Optional ByVal strSubkey As String = "") 'レジストリを削除する DeleteRegKey = RegDeleteKey(lngRootKey, strSubkey) End Function
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.