Heim > Backend-Entwicklung > C++ > Wie führe ich einen .NET-Prozess mithilfe von Identitätswechsel als anderer Benutzer aus?

Wie führe ich einen .NET-Prozess mithilfe von Identitätswechsel als anderer Benutzer aus?

Patricia Arquette
Freigeben: 2025-01-11 11:41:42
Original
636 Leute haben es durchsucht

How to Run a .NET Process as a Different User Using Impersonation?

Starten Sie einen .NET-Prozess als anderer Benutzer durch Identitätswechsel

Durch die Simulation können Sie den Prozess mit Administratorrechten starten. Durch Identitätswechsel kann ein Prozess als ein anderer Benutzer mit erhöhten Rechten ausgeführt werden.

Simulationshilfsklasse

Der von Ihnen bereitgestellte Code nutzt die Klasse ImpersonationHelper, um sich als Benutzer mit den erforderlichen Anmeldeinformationen auszugeben. Diese Klasse erstellt ein Zugriffstoken und verkörpert den angegebenen Benutzer, wodurch dem Prozess die erforderlichen Berechtigungen für die Ausführung als Administrator erteilt werden.

<code class="language-csharp">public ImpersonationHelper(string domain, string user, string password)
{
    // 调用 LogonUser 获取访问令牌的句柄。
    bool returnValue = LogonUser(user, domain, password,
        LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT,
        ref m_tokenHandle);
    if (false == returnValue)
    {
        int ret = Marshal.GetLastWin32Error();
        throw new System.ComponentModel.Win32Exception(ret);
    }

    // 模拟
    m_impersonatedUser = new WindowsIdentity(m_tokenHandle).Impersonate();
}</code>
Nach dem Login kopieren

Vorgang starten

Aktivieren Sie im Block using die Simulation. Anschließend wird die Klasse Process verwendet, um einen neuen Prozess mit dem angegebenen Dateinamen als Argument zu starten.

<code class="language-csharp">using (new ImpersonationHelper("xxx.blabla.com", "xxxx", "xxxx"))
{
    if (!string.IsNullOrEmpty(txtFilename.Text))
        Process.Start(txtFilename.Text);
}</code>
Nach dem Login kopieren

Eine Alternative zur Verwendung sicherer Zeichenfolgen

Alternativ können Sie den Vorgang als anderer Benutzer starten, indem Sie das Attribut StartInfo manuell wie folgt festlegen:

<code class="language-csharp">System.Diagnostics.Process proc = new System.Diagnostics.Process();
System.Security.SecureString ssPwd = new System.Security.SecureString();
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.FileName = "filename";
proc.StartInfo.Arguments = "args...";
proc.StartInfo.Domain = "domainname";
proc.StartInfo.UserName = "username";
string password = "用户输入的密码";
for (int x = 0; x < password.Length; x++)
{
    ssPwd.AppendChar(password[x]);
}
password = "";
proc.StartInfo.Password = ssPwd;
proc.Start();</code>
Nach dem Login kopieren

Durch die Angabe von SecureString für das Passwort stellen Sie sicher, dass das Passwort sicher gehandhabt wird und nicht im Klartextspeicher abgelegt wird.

Das obige ist der detaillierte Inhalt vonWie führe ich einen .NET-Prozess mithilfe von Identitätswechsel als anderer Benutzer aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage