#module #uselib "ADVAPI32.DLL" #func regRead "RegQueryValueExA" sptr,sptr,sptr,sptr,sptr,sptr #func regOpen "RegOpenKeyExA" sptr,sptr,sptr,sptr,sptr #func regClose "RegCloseKey" sptr #func regCreate "RegCreateKeyExA" sptr,sptr,sptr,sptr,sptr,sptr,sptr,sptr,sptr #func regWrite "RegSetValueExA" sptr,sptr,sptr,sptr,sptr,sptr #func regDel "RegDeleteValueA" sptr,sptr /////////////////////////////////////////////////////////////////// //intRegRead命令 //p1 = 読み込むレジストリの主キー文字列。 HKEY_CURRENT_USERなど。 //p2 = 読み込むレジストリの副キー文字列。 主キー以下のパス。 Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settingsなど //p3 = 読み込むレジストリの数値名(REG_DWORD)。読みたい値名。 ProxyEnableなど // //結果はシステム変数のstatに返る。 //存在しないキーを読み込むと、エラーダイアログが出て中断します。 #deffunc intRegRead str hkey,str key,str value switch hkey case "HKEY_CLASSES_ROOT": inthkey=$80000000:swbreak case "HKEY_CURRENT_USER": inthkey=$80000001:swbreak case "HKEY_LOCAL_MACHINE": inthkey=$80000002:swbreak case "HKEY_USERS": inthkey=$80000003:swbreak case "HKEY_PERFORMANCE_DATA":inthkey=$80000004:swbreak case "HKEY_CURRENT_CONFIG": inthkey=$80000005:swbreak case "HKEY_DYN_DATA": inthkey=$80000006:swbreak default:dialog "主キーの指定が間違ってます":regClose newhkey:return swend regOpen inthkey,key,0,$1,varptr(newhkey)//レジストリを読み込みモードでオープン data=0:l=4:values=value regRead newhkey, varptr(values),0,0,varptr(data),varptr(l)//レジストリ読み込み if stat { dialog "intRegRead命令は失敗した。\n下記のレジストリを読めませんでした。\n"+hkey+"\\"+key+"\\"+value,1 } regClose newhkey return data /////////////////////////////////////////////////////////////////// //intRegWrite命令 //p1 = レジストリの主キー文字列。 HKEY_CURRENT_USERなど。 //p2 = レジストリの副キー文字列。 主キー以下のパス。 //p3 = レジストリの数値名(REG_DWORD)。読みたい値名。 //p4 = 書き込みたい数値 // //存在しないキーに書き込むと、新しいキーとして登録されるので注意! #deffunc intRegWrite str hkey,str key,str value,int writevalue switch hkey case "HKEY_CLASSES_ROOT": inthkey=$80000000:swbreak case "HKEY_CURRENT_USER": inthkey=$80000001:swbreak case "HKEY_LOCAL_MACHINE": inthkey=$80000002:swbreak case "HKEY_USERS": inthkey=$80000003:swbreak case "HKEY_PERFORMANCE_DATA":inthkey=$80000004:swbreak case "HKEY_CURRENT_CONFIG": inthkey=$80000005:swbreak case "HKEY_DYN_DATA": inthkey=$80000006:swbreak default:dialog "主キーの指定が間違ってます":regClose newhkey:return swend keys=key:l=4:values=value:writevalues=writevalue regCreate inthkey,varptr(keys),0,0,0,$2,0,varptr(newhkey),0//レジストリを書き込みモードでオープン regWrite newhkey,varptr(values),0,4,varptr(writevalues),4 if stat { dialog "intRegWrite命令は失敗した。\n下記のレジストリを書き込めませんでした。\n"+hkey+"\\"+key+"\\"+value,1 } else { } regClose newhkey return /////////////////////////////////////////////////////////////////// //strRegRead命令 //p1 = 読み込むレジストリの主キー文字列。 HKEY_CURRENT_USERなど。 //p2 = 読み込むレジストリの副キー文字列。 主キー以下のパス。 Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settingsなど //p3 = 読み込むレジストリの値名(REG_SIZ)。読みたい値名。 ProxyServerなど // //結果はシステム変数のrefstrに返る。 //存在しないキーを読み込むと、エラーダイアログが出て中断します。 #deffunc strRegRead str hkey,str key,str value switch hkey case "HKEY_CLASSES_ROOT": inthkey=$80000000:swbreak case "HKEY_CURRENT_USER": inthkey=$80000001:swbreak case "HKEY_LOCAL_MACHINE": inthkey=$80000002:swbreak case "HKEY_USERS": inthkey=$80000003:swbreak case "HKEY_PERFORMANCE_DATA":inthkey=$80000004:swbreak case "HKEY_CURRENT_CONFIG": inthkey=$80000005:swbreak case "HKEY_DYN_DATA": inthkey=$80000006:swbreak default:dialog "主キーの指定が間違ってます":regClose newhkey:return swend regOpen inthkey,key,0,$1,varptr(newhkey)//レジストリを読み込みモードでオープン sdim data,1:values=value regRead newhkey, varptr(values),0,0,0,varptr(l)//文字列の長さ取得 if stat { dialog "strRegRead命令は失敗した。\n下記のレジストリを読めませんでした。\n"+hkey+"\\"+key+"\\"+value,1 } regRead newhkey, varptr(values),0,0,varptr(data),varptr(l)//レジストリ読み込み regClose newhkey return data /////////////////////////////////////////////////////////////////// //strRegWrite命令 //p1 = レジストリの主キー文字列。 HKEY_CURRENT_USERなど。 //p2 = レジストリの副キー文字列。 主キー以下のパス。 //p3 = レジストリの値名(REG_SIZ)。読みたい値名。 //p4 = 書き込みたい文字列 // //存在しないキーに書き込むと、新しいキーとして登録されるので注意! #deffunc strRegWrite str hkey,str key,str value,str writevalue switch hkey case "HKEY_CLASSES_ROOT": inthkey=$80000000:swbreak case "HKEY_CURRENT_USER": inthkey=$80000001:swbreak case "HKEY_LOCAL_MACHINE": inthkey=$80000002:swbreak case "HKEY_USERS": inthkey=$80000003:swbreak case "HKEY_PERFORMANCE_DATA":inthkey=$80000004:swbreak case "HKEY_CURRENT_CONFIG": inthkey=$80000005:swbreak case "HKEY_DYN_DATA": inthkey=$80000006:swbreak default:dialog "主キーの指定が間違ってます":regClose newhkey:return swend sdim writevalues,1:writevalues=writevalue keys=key:l=strlen(writevalues):l++:values=value regCreate inthkey,varptr(keys),0,0,0,$2,0,varptr(newhkey),0//レジストリを書き込みモードでオープン regWrite newhkey,varptr(values),0,1,varptr(writevalues),l if stat { dialog "intRegWrite命令は失敗した。\n下記のレジストリを書き込めませんでした。\n"+hkey+"\\"+key+"\\"+value,1 } else { } regClose newhkey return /////////////////////////////////////////////////////////////////// //regDelete命令 //p1 = 削除したいレジストリの主キー文字列。 HKEY_CURRENT_USERなど。 //p2 = 削除したいレジストリの副キー文字列。 主キー以下のパス。 Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settingsなど //p3 = 削除したいレジストリの値名 ProxyEnableなど #deffunc regDelete str hkey,str key,str value switch hkey case "HKEY_CLASSES_ROOT": inthkey=$80000000:swbreak case "HKEY_CURRENT_USER": inthkey=$80000001:swbreak case "HKEY_LOCAL_MACHINE": inthkey=$80000002:swbreak case "HKEY_USERS": inthkey=$80000003:swbreak case "HKEY_PERFORMANCE_DATA":inthkey=$80000004:swbreak case "HKEY_CURRENT_CONFIG": inthkey=$80000005:swbreak case "HKEY_DYN_DATA": inthkey=$80000006:swbreak default:dialog "主キーの指定が間違ってます":regClose newhkey:return swend values=value keys=key regOpen inthkey,keys,0,$2 ,varptr(newhkey) regDel newhkey,varptr(values) regClose newhkey return #global