16

私は、erp ソフトウェアによって呼び出されるように開発されたコンソール アプリケーションを持っています。

彼らはERP内で私のアプリを呼び出します。彼らがそれを行うと、それを行うための不十分な権限に関連するエラーが常に発生します。

すべてのユーザーのexeのプロパティで「このプログラムを管理者として実行する」チェックボックスをオンにしましたが、結果は同じです。

アプリにuacダイアログのプロンプトを表示させるマニフェストを追加することについて何か読んだことがありますが、アプリはサーバー上のerpから呼び出され、クライアントにはサーバー上のダイアログが表示されないため、それは私が望むものではありません。

このコンソール アプリを常に管理者として実行する方法を説明してもらえますか?

4

3 に答える 3

43

プロジェクトのアプリケーション マニフェスト ファイル (追加 -> 新しい項目 -> 一般 -> アプリケーション マニフェスト ファイル) に追加し、以下のノードを app.manifest に追加します。

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

http://msdn.microsoft.com/en-us/library/windows/desktop/bb756929.aspx

于 2013-03-13T18:31:04.877 に答える
11

まず、このプロセスのある時点でUACダイアログが表示されることを理解してください。それを回避する方法はありません。あなたが取ることができるいくつかのアプローチがあります:

  • 人々にERPソフトウェアを昇格させて実行してもらいます。完全を期すためにこれを含めています。通常は電源を必要としないときに、アプリを実行するたびにUACプロンプトに同意する必要があるのはひどいことです。ただし、アプリが昇格されている場合に機能することを確認するための便利なクイックテストになります。昇格されたプロセスから起動されたものはすべて昇格されるため、アプリにエラーメッセージが表示される場合は、昇格によって修正することはできません。
  • ERPアプリのコードを変更して、アプリを昇格させて起動します。あなたはC#について言及します。動詞を使用して起動することrunasは、ここでのアプローチです。これはERP開発者に負担をかけ、彼らはそれを行うことができないかもしれません。
  • アプリにマニフェストを追加します。1つを埋め込むことができます。または、アプリがfoo.exeと呼ばれる場合は、適切なrequestedExecutionLevelを使用してfoo.exe.manifestファイルを手動で作成します。埋め込むには、C#プロジェクトの[プロパティ]ページを使用して、適切な種類のマニフェストを選択します。trueに設定して起動していることを確認してください。UseShellExecuteそうしないと、マニフェストが無視されます。

最初のオプションを選択すると、ERPアプリが起動するたびにUACプロンプトが表示されます。良くない。2番目または3番目を選択した場合、コンソールアプリがERPアプリから起動されるたびにUACプロンプトが表示されます。おそらく許容できる。

あなたが考えるかもしれないもう一つのことは、コンソールアプリが管理者特権を必要とする理由をはるかに真剣に調べることです。Cのルートに書き込んでいますか、それともプログラムファイルに書き込んでいますか?HKLMのレジストリキーを更新していますか?何をしているのに、なぜそのようにしているのですか?アプリが何かをインストールまたは構成しない限り(この場合、UACプロンプトを取得することは適切で適切です)、ユーザー前のストレージに書き込み、昇格を必要としないようにアプリを調整する必要があります。そうすれば、どのような場合でも、高架で起動する方法について心配する必要がなくなります。

于 2013-03-13T18:53:37.390 に答える
1

次のようなものを含むバッチ ファイルを作成します。

runas /env /user:%USERDOMAIN%\%USERNAME% cmd.exe /K YourProgramName.exe

%USERDOMAIN% と %USERNAME% は、管理者アカウントの詳細に置き換えられます。

代わりにそれを実行しますか?

于 2013-03-13T18:18:58.827 に答える