5

実行可能ファイルを管理者が必要として明示しました:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 

    <!-- Disable Windows Vista UAC compatability heuristics -->
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
            <requestedPrivileges>
                <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
            </requestedPrivileges>
        </security>
    </trustInfo> 
</assembly>

そして、デジタル署名しました。

しかし、実行可能ファイルを実行すると、奇妙なことに気付きました。同意ダイアログの実行可能ファイルの名前が からPingWarning.exeに変更されましたpinxxxx.tmp。一時コピーが作成され、それが実行されているかのように:

代替テキスト

実行可能ファイルを起動したときに誰かが*.tmpファイルを作成しているかどうかを確認するために、Process Montior を調べました。

代替テキスト

この特定のコンテナー内のアプリケーション情報サービスは、実行可能ファイルを意図的に Windows 一時フォルダーにコピーし、そこからユーザーの「同意」を求めています。無効なファイル名を指定しています。svchost

同意が得られると、実行可能ファイルは元の場所から実行されます。 リンクテキスト

デジタル署名しないと、ファイルは一時フォルダーにコピーされません。

代替テキスト


だから問題は、. _requireAdministrator

どうする?


アップデート:

私が見つけることができる説明に最も近いものはUninformed.orgからのものです :

ブローカーを破る

uiaccess を要求するプログラムの起動要求の場合、要求を処理するために appinfo!RAiLaunchAdminProcessが呼び出されます。次に、 appinfo!AiCheckSecureApplicationDirectoryによって、プロセスが (ハードコードされた) 許可されたディレクトリのセット内にあることが検証されます。プログラムが許可されたディレクトリ内から起動されていることを検証した後、制御は最終的にappinfo!AiLaunchProcessに渡され 、起動要求を処理するために必要な残りの作業が実行されます。この時点で、「安全な」アプリケーション ディレクトリの要件により、制限されたユーザー (または、さらに言えば、整合性の低い状態で実行しているユーザー) がカスタム実行可能ファイルを「安全な」アプリケーション ディレクトリに配置することはできません。

ヒントは、アプリケーションの配置が「許可」されている (文書化されておらず、指定されていない) ハードコードされたパスです。

もう 1 つはuiaccess を要求するプログラム用です。私の場合uiAccess="false"、元のマニフェストにはありませんでした。ただし、no ui アクセスを含めるようにマニフェストを変更します。

しかし、それは元の問題を解決しませんでした。


更新 2:

MSDNから:

SendSAS関数

uiAccessフラグが true設定され たアプリケーションは、正常に起動するためにAuthenticode署名されている必要があり ます。さらに、アプリケーションはファイル システム内の保護された場所に存在する必要があります。現在、許可されている保護された場所は 2 つあります。

  • **\プログラムファイル**
  • **\windows\system32**

これは、要求している実行可能ファイルuiAccessが許可された場所にある必要があるという考えを裏付けているようです。ただし、uiAccess を求めているわけではありません。

4

1 に答える 1

2

署名されていないアプリケーション、特に NSIS および InnoSetup インストーラーで同じ問題を見てきました (1 GB 以上のインストーラーが %windir%\temp にコピーされてから、consent.exe によってスキャンされるときに少し問題が発生します)。

NSIS バグ トラッカーには、それに関するエントリがあります。私がこれを調査していたとき、私は@ MSと連絡を取り合っていました.彼らはUACに取り組んでいる誰かに連絡することになっていたのですが、実際には何も起こりませんでした. その会話から得た唯一の適切な情報は、次の引用でした。

Windows の 1 人の友人は、これが信頼ダイアログが表示されている間のファイルの改ざんに関する懸念の緩和であった可能性があるという漠然とした記憶を持っていました。

于 2010-05-14T10:14:45.900 に答える