x64バージョンのWindows上ではアプリケーションは以下のマッピングを行います。
1. 32bitアプリケーションの場合
- C:\Windows\System32 -> C:\Windows\Syswow64 (32bit用のファイルがあります)
- C:\Windows\Syswow64 -> C:\Windows\Syswow64 (32bit用のファイルがあります)
- C:\Windows\Sysnative -> C:\Windows\System32 (64bit用のファイルがあります)
2. 64bitアプリケーションの場合
- C:\Windows\System32 -> C:\Windows\System32 (64bit用のファイルがあります)
- C:\Windows\Syswow64 -> C:\Windows\Syswow64 (32bit用のファイルがあります)
- C:\Windows\Sysnative -> 使用できません
KACE SMAエージェントは32Bitアプリケーションであり"1. 32bitアプリケーションの場合"の動作が行われます。
KACEから 64Bit(ネイティブ)のシステムコマンドを実行したい場合
KACEエージェント起動のコマンド起動では32bitのコマンドとして動作するため、
そのまま C:\Windows\System32 フォルダ以下のパスを指定して扱おうとすると
実際には C:\Windows\Syswow64 を操作することになります。
このことが都合の悪い場合には C:\Windows\Sysnative を指定します。
KScriptからネイティブとしてbatファイルを起動する場合)
以下のように指定します。
ステップ: プログラムを起動する...
ディレクトリ: $(KACE_SYS_DIR)
ファイル cmd.exe
パラメータ /C C:\Windows\SysNative\cmd.exe /C batファイルのパス
あるいはbatファイルの中のシステムのコマンド内に C:\Windows\SysNative\コマンド名.exe と記述します。
PowerShellを使用する場合も同様にこのことにご留意ください。PowerShellの64bit版を実行したい場合には、C:\Windows\
SysNative\WindowsPowerShell\v1.0\powershell.exe を呼び出すようにします。このようにしない場合、期待する結果が得られない可能性があります。
コマンドプロンプトでKACEによるコマンド起動をシミュレートするにあたり、お使いの64-Bit Windows OS上から C:\Windows\Syswow64\cmd.exe を実行すると32bitのコマンドプロンプトを起動できます。このプロンプトでは%Windir%\SysNativeも確認できるため、KACEエージェントから実行を仕掛ける環境としてはこちらがより近いといえます。追加情報#1
KACEから 64Bit(ネイティブ)のレジストリを参照したい場合
このリダイレクションはレジストリについてもあてはまります。 ネイティブの64bit用のレジストリへの書き込みを必要とする際には reg.exeコマンドはSysNativeから呼び出される必要があります。 しかし KACE SMAエージェントの実行にバッチファイルがKickされるときには、32bitのリダイレクションへスイッチされてしまいます。
Kスクリプトとカスタムインベントリにおいて、キーの読み取り・書き込みに先頭のキー(レジストリ・ハイブ)に 「64」 を追加することでこのリダイレクトを回避できます。 この指定はHKEY_LOCAL_MACHINEのようなOS内で32bit/64bit個別のバージョンを持つキーを区別する場合に必要とされます。
例:
64bitのHKEY_LOCAL_MACHINEにアクセスするためにSMAのKスクリプトやカスタムインベントリでは HKLM (または HKEY_LOCAL_MACHINE)の代わりに HKLM64 (または HKEY_LOCAL_MACHINE64)という記法を使用できます。
HKLM64\Software\AAAAA\...(あるいは HKEY_LOCAL_MACHINE64\Software\AAAAA )と指定します。
HKEY_LOCAL_MACHINE\Software\AAAAA という指定では
実際には(System32のregedit を開いて確認した場合の)
HKEY_LOCAL_MACHINE\Software\Wow6432Node\AAAAA を参照していることになります。
影響を受けるレジストリキーは基本的には HKLM\Software以下ですが、詳細は参考情報のMicrosoft 社のページをお読みください。
HKLMNATを使用する
(サーバーとエージェント両方)バージョン10.0以上ではKスクリプトやカスタムインベントリのレジストリ指定において HKLMNAT というキーワードを使用することでネイティブ環境の情報を取得することができます。
Kace agent redirected to 32-bit applications Registry paths (4229710)
KACE Systems Management Appliance 10.0 Common Documents - Release Notes (Japanese)
ネイティブ Windows レジストリ領域用の OS ネイティブスクリプト変数の追加: このリリースから、NAT を HKLM(HKEY_LOCAL_MACHINE)に追加して、必要に応じてスクリプトタスクの 32 ビットまたは 64 ビットのレジストリ領域にアクセスすることができます。例: HKLMNAT\Software\ABC
HKLMNAT\Software\AAABBB
あるいは
HKEY_LOCAL_MACHINENAT\Software\AAABBB
いずれも使用可能
参考情報
32 ビット アプリケーションの実行 (learn.microsoft.com)
https://learn.microsoft.com/ja-jp/windows/win32/winprog64/running-32-bit-applications
- レジストリ リダイレクター
- ファイル システム リダイレクター