ホームページ > バックエンド開発 > C++ > 昇格された特権を持つ別のユーザーとして .NET プロセスを開始するにはどうすればよいですか?

昇格された特権を持つ別のユーザーとして .NET プロセスを開始するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-11 11:51:42
オリジナル
675 人が閲覧しました

How to Start a .NET Process as a Different User with Elevated Privileges?

昇格された特権と代替資格情報を使用した .NET プロセスの実行

この記事では、別のユーザー アカウントを使用して管理者権限で .NET アプリケーションを実行する方法について詳しく説明します。

課題:

管理アクセスを要求するプロセスを起動しようとすると、多くの場合、権限不足エラーが発生します。

コード例 (説明):

<code>public class ImpersonationHelper : IDisposable
{
    // Impersonation code (omitted for brevity)...
}

using (new ImpersonationHelper("xxx.blabla.com", "xxxx", "xxxx"))
{
    if (!string.IsNullOrEmpty(txtFilename.Text))
        Process.Start(txtFilename.Text);
}</code>
ログイン後にコピー

解決策: 昇格した特権で直接起動する

ユーザーを偽装するのではなく、昇格された権限を持つ新しいプロセスを直接作成します。

<code class="language-csharp">System.Diagnostics.Process proc = new System.Diagnostics.Process();
System.Security.SecureString ssPwd = new System.Security.SecureString();

proc.StartInfo.UseShellExecute = true; // Note: Changed to true for elevation
proc.StartInfo.FileName = "filename";
proc.StartInfo.Arguments = "args...";
proc.StartInfo.Domain = "domainname";
proc.StartInfo.UserName = "username";
proc.StartInfo.Password = new System.Security.SecureString(); //  Important: Handle password securely

string password = "user entered password";
foreach (char c in password)
{
    proc.StartInfo.Password.AppendChar(c);
}
proc.StartInfo.Password.MakeReadOnly();

proc.Start();
proc.StartInfo.Password.Dispose(); //Dispose of the SecureString</code>
ログイン後にコピー

このメソッドは、提供された資格情報を使用して新しいプロセスを起動し、必要な管理者権限を付与します。 SecureString を使用してパスワードを安全に処理することを忘れないでください。 UseShellExecute = true は特権昇格に重要です。 false を使用した前の例は、この目的では機能しません。

以上が昇格された特権を持つ別のユーザーとして .NET プロセスを開始するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート