強制的に Windows NT 6.x で管理者として実行されるファイル 2
強制的に Windows NT 6.x で管理者として実行されるファイル
以前書いたネタですが、Windows 8上でアプリケーションを非表示状態で実行したら、何故か Windows 8だけ失敗する事態になりました。
ファイル名の規則にも入ってないのにおかしいなぁ・・・と思ったので調べてみることにしました。
とりあえず、 Microsoft Application Compatibility Toolkit 5.6 を Windows 8に入れます。
.Net 3.5 が必要なので、プログラムの追加と削除で、 Windows コンポーネントを有効にします。
Windows 8 に .Net 3.5 や スタートメニューがなくて困った話
見てみると、 会社名と製品名にsetup が含まれててもインストーラーとして処理。
「セットアップ」「セットアップ」等の文字列がファイルの説明にあっても駄目らしい。
条件を列挙すると
製品名と会社名と内部名やオリジナルファイル名やファイルの説明のいずれかに instal かsetupかupdateが含まれる
製品名またはファイルの説明に「インストー」または「インストー」または「アップデー」 が含まれる
ファイルの説明に「セットアップ」または「セットアップ」が含まれる
ファイル名に patch が含まれる
SFXPackであること
ファイル名かファイルの説明に「uninst」が含まれる
今回は以前の、マニフェストでユーザー権限で実行させないというのを、OSごとに設定する方法です。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <ms_asmv2:trustInfo xmlns:ms_asmv2="urn:schemas-microsoft-com:asm.v2"> <ms_asmv2:security> <ms_asmv2:requestedPrivileges> <ms_asmv2:requestedExecutionLevel level="asInvoker" uiAccess="false" /> </ms_asmv2:requestedPrivileges> </ms_asmv2:security> </ms_asmv2:trustInfo> <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> <application> <!--The ID below indicates application support for Windows Vista --> <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> <!--The ID below indicates application support for Windows 7 --> <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> <!--The ID below indicates application support for Windows 8 --> <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/> </application> </compatibility> </assembly> |
こんなかんじかな・ω・
App (executable) manifest (Windows)
しかし、非表示だとUACの警告も出ずにブロックだけされるとは思わなかったよ
Windows8絡みですが、セキュリティアラートが一部から出てます。