背景:私は決してWindowsセキュリティ/ユーザー権限の専門家ではありません。ルートディレクトリのファイルとフォルダの書き込み/削除、ディスク上の他の場所でのファイルの書き込み/削除、システムレジストリ(ローカルマシン)の値の書き込み/変更、および起動と起動が可能なアプリケーション(C#で記述)があります。他のアプリケーションやサービスを停止します。これらのアクションの少なくとも一部には、管理者権限が必要だと思います。
これを実行してみましたが、UACがオフになっているコンピューターでは、追加の設定なしでうまく機能します。ただし、UACがオンになっているコンピューター(Windows 7では「通知しない」より上のレベル)では、クラッシュします。すべてのコンピューターで動作するために必要です。
今までは、「このプログラムを管理者として実行する」チェックボックスを手動でチェックするだけで、すべて問題ありませんでした。ただし、現在、お客様がこのソフトウェアを自分でインストールできるようにすることを決定しており、「箱から出して」実行する必要があります。
Visual Studio 2008に、すべてをインストールし、必要な起動データをレジストリに書き込む展開プロジェクトがあります。ここで行う必要があるのは、「このプログラムを管理者として実行する」フラグを設定することです。これは私が望むほど単純ではないと思います。
では、これを行う適切な方法は何ですか?このプログラムは起動時に開始されます。お客様がコンピューターを再起動するたびにUACがポップアップする(場合によっては画面が暗くなる)と、お客様を苛立たせます。
ご協力ありがとうございました。
編集:あなたの返事をありがとう。UACの回避は眉をひそめるだろうと思います。また、Microsoftは「ホワイトリスト」をサポートしていないため、許可を求めるのは1回だけであることがわかります。それは問題ありませんが、それを尊重することはできますが、フォローアップの質問がいくつかあります。
プログラムを適切に昇格させて昇格状態を修正する方法を示すリンクを教えていただけますか?オプションなどについての文献はありますか...基本的にはUAC101ガイドが欲しいです。
追加の特権が必要な場合にセキュリティステータスを上げる方法はありますか(そしてUACでプロンプトを表示する場合のみ)。基本的に、このアプリケーションはバックグラウンドで実行され、ほとんどの場合何もしません。時々、いくつかのファイルをチェックします(この時点で、ディスクに書き込んでレジストリを読み取ることができる必要があります(この時点では読み取り専用で問題ありません)が、一時的なフォルダーであるため、どこにいても問題ありません。 'd put it。アプリケーションが特権なしで書き込みできる場所があれば、それは完璧です。)
ただし、ある時点で残りのすべてのタスクを実行する必要があるため(ユーザーはとにかくこのアクションを確認する必要があります)、UACがこの時点でプロンプトを表示する場合は、問題ありません。この時点でそれを昇格させてから、デフォルトの権限に戻す方法はありますか?
このようなソリューションは、VistaやXpなどの古いバージョンのWindows(およびおそらく古いバージョン)で機能しますか?それを機能させるには何が必要ですか?