2010-08-31 18 views
7

Tengo un archivo por lotes que he estado usando para instalar mis Servicios de Windows C# por un tiempo, nunca tuve un problema hasta Windows 7. He intentado ejecutar el archivo por lotes con privilegios de administrador. Intenté ejecutar el símbolo del sistema con privs de administrador, navegar al servicio EXE de Windows y ejecutar InstallUtil allí. Aún no funciona.Instalación de C# Windows Service en Windows 7

Después de leer algunas otras sugerencias intenté mover mis archivos fuera de la carpeta/bin y ejecutarlos desde otra ubicación, pero tampoco funcionó.

archivo El lote se ve así

@ECHO OFF 

REM The following directory is for .NET 2.0 
set DOTNETFX2=%SystemRoot%\Microsoft.NET\Framework\v2.0.50727 
set PATH=%PATH%;%DOTNETFX2% 

echo Installing IEPPAMS Win Service... 
echo --------------------------------------------------- 
InstallUtil /i IEPPAMS_WinService1.exe 
echo --------------------------------------------------- 
echo Done. 

y tengo un archivo de registro que yo tiro Info a instalar. Si hago doble clic en el archivo .bat obtengo

Ejecutando una transacción de instalación.

Comenzando la fase de instalación de la instalación . Consulte el contenido del archivo de registro para el progreso del ensamblado C: \ Users \ Justin \ Desktop \ service \ IEPPAMS_WinService1.exe . El archivo es ubicado en C: \ Users \ Justin \ Desktop \ service prueba \ IEPPAMS_WinService1.InstallLog.

Ocurrió una excepción durante la fase de instalación . System.InvalidOperationException: No se puede abrir Service Control Manager en computadora '.'. Esta operación podría requerir otros privilegios. La excepción interna System.ComponentModel.Win32Exception se lanzó con el siguiente mensaje de error : Acceso denegado.

Se inicia la fase de restauración de la instalación . Consulte el contenido del archivo de registro para el progreso del ensamblado C: \ Users \ Justin \ Desktop \ service \ IEPPAMS_WinService1.exe . El archivo es ubicado en C: \ Users \ Justin \ Desktop \ service prueba \ IEPPAMS_WinService1.InstallLog.

La fase de restitución completó con éxito.

La transacción finalizó.

Cuando ejecuto el archivo .bat con privilegios de administrador, no se escribe nada en el archivo de registro y el servicio aún no está instalado.

¿Alguna idea? ¿Hay una nueva forma de instalar servicios en Windows 7?

Respuesta

8

Así que pude solucionar el problema escribiendo en la línea de comandos toda la ruta a InstallUtil y funcionó. Así que después de navegar a la carpeta que tenía mi EXE he escrito lo siguiente:

C: \ Windows \ Microsoft.NET \ Framework \ v4.0.21006 \ installutil.exe IEPPAMS_WinService1.exe

No

seguro de por qué tengo que hacer eso en Windows 7 ahora cuando nunca tuve que hacerlo en XP, pero bueno. ¡Gracias por todas las sugerencias!

+1

Estoy buscando hacer lo mismo que estás haciendo aquí. Me acabo de dar cuenta de que para su 'Solución' aquí está usando el installutil.exe en su directorio .NET 4.0. En su pregunta original, estaba usando .NET 2.0 para instalar. (establecer DOTNETFX2 =% SystemRoot% \ Microsoft.NET \ Framework \ v2.0.50727) –

+0

Excelente punto. Siento que cuando estaba pasando por cosas que traté de ir a .NET 4.0 y que no funcionó. Luego, cuando fui al camino completo, funcionó. No volví a probar la ruta completa en 2.0 y esto fue hace unos meses, así que puedo recordar mal. –

+0

¡Sí, esta es la respuesta! ¡Me costó un día para hombre! –

11

Haga clic con el botón derecho en el archivo por lotes y ejecútelo como Administrador.

Lo más probable es que se encuentre con el nuevo modelo de seguridad (Control de cuentas de usuario) de Windows Vista y Windows 7. Incluso si está ejecutando una cuenta que tiene derechos de administrador, necesitará elevar para hacer algunas (la mayoría) actividades administrativas.(Sí, es posible desactivar esta característica, pero no lo hacen)

Editar ... La correcta la línea de comando es InstallUtil YourApp.exe. El /i no parece ser un interruptor vaild para InstallUtil.

+0

Matthew, gracias, pero lo intenté. Los resultados se describen al final de mi pregunta. –

+0

@Justin, intente iniciar Command Window como administrador y luego intente ejecutar el comando manualmente. Parece ser un problema de permisos, pero sin sentarse en su máquina es difícil adivinar qué permiso está causando el problema. –

+1

Por cierto, ¿trataste de buscar en ese archivo de registro? –

3

Cuando ejecuto el archivo .bat con privilegios de administrador, no se escribe nada en el archivo de registro y el servicio aún no está instalado.

En primer lugar, TIENE que ejecutar como permisos de administrador.

Segundo, cuando "Ejecutar como administrador", realmente cambia el directorio a c: \ windows \ system32 como el directorio inicial (no sé por qué), lo que probablemente explicaría por qué ejecutar como administrador no provoca ningún archivo de registro. Cambiar manualmente a la ruta IEPPAMS_WinService1.exe reside en que el inicio de su secuencia de comandos.