c # - System.Security.SecurityException: Kilden blev ikke fundet, men nogle eller alle hændelseslogfiler kunne ikke søges. Utilgængelige logfiler: Sikkerhed

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at oprette en Windows Service, men når jeg prøver at installere den, ruller den tilbage og giver mig denne fejl:



  System.Security.SecurityException: The
  kilde blev ikke fundet, men nogle eller alle
  Hændelseslogfiler kunne ikke søges.
  Utilgængelige logfiler: Sikkerhed.



Jeg ved ikke hvad det betyder - min ansøgning har det minimale minimum, da jeg først tester tingene først.


Min installatørkode:


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)
        {
        }
    }
}


Min servicekode:


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();
    }
}

Bedste reference


Hvis du bliver bedt om et brugernavn og en adgangskode, er der noget, der er angivet til Account = ServiceAccount.User - det er den eneste måde, der kunne (skulle) ske. Måske bliver din kode i kommentaren ovenfor ikke udført eller det bliver ændret tilbage ved senere at udføre kode.


Hvad angår dit andet afsnit, ville jeg generelt tro, at en tjeneste ville være fint for dette, hvis du ikke vil have det på konsollen eller køre som en opgave. Jeg er ikke sikker på, om jeg forstår delen om at køre det som ASP.NET og har det ikke tillader dig at se databasen ...


Endelig kan jeg ikke i din sidste afsnit tale med NullExeception uden at vide mere om, hvad der sker i din installationsprogrammers kode.

Andre referencer 1


Jeg har den samme undtagelse, når jeg prøver at installere en tjeneste fra kommandolinjen, når du bruger installutil i Windows 7. Løsningen var at åbne kommandolinjen som administrator og derefter køre installutil. [4]


Du kan også finde det lettere at bruge en ramme som TopShelf til at være vært for dine tjenester, fordi det styrer alle opsætningskonfigurationer fra navn og beskrivelse af tjenesten til, hvordan din genoprettelsesproces vil fungere. Det giver også mulighed for nemt at starte din service indefra IDE, når du fejler den. [5] [6]

Andre referencer 2


Kør din kommandoprompt som administrator.
Det løser dit problem

Andre referencer 3


Kør som administrator



Dette er et meget almindeligt problem, som programmører mangler

Andre referencer 4


Jeg løser det samme problem ved at åbne VS2013 Developer Console med administrative tilladelser.

Andre referencer 5


Du forsøger sandsynligvis at installere en tjeneste ved hjælp af



  1. En brugerkonto, som ikke har tilstrækkelige rettigheder
    OR

  2. En bruger med administratorrettigheder, men kørte ikke kommandoprompt i 'administratortilstand'.



Specifikt er problemet i dette tilfælde oprettelsen af ​​nogle EventLog-registreringsnøgler under serviceinstallationen.


En måde at løse dette på er at sikre, at du kører kommandoprompt i administratortilstand. (Højreklik på> Kør som administrator)


Jeg har også fundet nogle tilfælde, hvor denne metode stadig ikke løser problemet SecurityException på grund af, at nogle registreringsnøgler ikke har 'Full Control' -tilladelser til administratorkonti.


Følgende nøgler skal have 'Fuld kontrol' indstillet til Administratorer for at tjenesten skal kunne skrive til EventLog:


HKEY\_LOCAL\_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ EventLog
HKEY\_LOCAL\_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ EventLog \ Application


Dette kan ske ved:



  1. Indkalder Windows Registry Editor


    • Kør [[Win + R]]

    • Skriv 'regedit'

    • OK


  2. Naviger en sti, der er angivet omkring

  3. Højreklik på den ønskede vej

  4. Kontroller, at både afkrydsningsfelterne Læs og Fuld kontrol er markeret for administratorer

  5. Klik på Anvend og OK

  6. Gentag den samme proces for den anden vej