Windows Server 2022ではセキュリティ強化のため、Internet Explorerでも従来のActiveXObjectによるローカルプログラム起動が制限されるようになりました。以前のWindows Server 2012で動作していた「new ActiveXObject(“WScript.Shell”)」も、セキュリティ設定をすべて有効化しても動作しないことがあります。
1. ActiveXObjectが動作しない理由
Server 2022ではIE自体も保護モードが強化され、ActiveXによるローカルプログラム起動は制限されます。また、最新のIE設定では64bit版プロセスでActiveXがブロックされるケースがあります。
2. 動作させるための設定確認
どうしても従来のコードを使う場合は、次の点を確認してください。
- IEの保護モードをオフにする(特にローカルイントラネットゾーン)
- 32bit版IEでアクセスする(64bitプロセスではActiveXが無効化される場合があります)
- IEのトラストサイト設定でサーバのURLを信頼済みに追加
これらの設定を行っても、OSやブラウザのセキュリティにより完全に動作保証はできません。
3. 代替策: サーバ側で実行する方法
現在の推奨は、クライアント側でActiveXでexeを直接起動する方法ではなく、サーバ側で安全にexeを実行する方法です。具体例としては。
- ASP.NETからProcess.Startを利用してサーバ上で実行
- サーバAPIを作成し、HTTPリクエストを受けてexeを実行
- PowerShellスクリプトを利用して管理者権限で実行
こうすることでブラウザ依存やActiveX制限を回避できます。
4. セキュリティ上の注意
ローカルクライアントでexeをブラウザから起動する方法は、OS・ブラウザの更新でいつでも動作しなくなる可能性があります。Server 2022以降では特に制限が強化されているため、サーバ側で安全に制御する方法への移行が推奨されます。
まとめ
Windows Server 2022で従来のActiveXObjectによるexe起動は動作しにくくなっています。既存のコードをそのまま動かすことは難しいため、代替としてサーバ側でProcess.StartやAPI経由でexeを実行する方法に移行することが、移行スケジュールを守る上で安全かつ確実です。


コメント