スコットの答えはあなたが求めたことを行いますが、Microsoft は、コンソール アプリケーションが昇格を求めるプロンプトではなく、「アクセスが拒否されました」というメッセージを表示することをお勧めします。
http://msdn.microsoft.com/en-us/library/bb756922.aspxから:
コンソール アプリケーションは、別のユーザー インターフェイスではなく、コンソール ウィンドウに出力を表示します。アプリケーションを実行するために完全な管理者アクセス トークンが必要な場合、そのアプリケーションは管理者特権のコンソール ウィンドウから起動する必要があります。
コンソール アプリケーションに対しては、次の操作を行う必要があります。
アプリケーションを「asInvoker」としてマークする: RequestedExecutionLevel == asInvoker を設定したアプリケーションのマニフェストを作成することで、これを行うことができます。このセットアップにより、昇格されていないコンテキストからの発信者がプロセスを作成できるようになり、ステップ 2 に進むことができます。
アプリケーションが完全な管理者アクセス トークンなしで実行された場合にエラー メッセージを提供する: アプリケーションが昇格されていないコンソールで起動された場合、アプリケーションは簡単なメッセージを表示して終了する必要があります。推奨されるメッセージは次のとおりです。
アプリケーションは、スクリプト作成を容易にするために、起動に失敗した場合にもエラー コード ERROR_ELEVATION_REQUIRED を返す必要があります。
このための私の C# コードは以下のとおりです。Windows XP (管理者 -> OK、標準ユーザー -> 拒否) および Windows Server 2008 (昇格された管理者 -> OK、昇格されていない管理者 -> 拒否、標準ユーザー -> 拒否) でテストされています。
static int Main(string[] args)
{
if (!HasAdministratorPrivileges())
{
Console.Error.WriteLine("Access Denied. Administrator permissions are " +
"needed to use the selected options. Use an administrator command " +
"prompt to complete these tasks.");
return 740; // ERROR_ELEVATION_REQUIRED
}
...
return 0;
}
private static bool HasAdministratorPrivileges()
{
WindowsIdentity id = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(id);
return principal.IsInRole(WindowsBuiltInRole.Administrator);
}