Как я могу запустить процесс Internet Explorer от имени другого пользователя, а не только?

Я пытаюсь запустить Internet Explorer в качестве другого пользователя из нашего приложения WPF, чтобы, когда наши пользователи посещают (внутренний) веб-сайт, они автоматически аутентифицируются с помощью встроенной аутентификации Windows.

Мы не хотим запускать iexplore.exe от имени другого пользователя из-за странных проблем с развертыванием / средой, которые возникают при первом запуске процесса на компьютере, когда он пытается настроить IE7 / 8 в первый раз. Хотя, если у вас есть решение, как отключить установку каждого установщика IE на каждой машине, я бы очень хотел это услышать.

Вернемся к моему заданному вопросу. Я могу получить точное поведение олицетворения IE, которое я хочу *, из командной строки, используяrunas (благодаряhttps://serverfault.com/questions/70376/runas-domain-account-still-asks-for-password):

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

* примечание: я не могу использоватьrunas для нашего приложения WPF по многим причинам, ноend result это то, что я хочу

В любом случае, мне нравится C # -эквивалентный код, которыйrunas /noprofile /netonly iexplore.exe.

Я на полпути с P / Invoke наCreateProcessWithLogonW, Вот что у меня есть:

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

Это успешно запускает Internet Explorer, но, похоже, не выдает себя за пользователя вообще. Я могу выдать себя за пользователя с помощью команды runas, так что я на 98% уверен, что неудачная проверка подлинности не является настройкой IE / zone / password / IIS, это просто то, что я не правильно делаю в своем вызове вCreateProcessWithLogonW().

Одна вещь, которую я заметил, состоит в том, чтоrunas /netonly Команда работает только если я добавлю/noprofile выключатель, который что-то, что ставит меня в тупик. Я понятия не имею, как установить эквивалент этого переключателя через P / Invoke в C #.

Помощь приветствуется в любом решении (решение «IE запускает мастер, когда я запускаю его в первый раз»), или обнаружение пропавшего без вести параметра P / Invoke.

Ответы на вопрос(2)

Ваш ответ на вопрос