アプリケーションの互換性について - 実践編 (Windowsの本当の力を知っていますか?)
アプリケーション 互換性エンジン を 環境変数 で制御する方法
いよいよクリスマスシーズン到来となりましたね。
2013年もあと1ヶ月を切りましたね。
光栄なことにvExpert Advent Calendar に参加することになりまして。
「仮想化でプリセールスしてるSEの一日」@ogawadさんに引き続き
今日は私が担当します。 変な脇汗が。。。緊張するなぁ。pv増えると嬉しいなぁ。
以前に投稿した、
「アプリケーションの互換性について (Windowsの本当の力を知っていますか?)」
http://tunemicky.blogspot.jp/2013/08/windows.html
の続編です。
前回は、@ITさんの記事の紹介と、Application Compatibility Toolkit(ACT)、Shimと言う物の存在、Windowsのアプリケーションの互換性に対する思いを簡単に紹介しましたが
今回は、実践編として、隠された環境変数を利用して
アプリケーション互換機能を利用する方法を投稿します。
かなりマニアックな投稿なのであしからず。
参考:
日本語:Application Compatibility Toolkit (ACT) Version 5.6 の概要
http://technet.microsoft.com/ja-jp/library/cc722367(v=ws.10).aspx
ACT5.6のダウンロードURL
http://www.microsoft.com/en-us/download/details.aspx?id=7352
Shimの内容について
http://technet.microsoft.com/ja-jp/library/cc722305(v=ws.10).aspx
アプリケーションの互換性エンジンを利用するためには、
3パターンの方法があります。
1.互換性 機能を利用したいEXEのプロパティから設定する方法
2.Windows OSに互換データベースを追加する方法
ACTに含まれるCompatibility Administratorを利用して、カスタムShimを作成し
SDBINSTコマンドでOSに登録する方法
3.環境変数を利用する方法
それぞれを説明すると長くなるので、今回は、一番マニアックな
「3.環境変数を利用する方法」を紹介します。
※アンドキュメントな内容なので、自己責任でお願いします。
アプリによっては、意図した動作にならないことも多々ありますので、その場合は
他の方法も試してみてください。
環境変数を追加する
変数名: __COMPAT_LAYER
※__COMPAT_LAYERのはじめの2文字は_アンダースコア 2つです。
http://tunemicky.blogspot.jp/2011/10/uac.html
環境変数に利用できるパラメータは以下になります。
2個以上のパラメータをセットする場合は、半角スペースを利用します。
例)そのままの権限で実行&WinXPSP3のバージョン偽装&ソートをWin2003にする
__COMPAT_LAYER
RunAsInvoker WinXPSP3VersionLie EmulateSorting
注意:
Windowsのアプリケーション互換機能を利用するためには、
「アプリケーションの互換性エンジンを有効」にする必要があります。
Windows7では、既定で有効になっています。WindowsXPでも既定値は有効
まれに、GPOを利用して「アプリケーションの互換性エンジンをオフ」にしているケースがありますが
せっかくの互換エンジンを無効にすると、互換性機能がまったく利用できなくなりますので
注意して下さい。
「コンピュータの構成」-「管理用テンプレート」-「Windowsコンポーネント」-「アプリケーションの互換性」
未構成か無効にする必要があります。
当然ですが「互換性エンジンをオフにする」を有効にすると、互換エンジンが動きません。。。
明日は、「仮想デスクトップなう」の@hamboxesさんのターンです。乞うご期待!
アプリケーション 互換性エンジン を 環境変数 で制御する方法
いよいよクリスマスシーズン到来となりましたね。
2013年もあと1ヶ月を切りましたね。
光栄なことにvExpert Advent Calendar に参加することになりまして。
「仮想化でプリセールスしてるSEの一日」@ogawadさんに引き続き
今日は私が担当します。 変な脇汗が。。。緊張するなぁ。pv増えると嬉しいなぁ。
以前に投稿した、
「アプリケーションの互換性について (Windowsの本当の力を知っていますか?)」
http://tunemicky.blogspot.jp/2013/08/windows.html
の続編です。
前回は、@ITさんの記事の紹介と、Application Compatibility Toolkit(ACT)、Shimと言う物の存在、Windowsのアプリケーションの互換性に対する思いを簡単に紹介しましたが
今回は、実践編として、隠された環境変数を利用して
アプリケーション互換機能を利用する方法を投稿します。
かなりマニアックな投稿なのであしからず。
参考:
日本語:Application Compatibility Toolkit (ACT) Version 5.6 の概要
http://technet.microsoft.com/ja-jp/library/cc722367(v=ws.10).aspx
ACT5.6のダウンロードURL
http://www.microsoft.com/en-us/download/details.aspx?id=7352
Shimの内容について
http://technet.microsoft.com/ja-jp/library/cc722305(v=ws.10).aspx
アプリケーションの互換性エンジンを利用するためには、
3パターンの方法があります。
1.互換性 機能を利用したいEXEのプロパティから設定する方法
2.Windows OSに互換データベースを追加する方法
ACTに含まれるCompatibility Administratorを利用して、カスタムShimを作成し
SDBINSTコマンドでOSに登録する方法
3.環境変数を利用する方法
それぞれを説明すると長くなるので、今回は、一番マニアックな
「3.環境変数を利用する方法」を紹介します。
※アンドキュメントな内容なので、自己責任でお願いします。
アプリによっては、意図した動作にならないことも多々ありますので、その場合は
他の方法も試してみてください。
環境変数を追加する
変数名: __COMPAT_LAYER
※__COMPAT_LAYERのはじめの2文字は_アンダースコア 2つです。
http://tunemicky.blogspot.jp/2011/10/uac.html
環境変数に利用できるパラメータは以下になります。
設定値 | 説明 |
256Color | 256色で実行する |
640X480 | 640 x 480の解像度で実行する |
ElevateCreateProcess | CreateProcessの昇格を無効にする? |
FaultTolerantHeap | FaultTolerantHeapを有効にする |
HighDpiAware | 高DPI設定では画面のスケーリングを無効にする |
DisableCicero | このプログラムでは詳細なテキストサービスを無効にする WinXPまで? |
DisableThemes | 視覚テーマを無効にする |
DisableThemeMenus | 視覚テーマを無効にする? |
DisableDWM | デスクトップ コンポジションを無効にする |
DisableFadeAnimations | フェードアニメーションを無効にする? |
RunAsHighest | 持ちうる最高の権限で実行する |
RunAsHighest_GW | 不明 |
RunAsInvoker | そのままの権限で実行する |
RunAsAdmin | 管理者として実行する |
EmulateSorting | ソート順をWindows2003/XPに変更 |
EmulateSortingServer2008 | ソート順をWindows2008に変更 |
EmulateSortingVista | ソート順をWindowsVistaに変更 |
Layer_Win95VersionLie | GetVersion/GetVersionExの戻り値 Win95に偽装 |
WinXPSP2VersionLie | GetVersion/GetVersionExの戻り値 WinXPSP2に偽装 |
WinXPSp2_GW | 不明 |
WinXPSP3VersionLie | GetVersion/GetVersionExの戻り値 WinXPSP3に偽装 |
VistaRTM_GW | 不明 |
VistaSP1VersionLie | GetVersion/GetVersionExの戻り値 Vista SP1に偽装 |
VistaSP2VersionLie | GetVersion/GetVersionExの戻り値 Vista SP2に偽装 |
Win7RTM | GetVersion/GetVersionExの戻り値 Win7に偽装 |
WinSrv08SP1 | GetVersion/GetVersionExの戻り値 Win2008SP1に偽装 |
WinSrv08R2RTM | GetVersion/GetVersionExの戻り値 Win2008R2に偽装 |
WinXpSp3 | ACTで設定するWnXPSP3の19個のShimが有効になる? 互換モードのタブで設定した内容に近い? |
APITracing | 不明 |
AppRecorder | 不明 |
DW | 不明 |
EnableIISBizTalk | 不明 |
FDR | 不明 |
ForceDxSetupSuccess | 不明 |
IgnoreAdobeKMPrintDriverMessageBox | 不明 |
International | 不明 |
iTunesAutoplay | 不明 |
Layer_Force640x480x8 | 不明 |
Layer_ForceDirectDrawEmulation | 不明 |
MsiAuto | 不明 |
NullEnvironment | 不明 |
pLayerGetProcAddrExOverride | 不明 |
ProfilesSetup | 不明 |
RedirectCHHlocaletoCHT | 不明 |
VerifyVersionInfoLiteLayer | 不明 |
VistaSetup | 不明 |
WRPMitigationLayer | 不明 |
2個以上のパラメータをセットする場合は、半角スペースを利用します。
例)そのままの権限で実行&WinXPSP3のバージョン偽装&ソートをWin2003にする
__COMPAT_LAYER
RunAsInvoker WinXPSP3VersionLie EmulateSorting
注意:
Windowsのアプリケーション互換機能を利用するためには、
「アプリケーションの互換性エンジンを有効」にする必要があります。
Windows7では、既定で有効になっています。WindowsXPでも既定値は有効
まれに、GPOを利用して「アプリケーションの互換性エンジンをオフ」にしているケースがありますが
せっかくの互換エンジンを無効にすると、互換性機能がまったく利用できなくなりますので
注意して下さい。
「コンピュータの構成」-「管理用テンプレート」-「Windowsコンポーネント」-「アプリケーションの互換性」
未構成か無効にする必要があります。
当然ですが「互換性エンジンをオフにする」を有効にすると、互換エンジンが動きません。。。
明日は、「仮想デスクトップなう」の@hamboxesさんのターンです。乞うご期待!