ライトニングトーク smblt(マニフェストと仲良くなろう) 201510_山田
TRANSCRIPT
互換性アシスタントの仕組みWINDOWS の番人の働きっぷりから、 WINDOWS の中身を知る
山ピー (@84TAKA0310)
はじめに右の画面を良くみる。気になっていたので、調べてみました。
■ 目次・互換性アシスタントとは?・マニフェストとは?・回避方法
互換性アシスタントとは?変なアプリを動作させないように、常時監視をしている OS のサービス。これにはマニフェストが関係します。
マニフェストとは?・何かをするために必要な宣言書・選挙公約→OS に対して、私はこのような動作を します、と宣言をするためのもの。
マニフェストでできること・ UAC ( User Account Control ) →管理者レベルのアクセス許可を制御・ DPI( 画面解像度 ) 制御・動作する OS によって、監視内容が変わる
マニフェスト: UAC(User Account Control)正体は、コレ。 EXE に埋め込まれています。<?xml version="1.0" encoding="UTF-8" standalone="yes"?><assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="WindowsApplication1" type="win32"/> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator"/> </requestedPrivileges> </security> </trustInfo></assembly>
同じように、 DPI 、 OS制御も埋め込むことができる。
マニフェストでできること・ UAC ( User Account Control ) →管理者レベルのアクセス許可を制御・ DPI( 画面解像度 ) 制御・動作する OS によって、監視内容が変わる
動作する OS によって、監視内容が変わる不正動作をしたら、 OS が警告を表示する。Windows Vista ~: exe の名称に setup 、 install 、 update などを含むと、 UAC を表示してインストーラーとして昇格。 挙動を監視する。
UAC(User Account Control)よく見ますね。自動昇格・・・
監視する内容アンインストール情報を書き込まずにアプリが終了すると NG 。※ インストーラーとして認識するため。それに加えて・・・
監視する内容Windows7 以降は、 OS と互換性があるアプリかを自動監視。→Compatibility セクション
監視する内容Windows8.1 で GetOS() を使うと「 8です」と返されたことありませんか?→Compatibility セクションの値を 返します。互換性に引っかかると・・・
互換性アシスタントこれが表示されます
カギは、やっぱしマニフェスト・・・
互換性アシスタントファイルのフルパスで情報を、レジストリーに保存しています。HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Persisted
回避方法WindowsVista : EXEに電子署名をすれば OK。Windows7~: EXEに電子署名 + 動作させたい OS のCompatibilityを設定。※ ただし、Win10やWin8.1などで検証するとそうではない場合もある模様。 ご存じの方、教えてください (>_<)
最後にOS も日々進化している。常に正しい知識をもって、対応していこう。ご静聴ありがとうございました。
参考文献Microsofthttp://windows.microsoft.com/ja-jp/windows/program-compatibility-assistant-faq#1TC=windows-7InstallShieldhttps://hds.networld.co.jp/helpdesk/support/FaqFacadeServlet?TaskType=Detail&seriesId=InstallShieldFAQ&id=00001560&categoryId=0074&JspUrl=/support/FrequentlyDetail.jsp
参考文献 ( 続き )DSAS 開発者の部屋 http://dsas.blog.klab.org/archives/51785861.html※ アイコン:ポラパレット (http://illust-hp.com/)