C# 版 UAC 対策コード

C# と VB.NET の入門サイト
Windows Vista の新しい UAC の機能 (セキュリティ) でコードが例外を出す場合の対処について 【Part 2】

を参考に C# 版の UAC 対策コードを作成中… OS チェック等が別途必要かな。

とりあえず、こんな感じ。runas 無限ループにならないよう引数にも runas をつけているところがポイントです。


private bool RunAsRestart()
{
    string[] args = Environment.GetCommandLineArgs();

    foreach (string s in args)
    {
        if (s.Equals("runas"))
        {
            Application.Exit();
        }
    }
    ProcessStartInfo startInfo = new ProcessStartInfo();
    startInfo.UseShellExecute = true;
    startInfo.WorkingDirectory = Environment.CurrentDirectory;
    startInfo.FileName = Application.ExecutablePath;
    startInfo.Verb = "runas";
    startInfo.Arguments = "runas";

    try
    {
        Process.Start(startInfo);
    }
    catch
    {
        return false;
    }
    return true;
}

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です