Frage

Ich habe ein Kind Prozess, den ich Laich von meinem Haupt-Anwendung, die Bedürfnisse als eine andere lokale Benutzer auf einem Windows-7-Maschine ausgeführt werden. Ich würde es vorziehen, nicht ein Passwort für das Benutzerkonto festgelegt, aber es scheint, dass ein neuen Prozess mit Identitätswechsel zu schaffen nicht für leere Kennwörter oder jede Art von Nullwert erlaubt. Wer weiß, ob dies möglich ist?

unten war mein Versuch, mit einem leeren Zeichen übergeben:

ProcessStartInfo info = new ProcessStartInfo(@"C:\PathToExecutable");
System.Security.SecureString psswd = new System.Security.SecureString();
psswd.AppendChar('\0');
psswd.MakeReadOnly();

info.UseShellExecute = false;
info.UserName = "NewProcessName";
info.Password = psswd;
info.Domain = "LocalMachine";

Process newProc = new Process();
newProc.StartInfo = info;

newProc.Start();

edit: Die Fehlermeldung Ich erhalte

Logon failure: user account restriction. Possible reasons are blank passwords not allowed, logon hour restrictions, or a policy restriction has been enforced

War es hilfreich?

Lösung 3

Dies ist offenbar ein bekanntes Problem, dass LogonUser() mit einem leeren Kennwort fehlschlägt. Ich habe ein allgemeines Passwort für erforderlich Benutzerkonten in meinem Anwendungsfall.

Andere Tipps

Was sind Sie zu imitieren? LogonUser() sollte ein leeres Kennwort ermöglichen.

Ich glaube nicht, psswd.AppendChar('\0') Aufruf der richtige Weg ist, ein leeres Kennwort angeben. Versuchen Sie, die SecureString aus dem Code zu entfernen, um zu sehen, wenn Sie zumindest den Identitätswechsel Arbeit machen können. Dann fügen Sie in den Secure zurück, um zu sehen, ob Ihr Problem liegt dort.

* Edit *

Versuchen Sie diese:

unsafe {
    char* ary = stackalloc char[0];
    SecureString str = new SecureString(ary, 0);
}

set info.Password auf Ihren neuen Secure ... nicht sicher, ob Sie das tun müssen, werden im unsafe Kontext oder nicht.

Wie this Frage weist darauf hin, Satz LoadUserProfile auf true in StartInfo. Versuchen Sie, dass heraus, es könnte helfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top