Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Memulakan Proses .NET sebagai Pengguna Berbeza dengan Keistimewaan Ditingkatkan?
Menjalankan Proses .NET dengan Keistimewaan Ditingkatkan dan Kelayakan Ganti
Artikel ini memperincikan cara untuk melaksanakan aplikasi .NET dengan hak pentadbiran menggunakan akaun pengguna yang berbeza.
Cabaran:
Percubaan untuk melancarkan proses yang menuntut akses pentadbiran selalunya mengakibatkan ralat keistimewaan yang tidak mencukupi.
Kod Contoh (Ilustratif):
<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>
Penyelesaian: Dilancarkan Terus dengan Keistimewaan Ditingkatkan
Daripada penyamaran pengguna, buat terus proses baharu dengan keistimewaan yang tinggi:
<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>
Kaedah ini melancarkan proses baharu menggunakan kelayakan yang disediakan, memberikannya keistimewaan pentadbiran yang diperlukan. Ingat untuk mengendalikan kata laluan dengan selamat menggunakan SecureString
. UseShellExecute = true
adalah penting untuk peningkatan keistimewaan. Contoh sebelumnya menggunakan false
tidak akan berfungsi untuk tujuan ini.
Atas ialah kandungan terperinci Bagaimana untuk Memulakan Proses .NET sebagai Pengguna Berbeza dengan Keistimewaan Ditingkatkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!