origen - registros inaccesibles: security c#
System.Security.SecurityException: no se encontrĂ³ el origen, pero no se pudo buscar algunos o todos los registros de eventos. Registros inaccesibles: seguridad (6)
Estoy intentando crear un servicio de Windows, pero cuando lo intento e instalo, retrocede y me da este error:
System.Security.SecurityException: no se encontró el origen, pero no se pudo buscar algunos o todos los registros de eventos. Registros inaccesibles: seguridad.
No sé qué significa esto: mi aplicación tiene el mínimo, ya que primero estoy probando las cosas.
Mi código de instalador:
namespace WindowsService1
{
[RunInstaller(true)]
public partial class ProjectInstaller : System.Configuration.Install.Installer
{
public ProjectInstaller()
{
//set the privileges
processInstaller.Account = ServiceAccount.LocalSystem;
processInstaller.Username = null;
processInstaller.Password = null;
serviceInstaller.DisplayName = "My Service";
serviceInstaller.StartType = ServiceStartMode.Manual;
//must be the same as what was set in Program''s constructor
serviceInstaller.ServiceName = "My Service";
this.Installers.Add(processInstaller);
this.Installers.Add(serviceInstaller);
}
private void serviceProcessInstaller1_AfterInstall(object sender, InstallEventArgs e)
{
}
private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e)
{
}
}
}
Mi código de servicio:
public partial class Service1 : ServiceBase
{
public Service1()
{
this.ServiceName = "My Service";
}
protected override void OnStart(string[] args)
{
base.OnStart(args);
}
protected override void OnStop()
{
base.OnStop();
}
}
Ejecutar como administrador
Este es un problema muy común que los programadores se están perdiendo
Ejecute su línea de comandos como administrador. Solucionara tu problema
Probablemente estés intentando instalar un servicio usando
- Una cuenta de usuario que no tiene suficientes derechos O
- Un usuario con privilegios de administrador, pero no ejecutó el símbolo del sistema en ''Modo de administrador''.
Específicamente, el problema en este caso es la creación de algunas claves de registro de EventLog durante la instalación del servicio.
Una forma de solucionar este problema es asegurarse de que está ejecutando el símbolo del sistema en el modo Administrador. (Haga clic derecho> Ejecutar como administrador)
También he encontrado algunos casos en los que este método aún no resuelve el problema de SecurityException debido a que algunas claves de registro no tienen permisos de ''Control total'' para las cuentas de administrador.
Las siguientes teclas deben tener configurado ''Control total'' para los administradores para que el servicio pueda escribir en el registro de eventos:
HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Services / EventLog HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Services / EventLog / Application
Esto se puede hacer por:
- Invocando el Editor del Registro de Windows
- Ejecutar [Win + R]
- Tipo ''regedit''
- DE ACUERDO
- Navega por una ruta listada sobre
- Haga clic derecho en la ruta deseada
- Asegúrese de que las casillas de verificación Leer y Control total estén marcadas para Administradores
- Haga clic en Aplicar y Aceptar
- Repite el mismo proceso para la otra ruta.
Resuelvo este mismo problema abriendo la Consola de desarrollador VS2013 con permisos administrativos.
Si se le solicita un nombre de usuario y una contraseña, entonces algo, en algún lugar está configurado como Account = ServiceAccount.User
: esa es la única forma en que podría (debería) suceder. Tal vez su código en el comentario anterior no se esté ejecutando o se esté cambiando de nuevo mediante la ejecución posterior del código.
En cuanto a su segundo párrafo, en general, creo que un servicio estaría bien para esto si no desea que se vea en la consola o se ejecute como una tarea. No estoy seguro si entiendo la parte acerca de ejecutarlo como ASP.NET y no permitirle ver la base de datos ...
Finalmente, en su último párrafo, no puedo hablar con NullExeception sin saber más sobre lo que está sucediendo en el código de su instalador.
installutil la misma excepción al intentar instalar un servicio desde la línea de comandos al usar installutil en Windows 7. La solución fue abrir la línea de comandos como Administrador y luego ejecutar installutil.
También puede resultarle más fácil usar un marco como TopShelf para hospedar sus servicios, ya que administra toda la configuración de la configuración, desde el nombre y la descripción del servicio hasta cómo funcionará su proceso de recuperación. También le permite iniciar fácilmente su servicio desde el IDE cuando lo está depurando.