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