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;
}
最近のコメント