Jak mogę uruchomić proces Internet Explorer jako inny użytkownik, a la / netonly?

Próbuję uruchomić program Internet Explorer jako inny użytkownik z naszej aplikacji WPF, aby użytkownicy odwiedzający witrynę (wewnętrzną) po cichu uwierzytelniali się za pomocą zintegrowanego uwierzytelniania systemu Windows.

Nie chcemy uruchamiać programu iexplore.exe jako drugiego użytkownika z powodu dziwnych problemów z wdrażaniem / środowiskiem, które występują podczas uruchamiania procesu po raz pierwszy na komputerze i próbuje on skonfigurować IE7 / 8 po raz pierwszy. Chociaż, jeśli masz rozwiązanie, jak wyciszyć każdy instalator IE na każdej maszynie, chciałbym to usłyszeć.

Powrót do mojego zamierzonego pytania. Jestem w stanie uzyskać dokładne podszywanie się pod IE, które chcę * z wiersza poleceńrunas (dziękihttps://serverfault.com/questions/70376/runas-domain-account-still-asks-for-password):

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

* Uwaga: nie mogę użyćrunas dla naszej aplikacji WPF z wielu powodów, alewynik końcowy to czego chcę.

W każdym razie chciałbym kod równoważny C #, który robirunas /noprofile /netonly iexplore.exe.

Jestem w połowie drogi z P / Invoke onCreateProcessWithLogonW. Oto co mam:

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

To z powodzeniem uruchamia program Internet Explorer, ale w ogóle nie podszywa się pod użytkownika. Jestem w stanie podszywać się pod użytkownika za pomocą komendy runas, więc jestem w 98% pewien, że niepowodzenie uwierzytelnienia nie jest ustawieniem IE / zone / password / IIS.CreateProcessWithLogonW().

Zauważyłem, żerunas /netonly polecenie działa tylko wtedy, gdy dodam/noprofile przełącznik, który mnie wkurza. Nie mam pojęcia, jak ustawić odpowiednik tego przełącznika przez P / Invoke w C #.

Pomoc jest doceniana w przypadku każdego rozwiązania (rozwiązanie „IE uruchamia kreatora, gdy uruchamiam go po raz pierwszy” lub znajduję brakujące ustawienie dziwaka P / Invoke).

questionAnswers(2)

yourAnswerToTheQuestion