Como posso iniciar um processo do Internet Explorer como outro usuário, à la / netonly?

Eu estou tentando lançar o Internet Explorer como outro usuário do nosso aplicativo WPF, para que quando nossos usuários visitam o site (interno), eles silenciosamente autenticar via autenticação integrada do Windows.

Nós não queremos lançar o iexplore.exe como o outro usuário por causa dos estranhos problemas de implementação / ambiente que ocorrem quando você inicia um processo pela primeira vez em um computador e tenta configurar o IE7 / 8 pela primeira vez. Porém, se você tiver uma solução de como silenciar todos os instaladores do IE em todas as máquinas, eu adoraria ouvir isso.

De volta à minha pergunta pretendida. Eu sou capaz de obter o IE exato representando o comportamento que eu quero * do prompt de comando usandorunas (graças ahttps://serverfault.com/questions/70376/runas-domain-account-still-asks-for-password):

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

* nota: não posso usarrunas para o nosso aplicativo WPF por muitas razões, mas oresultado final é o que eu quero.

De qualquer forma, eu gostaria que o código equivalente C # que faz umrunas /noprofile /netonly iexplore.exe.

Eu estou no meio do caminho com o P / InvokeCreateProcessWithLogonW. Isso é o que eu tenho:

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

Isso inicia o Internet Explorer com êxito, mas não parece representar o usuário. Eu sou capaz de representar o usuário através do comando runas, por isso tenho 98% de certeza de que a falha na autenticação não é uma configuração do IE / zona / senha / IIS, é apenas algo que não estou fazendo na minha chamada paraCreateProcessWithLogonW().

Uma coisa que eu notei é que orunas /netonly comando só funciona se eu adicionar o/noprofile interruptor, que é algo que está me enganando. Eu não tenho idéia de como definir o equivalente a esse switch via P / Invoke em C #.

Ajuda é apreciada com qualquer solução (resolvendo o "IE executa um assistente quando eu inicio na primeira vez", ou encontrar a configuração do estranho / P / Invoke eu estou ausente).

questionAnswers(2)

yourAnswerToTheQuestion