1

まず第一に、はい、私はインターネットでこのトピックについて検索していましたが、私の場合はもう少し具体的であるため、これが私の質問の理由です。

私のアプリは、Visual Studio .NET2005でFramework2.0、C#を使用して開発された実行可能なwinformアプリです。

アプリは、コマンドラインでいくつかのコマンドを実行する必要があります。このコマンドは、管理者として実行する必要があります。

実際に機能するコードは次のとおりです。

        string output = "";
        Process Consola = new Process();
        ProcessStartInfo ConsolaStartInfo = new ProcessStartInfo();
        ConsolaStartInfo.FileName = "cmd.exe";
        ConsolaStartInfo.WorkingDirectory = System.Environment.SystemDirectory;
        ConsolaStartInfo.UseShellExecute = !NeedOutput;
        ConsolaStartInfo.RedirectStandardOutput = NeedOutput;
        Consola.StartInfo = ConsolaStartInfo;
        ConsolaStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        ConsolaStartInfo.CreateNoWindow = true;
        ConsolaStartInfo.Arguments = "/C " + CommandToPerform;
        ConsolaStartInfo.Verb = "runas";
        Consola.Start();
        Consola.WaitForExit();

どこ:

    CommandToPerform is a string var with a command
    NeedOutput is true or false depending if i need a return output or not.
   (This works)

最初のヒントは次のとおりです。このアプリケーションは、Windows7で管理者としてVisualStudioを実行している場合に期待どおりに完全に機能します。

2番目のヒントは次のとおりです。このアプリケーションは、管理者としてではなくVisual Studioを実行している場合は期待どおりに完全に機能しますが、コマンドラインが実行されるたびに、プロセスは画面上でセキュリティ検証を要求します(UAC)

はい、マニフェストを操作しようとしましたが、コンパイルするのに多くの問題があります。時々9009エラー、多くの種類のエラーを返します。

だから私の質問は:

1)ユーザーに権限を要求せずにそれを行うことは可能ですか?アプリケーションはサイレントである必要があります。これが本当の質問です。もしそうなら...

2)アプリケーションのマニフェストを管理者としてこのコマンドを実行するように定義するにはどうすればよいですか?私は何かが恋しいですか?それはアプリケーションと同じサインですか?

3)私のアプリは、管理者として実行せずに管理者としてこれらのコマンドを実行できますか?これは完璧なシナリオです。このアプリを使用するユーザーは、管理者になることはできません。

4)これはXPで動作しますか?XPはUACを要求しますか?(最小要件バージョンを開発するまで、XPでテストすることはできません)

あらゆる種類のアイデア/解決策/ヒントが高く評価され、決勝で解決策でない場合は、より良い回避策が回答としてマークされます(私は100%の割合です)

ノート:

  • クライアントの要件により、フレームワークを2.0から上記のエディションに移行できません。
  • クライアントの要件により、Visual Studio.NET2005を上記のエディションに移行できません。
  • アプリケーションは、XP(SPなし)からWindows7までのすべてのエディションで実行する必要があります
  • はい、回避策を使用できます。IFが「Microsoftポリシー」およびアプリの要件に基づいている場合(Framework 2.0、APIなど、Microsoft以外のmod / controls / libraryは使用できません)

編集:

  • 次の場所にキーを追加するソリューション:HKEY_CURRENT_USER \ Software \ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \LayersWORKED。

ただし、アプリケーションを実行すると、(一般的なUACプロンプトを使用して)アクセス許可のプロンプトが表示されます

4

2 に答える 2

2

質問 1) と 3) に対する答えは簡単です。これは不可能です。可能であれば、UAC全体がまったく役に立たないからです。

XP の互換性についてはわかりませんが (ただし、XP はマニフェストを無視すると思います)、残念ながら UAC プロンプトと VS2005 の経験もありません。私はこれをVS2008以降でのみ行ったので、そこでもお手伝いできません。私は VS2005 のガイドを見つけましたが、同じものを見たことがあるかもしれません:

vista で uac 用にアプリケーションを有効にします

于 2012-06-08T14:00:09.163 に答える
0

コマンドを実行する小さなサービスを実行することで実行できます。サービス プロセス インストーラーは、プロパティ Account on: LocalSystem を使用する必要があります。

したがって、アプリケーションには要件やマニフェストは必要ありません。

Win7およびXPで動作しています

MSDN Windows サービスの作成

そしてメモ:

LocalSystem アカウントには、イベント ログへの書き込みなど、幅広いアクセス許可があります。このアカウントは、悪意のあるソフトウェアからの攻撃のリスクを高める可能性があるため、注意して使用してください。他のタスクについては、LocalService アカウントの使用を検討してください。これは、ローカル コンピューター上で非特権ユーザーとして機能し、リモート サーバーに匿名の資格情報を提示します。

于 2012-06-08T19:17:25.470 に答える