2023-08-09 (水)
[C#] プロセスを管理者権限か一般権限を指定して実行する
管理者権限でプロセスを実行する方法です。また反対に、管理者権限で実行中のプロセスから一般権限で別のプロセスを実行する方法です。
環境
- .NET 7.0.400
- C# 11.0
- Visual Studio 2022 Version 17.7.0
- Windows 11 Pro 22H2 22621.2134
結果
管理者権限でプロセスを実行する
一般権限のプロセスから実行すると、UAC のダイアログが表示されます。UseShellExecute = true
を指定する必要があります。
Process.Start(new ProcessStartInfo
{
FileName = @"C:\Sample.exe",
UseShellExecute = true,
Verb = "RunAs",
});
一般権限でプロセスを実行する
非公式の方法のようですが、explorer.exe を使用する方法が簡単でした。
https://mdb-blog.blogspot.com/2013/01/nsis-lunch-program-as-user-from-uac.html
Process.Start("explorer.exe", @"C:\Sample.exe");
感謝
管理者権限で実行する
- UACが有効の時、必要な処理だけ管理者に昇格させて実行する - .NET Tips (VB.NET,C#...)
- 管理者権限で別のプロセスを起動する - tera1707’s blog
- C#で外部アプリケーションを管理者として実行する - Ararami Studio
管理者権限プロセスから一般権限で実行する
- Stack Overflow
- Win32 API を使う方法
- FAQ: How do I start a program as the desktop user from an elevated app? | Microsoft Docs
- How can I launch an unelevated process from my elevated process and vice versa? - The Old New Thing
- Execute In Explorer Sample (Windows) | Microsoft Learn
- ShellExecuteA 関数 (shellapi.h) - Win32 apps | Microsoft Learn
- Explorer.exe を使う方法
- 現在のプロセスが管理者として実行されているかどうかを確認する方法
GitHub
関連記事
新着記事