Erpソフトウェアによって呼び出されるように開発されたコンソールアプリケーションがあります。
彼らは私のアプリをERP内で呼び出します、そして彼らがそれをするとき、私はそれをするための不十分な許可に関連したエラーを常に受け取ります。
すべてのユーザーのexeのプロパティで[このプログラムを管理者として実行する]チェックボックスをオンにしましたが、結果は同じです。
アプリにuacダイアログのプロンプトを表示するマニフェストの追加について何か読んだことがありますが、アプリはサーバー上のerpから呼び出され、クライアントにはサーバー上のダイアログが表示されないため、それは私が望んでいることではありません。
このコンソールアプリを常に管理者として実行する方法を誰かに説明してもらえますか?
まず、このプロセスのある時点でUACダイアログが表示されることを理解してください。それを回避する方法はありません。あなたが取ることができるいくつかのアプローチがあります:
runas
動詞で起動することは、ここでのアプローチです。これはERP開発者に負担をかけ、彼らはそれを行うことができないかもしれません。UseShellExecute
をtrueに設定して起動していることを確認してください。そうしないと、マニフェストが無視されます。最初のオプションを選択した場合、UACプロンプトはERPアプリが起動するたびに表示されます。良くない。 2番目または3番目を選択すると、コンソールアプリがERPアプリから起動されるたびにUACプロンプトが表示されます。おそらく許容できる。
あなたが考えるかもしれないもう一つのことは、コンソールアプリが管理者特権を必要とする理由をはるかに真剣に調べることです。 CのルートまたはProgramFilesに書き込んでいますか? HKLMのレジストリキーを更新していますか?何をしているのに、なぜそのようにしているのですか?アプリが何かをインストールまたは構成しない限り(その場合、UACプロンプトを取得することは適切で適切です)、プレユーザーストレージに書き込み、昇格を必要としないようにアプリを調整する必要があります。そうすれば、どのような場合でも、高架で起動する方法について心配する必要がなくなります。
プロジェクトにアプリケーションマニフェストファイルを追加し([追加]-> [新しいアイテム]-> [一般]-> [アプリケーションマニフェストファイル])、以下のノードをapp.manifestに追加します。
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
http://msdn.Microsoft.com/en-us/library/windows/desktop/bb756929.aspx
次のようなものを含むバッチファイルを作成します。
runas /env /user:%USERDOMAIN%\%USERNAME% cmd.exe /K YourProgramName.exe
ここで、%USERDOMAIN%と%USERNAME%は、管理者アカウントの詳細に置き換えられます。
代わりにそれを実行しますか?