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).