¿Cómo puedo iniciar un proceso de Internet Explorer como otro usuario, a la / netonly?

Estoy intentando iniciar Internet Explorer como otro usuario desde nuestra aplicación WPF, de modo que cuando nuestros usuarios visitan el sitio web (interno), se autentican en silencio a través de la autenticación integrada de Windows.

No queremos lanzar iexplore.exe como el otro usuario debido a problemas extraños de implementación / entorno que ocurren cuando inicias un proceso por primera vez en una computadora e intenta configurar IE7 / 8 por primera vez. Sin embargo, si tiene una solución sobre cómo silenciar cada instalador de IE en cada máquina, me encantaría escucharla.

De vuelta a mi pregunta prevista. Soy capaz de obtener el comportamiento de suplantación de identidad de IE que deseo * desde el símbolo del sistema usandorunas (gracias ahttps://serverfault.com/questions/70376/runas-domain-account-still-asks-for-password):

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

* nota: no puedo usarrunas para nuestra aplicación WPF por muchas razones, pero laresultado final es lo que quiero

De todos modos, me gustaría el código equivalente a C # que hace unrunas /noprofile /netonly iexplore.exe.

Estoy a mitad de camino con P / Invocar enCreateProcessWithLogonW. Esto es lo que tengo:

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

Esto inicia con éxito Internet Explorer, pero no parece suplantar al usuario en absoluto. Soy capaz de suplantar al usuario a través del comando runas, por lo que estoy 98% seguro de que la falta de autenticación no es una configuración de IE / zone / password / IIS, es algo que no estoy haciendo en mi llamada aCreateProcessWithLogonW().

Una cosa que he notado es que larunas /netonly comando solo funciona si agrego el/noprofile Interruptor, que es algo que me está impidiendo. No tengo idea de cómo configurar el equivalente de este interruptor a través de P / Invoke en C #.

Se agradece la ayuda con cualquiera de las soluciones (resolver el problema "el IE ejecuta un asistente cuando lo ejecuto por primera vez", o encontrar el ajuste P / Invocar raro que me falta).

Respuestas a la pregunta(2)

Su respuesta a la pregunta