DMScript 関数は、Windows レジストリにアクセスしてプログラムを起動できます。 DMScript は 32 ビット アプリケーションであるため、DMScript が 64 ビット Windows 上で実行される場合、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 © 2014 CA Technologies.
All rights reserved.
|
|