昇格された特権を持つがUACプロンプトがない、任意のユーザーサインイン(またはローカルまたはリモートのセッション接続)でアプリケーションを実行しようとしています。新しいユーザーが追加されると、アプリケーションは追加のセットアップなしで、彼のサインインでも実行されるはずです。
テスト目的で、Windows 10 Enterprisev.1709を使用してHyper-Vマシンをセットアップしました。その上に、Administratorsグループにあるメイン(「Admin」と呼ばれる)アカウントと、Usersグループにのみある1つの(「User」と呼ばれる)アカウントがあります。
現在のユーザーと管理者権限があるかどうかを表示する簡単なWPFアプリケーションを作成しました。最終的なアプリケーションもWPFになります。
WiXを使用して、アプリケーションスイート(前述のアプリケーション、Windowsサービス、その他)のインストーラーを作成します。タイトルの動作は、インストール時に自動的に設定する必要があります。インストール時には、WiXの機能だけに制限されて、やりたいことができますが、セットアップ中にカスタムアプリケーション(C#)を実行できるので、制限はないと思います。インストールは、管理者権限を持つアカウントから実行されます。
以下は私が試したことと結果でした:
「このプログラムを管理者として実行する」がチェックされていない
管理者:開始、管理者権限なし
ユーザー:開始、管理者権限なし
「このプログラムを管理者として実行する」をすべてのユーザーに対してチェック
管理者:起動しません
ユーザー:起動しません
「このプログラムを管理者として実行する」がチェックされていない
管理者:開始、管理者権限なし
ユーザー:開始、管理者権限なし
「このプログラムを管理者として実行する」をすべてのユーザーに対してチェック
管理者:起動しません
ユーザー:起動しません
他のオプションはありません
管理者:起動しません
ユーザー:起動しません
「最高の権限で実行」がチェックされている
管理者:開始、管理者権限
ユーザー:起動しません
「このプログラムを管理者として実行する」をすべてのユーザーに対してチェック
管理者:起動しません
ユーザー:起動しません
すべてのユーザーに対して「このプログラムを管理者として実行する」がチェックされ、「最高の特権で実行する」がチェックされる
管理者:開始、管理者権限
ユーザー:起動しません
どうすればそれができますか?アプリケーションがまったく実行されていない場合、イベントビューアは特定の情報をログに記録しないようです。それはそこにあるべきですか、それともそのようなログはどこかに置かれるかもしれませんか?ではどこ?
ターゲット:Windows 8以降、Server2012以降
GUIが必要な場合、これを処理する正しい方法は、GUIアプリと別のシステムサービスを用意することです。サービスは実際の作業を行い、GUIはコマンドをサービスに渡すだけです。偽装を使用して、サービスがユーザーとして機能できるようにすることができます。
管理者アクセスが必要な唯一の理由がHKLMキーへの書き込みである場合、管理者アクセスはこれを行うための間違った方法です。インストーラーで、レジストリキーを作成し、キーのACLを変更して、ユーザーが書き込みアクセスできるようにします。そのようにアプリを実行するために管理者権限は必要ありません。