Windows 上で有効
RegSetVariable 関数によって、指定されたレジストリ キーに変数が保存されます。
このレジストリ操作関数の形式は、以下のとおりです。
RegSetVariable(hKey as Integer, name as String, value as Integer) as Boolean
RegSetVariable(hKey as Integer, name as String, value as String) as Boolean
RegSetVariable(hkey as integer, name as string, buffer as void, bufsize as integer) as integer.
RegSetVariable(hkey as integer, name as string, buffer as void, bufsize as integer, type as integer) as integer.
現在開いているキーまたは事前定義されたキーを指定します。 hKey パラメータには、以下のいずれかの事前定義された値を指定できます。
HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
設定する変数の名前を指定します。
変数に設定する文字列または整数値を指定します。
変数に設定する値を含むバッファです。
バッファのタイプが string である場合、タイプ char の配列である場合、バッファのサイズは chars 単位で指定されます。それ以外の場合は、バイト数が指定されます。
レジストリ エントリのタイプ。
レジストリ エントリのタイプが Microsoft の表記法で返されました。
値: 0
値: 1
値: 2
値: 3
値: 4
値: 5
値: 6
値: 7
値: 8
この関数が正常に完了すると、TRUE が返されます。それ以外の場合は、FALSE が返されます。
例: RegSetVariable 関数
以下の例を開始する前に、RegOpenKey の例を実行してください。
Dim value as string
Dim hkey1 as integer
Dim name, str, dummy as string
Dim i, i1, rtr, int as integer
Dim bBuf[100] as Byte
Dim cBuf[100] as char
ClrScr()
hkey1 = RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE¥CA¥4 test only")
if hkey1 = 0 then
Print("RegOpenKey failed.")
exit
endif
rtr = RegQueryVariable(hkey1, "var_2", str, int)
Print(Str(rtr) + ": var_2 = " + str)
int = 100
str = ""
rtr = RegQueryVariable(hkey1, "var_2", dummy, int, str)
Print(Str(rtr) + ": var_2(" + Str(int) + ") = " + str)
int = 100
str = ""
rtr = RegQueryVariable(hkey1, "var_2", dummy, int, cBuf)
for i1 = 0 to int - 1
str = str + cBuf[i1]
next i1
Print(Str(rtr) + ": var_2(" + Str(int) + ") = " + str)
int = 100
str = "| "
rtr = RegQueryVariable(hkey1, "var_2", dummy, int, bBuf)
for i1 = 0 to int - 1
str = str + Str(bBuf[i1]) + " | "
next i1
Print(Str(rtr) + ": var_2(" + Str(int) + ") = " + str)
RegCloseKey(hkey1)
DMScript 関数は、Windows レジストリにアクセスしてプログラムを起動できます。 DMScript は 32 ビット アプリケーションであるため、DMScript が 64 ビット Windows OS 上で実行される場合、OS は特定のルールを課します。 特定のキーに関するレジストリ アクセスは、並列の 32 ビット レジストリ領域に自動的にリダイレクトされます。 たとえば、HKLM¥SOFTWARE¥xxx へのアクセスは HKLM¥SOFTWARE¥Wow6432Node¥xxx にリダイレクトされます。 リダイレクトされるキーの完全なリストについては、http://msdn.microsoft.com/en-us/library/aa384253(v=vs.85).aspx を参照してください。
同様に、システム ディレクトリを参照する特定の環境変数を使用して、ファイル システムにアクセスすると、32 ビット バイナリが含まれるディレクトリに自動的にリダイレクトされます。 たとえば、%windir%¥System32 ディレクトリは、64 ビット アプリケーション用に予約されています。 DMScript は、このディレクトリへのアクセスを試行すると、%windir%¥SysWOW64 に自動的にリダイレクトされます。 詳細については、http://msdn.microsoft.com/en-us/library/aa384187(v=vs.85).aspx を参照してください。
スクリプトは、正しい 64 ビット レジストリ キーおよびファイル システムにアクセスすることにより、64 ビット アプリケーションを検出する必要があるため、この動作は Intellisig スクリプトにとって重要です。 たとえば、Intellisig が HKLM¥SOFTWARE¥7-zip 内で 64 ビット バージョンの 7-Zip に関してレジストリ キーの読み取りを試行する場合、実際には HKLM¥SOFTWARE¥Wow6432Node¥7-zip を検索しますが、それは存在しないため、スクリプトが失敗します。 同様に、64 ビット バージョンの Notepad に関して %windir%¥System32 の検索を行うと、32 ビット バージョンが検索されます。
この動作を処理するために、DMScript は、64 ビット Windows OS への自動的なリダイレクトをオフにする以下の機能を提供しています。
setmode64(mode)
リダイレクトをオフまたはオンにする必要があるかどうかを指定します。 値 1 はリダイレクトをオフにし、値 0 はオンにします。
例: setmode64(1)
注: 64 ビット モードの場合、HKLM¥SOFTWARE¥Wow6432Node¥xxx などの物理名を使用して 32 ビット レジストリにアクセスします。 ただし、Windows の今後のバージョンでリダイレクト方法が変化する可能性があるため、Microsoft はこの方法を推奨していません。 代わりに、スクリプトを 32 ビット モードに戻す必要があります。
重要: より長い期間ファイル システム リダイレクトを無効にすると、dmscript がシステム DLL をロードできなくなり、失敗する場合があります。
|
Copyright © 2013 CA.
All rights reserved.
|
|