Wie kann ich einen Internet Explorer-Prozess als ein anderer Benutzer starten, a la / netonly?

Ich versuche, Internet Explorer als anderen Benutzer über unsere WPF-App zu starten, damit sich unsere Benutzer beim Besuch der (internen) Website automatisch über die integrierte Windows-Authentifizierung authentifizieren.

Wir möchten iexplore.exe nicht als anderen Benutzer starten, da beim erstmaligen Starten eines Prozesses auf einem Computer merkwürdige Bereitstellungs- / Umgebungsprobleme auftreten und versucht wird, IE7 / 8 zum ersten Mal einzurichten. Wenn Sie eine Lösung haben, wie Sie jeden IE-Installer auf jedem Computer stumm schalten können, würde ich sie gerne hören.

Zurück zu meiner beabsichtigten Frage. Ich kann über die Eingabeaufforderung mit genau das IE-Identitätswechselverhalten abrufen, das ich * möchterunas (Dank anhttps://serverfault.com/questions/70376/runas-domain-account-still-asks-for-password):

c:\> runas /noprofile /netonly /user:MyDomain\MyUser iexplore.exe

* Hinweis: Ich kann nicht verwendenrunas Für unsere WPF App gibt es aus vielen Gründen aber dieEndresultat ist was ich will.

Wie auch immer, ich hätte gerne den C # -Äquivalent-Code, der a ausführtrunas /noprofile /netonly iexplore.exe.

Ich bin mit P / Invoke auf halbem Weg daCreateProcessWithLogonW. Das habe ich:

uint LOGON_NETCREDENTIALS_ONLY = 2;
var lpStartupInfo = new CreateProcessWithLogonW_PInvoke.STARTUPINFO();
CreateProcessWithLogonW_PInvoke.PROCESS_INFORMATION processInformation;

CreateProcessWithLogonW_PInvoke.CreateProcessWithLogonW(
                userName,
                domain,
                pw,
                LOGON_NETCREDENTIALS_ONLY,
                null,
                commandLine,
                0,
                null,
                null,
                ref lpStartupInfo,
                out processInformation);

Dadurch wird Internet Explorer erfolgreich gestartet, der Benutzer scheint sich jedoch überhaupt nicht auszugeben. Ich kann mich mit dem Befehl runas als Benutzer ausgeben, daher bin ich mir zu 98% sicher, dass die fehlgeschlagene Authentifizierung keine IE- / Zonen- / Kennwort- / IIS-Einstellung ist, sondern nur etwas, was ich in meinem Aufruf an nicht richtig macheCreateProcessWithLogonW().

Eine Sache, die mir aufgefallen ist, ist dierunas /netonly Befehl funktioniert nur, wenn ich die/noprofile Schalter, das ist etwas, das mich stumpf macht. Ich habe keine Ahnung, wie ich das Äquivalent dieses Schalters über P / Invoke in C # einstellen soll.

Hilfe ist bei beiden Lösungen erwünscht (Lösung: "Der IE führt einen Assistenten aus, wenn ich ihn zum ersten Mal starte" oder Feststellung der Einstellung "weirdo P / Invoke", die mir fehlt).

Antworten auf die Frage(2)

Ihre Antwort auf die Frage