81.レジストリのキーを作成する。
< 使用用途 >
レジストリのキーを作成する
今回のサンプルソースをダウンロードする方は下記の「ダウンロード」を!
=> ダウンロード ・・・下記のサンプルと同じです。
< 説明 >
API関数の RegCreateKeyEx を使用します
RegCreateKeyEx =>レジストリのキーを作成または既存のキーを開く
<引数>
'hKey:Rootキー名
'lpSubKey:サブキー名
'Reserved:常に0
'lpClass:0
'dwOptions:定数(REG_参照)
'samDesired:定数(KEY_参照)
'lpSecurityAttributes:SECURITY_ATTRIBUTES構造体
'phkResult:オープンされたキーのハンドルを格納する変数
'lpdwDisposition:処理結果を受け取る変数
' (REG_CREATED_NEW_KEY か REG_OPENED_EXISTING_KEYが入る)
@戻り値@
正常終了のとき ERROR_SUCCESS
< SAMPLE >
’ここではHKEY_CURRENT_USER\SoftWareの下にPAPYというキーを作成
'標準モジュール
Public 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 SECURITY_ATTRIBUTES,
phkResult As Long, lpdwDisposition As Long) As Long
Public Declare Function RegCloseKey Lib "ADVAPI32" (ByVal hKey
As Long) As Long
Public Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type
Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_CONFIG = &H80000005
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_DYN_DATA = &H80000006
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_PERFORMANCE_DATA = &H80000004
Public Const HKEY_USERS = &H80000003
Public Const KEY_CREATE_SUB_KEY = &H4 'サブキーを作成
Public Const REG_OPTION_NON_VOLATILE = 0
Public Const ERROR_SUCCESS = 0
Public Const REG_CREATED_NEW_KEY = &H1 'キーを新規作成
Public Const REG_OPENED_EXISTING_KEY = &H2 '既存キーをオープンする
'ここからはフォーム内の処理です
Private Sub Command1_Click()
Dim SA As SECURITY_ATTRIBUTES
Dim Result As Long
Dim Disposition As Long
Dim Ret As Long
Dim Rootkey As String
Dim Subkey As Long
Rootkey = HKEY_CURRENT_USER
Subkey="SoftWare\PAPY"
'キーを作成
Ret = RegCreateKeyEx(Rootkey, Subkey, 0, "", _
REG_OPTION_NON_VOLATILE, KEY_CREATE_SUB_KEY, _
SA, Result, Disposition)
'キーを閉じる
Call RegCloseKey(Result)
Select Case Disposition
Case REG_CREATED_NEW_KEY
MsgBox "正常に作成しました"
Case REG_OPENED_EXISTING_KEY
MsgBox "同じキーが存在するので作成できませんでした"
End Select
End Sub