サーバー2008はユーザーの権利を設定できません
-
27-09-2019 - |
質問
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をオフにすることはありません。コンソールアプリに追加できるユーザーの権利を適切に設定するためのプログラム的な方法がなければなりません - 誰もがどのように知っていますか?
ありがとう。
解決
おそらくあなたは使用します」グローバル "プレフィックス アプリケーションのオブジェクト名に、アプリケーションはリモートデスクトップセッションホスト(RDセッションホスト)サーバーセッション内で開始されます。場合には、プログラムが有効にする必要があります se_create_global_name (SeCreateGlobalPrivilege
) 特権。見る C# - Sedebugprivilegeを有効にする方法は? (しかし、使用します SE_CREATE_GLOBAL_NAME
それ以外の SE_DEBUG_NAME
) また 管理されたコードの特権を確実に、安全に、そして効率的に操作する 例として。
他のヒント
UACは2008年のマシンで有効になっていると思いますが、あなたの質問についてまだコメントして見つけることができません。
もしそうなら、vs(プロパティの下)のapp.manifestファイルで、変更することを確認してください。
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
に
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
コードが管理者として実行されている場合でも、UACの警告で取得する必要があります。