Tengo un servicio de Windows que se ejecuta bajo la cuenta del sistema y ejecuta algunos programas de vez en cuando (sí, sí, sé que es una mala práctica, pero ese no es mi decisión). Necesito configurar la verificación "interactuar con el escritorio" para ver la guía de los programas ejecutados, después de instalar el servicio. He intentado varias maneras, poniendo el código de abajo en AfterInstall o OnCommited controladores de eventos de mi instalador de servicio:Cómo configurar "interactuar con el escritorio" en el instalador de servicio de Windows
ConnectionOptions coOptions = new ConnectionOptions();
coOptions.Impersonation = ImpersonationLevel.Impersonate;
ManagementScope mgmtScope = new System.Management.ManagementScope(@"root\CIMV2", coOptions);
mgmtScope.Connect();
ManagementObject wmiService = new ManagementObject("Win32_Service.Name='" + ServiceMonitorInstaller.ServiceName + "'");
ManagementBaseObject InParam = wmiService.GetMethodParameters("Change");
InParam["DesktopInteract"] = true;
ManagementBaseObject OutParam = wmiService.InvokeMethod("Change", InParam, null);
o
RegistryKey ckey = Registry.LocalMachine.OpenSubKey(
@"SYSTEM\CurrentControlSet\Services\WindowsService1", true);
if(ckey != null)
{
if(ckey.GetValue("Type") != null)
{
ckey.SetValue("Type", ((int)ckey.GetValue("Type") | 256));
}
}
estos dos métodos de "trabajo". Establecieron el cheque, pero después de que inicie el servicio, ejecuta el exe y no se muestra la interfaz gráfica de usuario. Por lo tanto, si detengo el servicio, vuelva a revisarlo y comience nuevamente: ¡bingo! todo comienza y se muestra. La segunda forma de lograr el resultado es reiniciar, después de esto también se muestra la GUI.
Entonces, la pregunta es: ¿hay una forma correcta de establecer la verificación de "interactuar con el escritorio", por lo que comenzará a funcionar sin volver a comprobar y reiniciar?
SO: Windows XP (no hemos probado Vista y 7 sin embargo ...)
intentado utilizar el comando "sc config" - de ninguna manera ... –
intentado utilizar las exportaciones de winapi desde http://www.codeproject.com/KB/vb/WindowsServiceInstall.aspx - sin suerte ... –