ich ein Problem mit dieser Situation haben: habe ich 2 Programme:Wie kann ein C# -Programm ein anderes Programm mit Administratorrechten ausführen?
Die erste nur eine Ausgabe drucken sagen, dass mit Admin-provileges oder nicht, und zweite derjenige, führen das erste Programm gestartet wurde mit Administratorrechten und ohne Verwendung der UAC. Das Problem ist, dass das zweite Programm nicht das erste mit Administratorrechten starten kann, ich weiß nicht warum. Dies ist mein Code:
-Code des ersten Programms:
// This only prints if you start as administrator or not.
bool isElevated;
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
isElevated = principal.IsInRole(WindowsBuiltInRole.Administrator);
Console.WriteLine("I got admin privileges?: "+isElevated);
-Code des zweiten Programms:
// This execute the first program with admin privileges without UAC
string username = "myuser";
SecureString userpass = new SecureString();
userpass.AppendChar('m');
userpass.AppendChar('y');
userpass.AppendChar('p');
userpass.AppendChar('a');
userpass.AppendChar('s');
userpass.AppendChar('s');
Process program = new Process();
program.StartInfo.UserName = username;
program.StartInfo.Password = userpass;
program.StartInfo.FileName = "Path/First_program.exe";
program.StartInfo.UseShellExecute = false;
program.Start();
PD: Ich möchte nicht, um den Benutzer zu Öffnen Sie die UAC, deshalb habe ich bereits den Benutzernamen und das Passwort eingegeben. Vielen Dank im Voraus.
Nach meinem Wissen können Sie die UAC auf diese Weise nicht umgehen. Wenn das laufende Programm keine Admin-Privilegien hat, muss das aufgerufene Programm Administratorrechte anfordern, die die UAC auslösen. – itsme86
Haben Sie versucht, das Passwort 'SecureString' schreibgeschützt zu machen? –
@BenVoigt, "SecureString" funktioniert gut, denn wenn ich ein falsches Passwort schreibe, löst es eine Ausnahme aus. – suffuko