3

コンソール アプリの昇格されたユーザー権限を取得するために、C# 3.5 で Win32 を実行しようとしました。Visual Studio 2008 SP1/GDR で開発していますが、デバッガーで実行すると問題なく動作します。コンソール アプリをスタンドアロンで実行しても問題なく動作します。すべてを MSI にパッケージ化して 2003 サーバーにインストールし、コンソール アプリを実行すると、問題なく動作します。

同じ MSI を使用して、UAC が有効になっている 2008 サーバーにインストールし、コンソール アプリを実行すると、次のようなメッセージが表示されます。

Unable to set right for the account "DOMAIN\QAUSER": SeCreateGlobalPrivilege
System.UnauthorizedAccessException    Attempted to perform an unauthorized operation.

展開/サーバー管理者がアプリをインストールする以外に何かを行うことは期待できません。また、UAC をオフにするつもりもありません。コンソールアプリに追加できるユーザー権限を適切に設定するためのプログラム的な方法が必要です-誰かが方法を知っていますか?

ありがとう。

4

2 に答える 2

1

おそらく、アプリケーションのオブジェクト名に " Global\" プレフィックスを使用すると、アプリケーションはリモート デスクトップ セッション ホスト (RD セッション ホスト) サーバー セッション内で開始されます。プログラムでSE_CREATE_GLOBAL_NAME ( SeCreateGlobalPrivilege) 権限を有効にする必要がある場合。C# – SeDebugPrivilege を有効にする方法を参照してください。(ただし、SE_CREATE_GLOBAL_NAMEの代わりに使用SE_DEBUG_NAME) またはマネージド コードの権限を確実に、安全に、効率的に操作するを例として参照してください。

于 2010-10-17T22:00:47.727 に答える
0

UAC は 2008 マシンで有効になっていると思いますが、あなたの質問についてはまだコメントできません。

その場合は、VS の app.manifest ファイル (プロパティの下) で、変更を確認してください。

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

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

コードが管理者として実行されている場合でも、UAC 警告を回避する必要があります。

于 2010-10-12T16:35:06.710 に答える