Recibo este error cuando intento iniciar un servicio de Windows que he creado en C #:
Mi código hasta ahora:
private ServiceHost host = null;
public RightAccessHost()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
host = new ServiceHost(typeof(RightAccessWcf));
host.Open();
}
protected override void OnStop()
{
if (host != null)
host.Close();
host = null;
}
Actualización n. ° 1
Resolví el problema anterior otorgando permisos a la cuenta SERVICIO DE RED, pero ahora tengo otro problema:
Actualización n. ° 2
No se puede iniciar el servicio. System.InvalidOperationException: el servicio 'RightAccessManagementWcf.RightAccessWcf' no tiene puntos finales de aplicación (no de infraestructura). Esto puede deberse a que no se encontró ningún archivo de configuración para su aplicación, a que no se pudo encontrar ningún elemento de servicio que coincida con el nombre del servicio en el archivo de configuración o a que no se definieron puntos finales en el elemento de servicio. en System.ServiceModel.Description.DispatcherBuilder. TimeSpan timeout) en System.ServiceModel.Channels.CommunicationObject.
fuente
Respuestas:
Me doy cuenta de que esta publicación es antigua, pero no hay una solución marcada y solo quería contar cómo resolví esto.
El primer
Error 5: Access Denied
error se resolvió otorgando permisos al directorio de salida de laNETWORK SERVICE
cuenta.El segundo
Started and then stopped
error parece ser un mensaje genérico cuando algo falló en el servicio. Consulte el Visor de eventos (específicamente los 'Registros de Windows> Aplicación') para ver el mensaje de error real.En mi caso, fue una configuración de servicio incorrecta en app.config.
fuente
Computadora -> Administrar -> Servicio -> Propiedades de [su servicio]. Luego, la pestaña con la información de la cuenta. Juega con esas configuraciones, como ejecutar el servicio con una cuenta de administrador o algo así.
Eso lo hizo por mí.
EDITAR: Lo que también puede ser el problema es que, la mayoría de los servicios se ejecutan como cuentas
LOCAL SERVICE
oLOCAL SYSTEM
. Ahora, cuando se ejecutaC:/my-admin-dir/service.exe
con esas cuentas pero no se les permite ejecutar nada en ese directorio, obtendráerror 5
. Así que ubique el ejecutable del servicio, RMB el directorio -> Propiedades -> Seguridad y asegúrese de que la cuenta con la que se ejecuta el servicio esté en la lista de usuarios que pueden tener control total sobre el directorio.fuente
Esto funcionó para mí.
fuente
También obtuve el mismo error, se resolvió haciendo clic derecho en Servicio> Propiedades> Iniciar sesión> iniciar sesión como: Cuenta del sistema local.
fuente
Asegúrese de que
Path to executable
apunte a un ejecutable real (haga clic con el botón derecho en el servicio -> Propiedades -> pestaña General). A través de powershell (y sc.exe) puede instalar un servicio sin apuntar a un ejecutable real ... ejem.fuente
Tengo la solucion:
ahora puede intentar iniciar el servicio.
fuente
En mi caso, no se verificó lo siguiente.
fuente
Recibí este error porque leí mal la respuesta aceptada desde aquí: Crear el servicio de Windows desde el ejecutable .
Porque
<path_to_service_executable>
, estaba usando la ruta de la carpeta del ejecutable, por ejemploC:\Folder
.Debe ser la ruta del ejecutable , por ejemplo
C:\Folder\Executable.exe
.fuente
Para mí, la carpeta desde la que se iba a ejecutar el servicio y los archivos que contiene se cifraron con la opción "Cifrar" de Windows. Quitando eso y - ¡voilá!
fuente
Este error ocurre cuando hay un error en su
OnStart
método. No puede abrir un host directamente en elOnStart
método porque en realidad no se abrirá cuando se lo llame, sino que esperará el control. Entonces tienes que usar un hilo. Este es mi ejemplo.fuente
si tiene un código de error de acceso denegado 5. entonces probablemente en su código su servicio está tratando de interactuar con algunos archivos en el sistema como escribir en un archivo de registro
abra la
log on
pestaña de selección de propiedades de servicios y marque la opción para permitir que el servicio interactúe con el escritorio,fuente
Una de las causas de este error son los permisos insuficientes (usuarios autenticados) en su carpeta local. Para otorgar permiso para 'Usuarios autenticados' Abra la pestaña de seguridad en las propiedades de su carpeta, Edite y agregue el grupo 'Usuarios autenticados' y aplique los cambios.
Una vez hecho esto, pude ejecutar servicios incluso a través de la cuenta de servicio de red (antes de esto, solo podía ejecutar con la cuenta del sistema local).
fuente
Tuve el servicio de Windows alojado usando OWIN y TopShelf. No pude iniciarlo. Mismo error: "Acceso denegado 5"
Terminé dando todos los permisos a mi bin / Debug.
El problema aún no se resolvió.
Así que eché un vistazo a los registros de eventos y resultó que
Microsoft.Owin.Host.HttpListener
no estaba incluido en la biblioteca de clases que contiene la clase de inicio OWIN.Por lo tanto, asegúrese de verificar el registro de eventos para identificar la causa raíz antes de comenzar a obtener permanentes, etc.
fuente
En mi caso, tuve que agregar 'Usuarios autenticados' en la lista de 'Nombres de grupos o usuarios' en la carpeta donde se instaló el ejecutable.
fuente
Es posible que su código se esté ejecutando en el contexto de seguridad de un usuario al que no se le permite iniciar un servicio.
Dado que está utilizando WCF, supongo que está en el contexto del SERVICIO DE RED.
ver: http://support.microsoft.com/kb/256299
fuente
Utilice la cuenta LocalSystem en lugar de la cuenta LocalService en el instalador de servicios.
Puede hacer esto desde el siguiente cambio en la vista de diseño de su instalador de servicio:
Propiedades del instalador de proceso de servicio -> Establecer cuenta en LocalSystem.
o haciendo el siguiente cambio en el archivo designer.cs de su instalador de servicios:
fuente
Haga clic derecho en
service
en service.msc y seleccioneproperty
.Verá una ruta de carpeta
Path to executable
como C: \ Users \ Me \ Desktop \ project \ Tor \ Tor \ tor.exeNavegue a C: \ Users \ Me \ Desktop \ project \ Tor y haga clic derecho en Tor.
Seleccionar
property
,security
,edit
y luegoadd
. En el campo de texto ingreseLOCAL SERVICE
, haga clic en Aceptar y luego marque la casillaFULL CONTROL
Haga clic de
add
nuevo, luego ingreseNETWORK SERVICE
, haga clicok
, marque la casillaFULL CONTROL
Luego haga clic en Aceptar (en la parte inferior)
fuente
Echar un vistazo a
Process Utilities > Process monitor
partir http://www.sysinternals.com .Esta es una herramienta que le permite monitorear lo que hace un proceso. Si supervisa este proceso de servicio, debería ver un acceso denegado en algún lugar y en qué recurso se le da el acceso denegado.
fuente
Para el error 5, hice lo contrario a la solución anterior. "El primer error 5: Error de acceso denegado se resolvió otorgando permisos al directorio de salida a la cuenta de SERVICIO DE RED".
Cambié la mía a la cuenta local, en lugar de la cuenta de servicio de red, y como inicié sesión como administrador funcionó
fuente
Si recibe este error en una máquina servidor, intente dar acceso a la carpeta donde obtuvo el exe real de servicio de Windows. Debe ir a la pestaña de seguridad y seleccionar el Servicio local como usuario y debe otorgar acceso completo. También deberías hacer lo mismo con el exe.
fuente
He monitoreado sppsvc.exe usando el monitor de proceso y descubrí que estaba intentando escribir en la clave HKEY_LOCAL_MACHINE \ SYSTEM \ WPA. Después de otorgar permisos a NETWORK SERVICE en esta clave, pude iniciar el servicio y Windows de repente reconoció que estaba activado nuevamente.
fuente
Accidentalmente configuré mi servicio para que se ejecutara porque la
Local service
solución era cambiar aLocal System
fuente
Después de golpear mi mano contra mi escritorio durante unas horas tratando de resolver esto, ¡de alguna manera mi método "Principal" se vació de su código!
Otras soluciones que encontré:
Asegurarse de que el nombre del servicio dentro de InitializeComponent () coincida con la propiedad del nombre del servicio del instalador
Y un buen reinicio del servidor no está de más
Szhlopp
fuente
En caso de que el sistema se quede sin espacio libre en el disco local.
fuente
Tuve este problema hoy en un servicio que estaba desarrollando, y ninguna de las otras sugerencias sobre esta pregunta funcionó. En mi caso, faltaba una dependencia .dll en la carpeta desde la que se ejecutaba el servicio.
Cuando agregué las dependencias, el problema desapareció.
fuente
En mi caso, mantuve el proyecto en el escritorio y para acceder al escritorio necesitamos agregar permiso a la carpeta, así que simplemente moví la carpeta del proyecto al directorio C: \, ahora está funcionando como un encanto.
fuente
No sé si mi respuesta tendría sentido para muchos, pero yo también enfrenté el mismo problema y la solución fue escandalosamente simple. Todo lo que tenía que hacer era abrir el programa que usé para ejecutar el código como administrador. (clic derecho -> Ejecutar como administrador).
Eso fue todo.
fuente
Como sugiere la ventana emergente de error, esto está relacionado con el permiso. Así que ejecute el servicio como cuenta "LocalSystem".
Para hacer lo mismo, haga clic derecho
serviceProcessInstaller -> Properties -> Account
y configúrelo en"LocalSystem"
lugar del predeterminado"User"
. Instala el servicio y listo.fuente
compruebe el registro de eventos de Windows para ver un mensaje de error detallado. Resolví lo mismo después de verificar el registro de eventos.
fuente
Tuve este problema en un servicio que estaba implementando y ninguna de las otras sugerencias sobre esta pregunta funcionó. En mi caso, fue porque mi .config (xml) no era válido. Cometí un error de copiar y pegar al copiar de qualif a prod.
fuente