c # - Hvorfor har en identificeret identitet mindre rettigheder end den oprindelige identitet?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en ASP.NET MVC2 Service, som er hostet af en cassini/http.sys baseret webserver. Serviceprocessen kører som lokal administrator.


Nej, jeg vil gerne læse status for en tjeneste ved hjælp af:


using (var sc = new ServiceController(\_ServiceName))
{
    return sc.Status == ServiceControllerStatus.Running;
}


Dette virker godt, da impersonation er slukket. Men jeg vil gerne bruge Windows-godkendelse og efterligning. Så når jeg tilføjer


<identity impersonate="true" />


til web.config. Opkaldet til sc.Status fejler med en InvalidOperationException. Den indvendige undtagelse er Win32Exception/ACCESS\_DENIED.


"System.InvalidOperationException" caught. 
Message=Cannot open service 'abcd' on computer '.' .
Source=System.ServiceProcess
StackTrace:
   at System.ServiceProcess.ServiceController.GetServiceHandle(Int32 desiredAccess)
   at System.ServiceProcess.ServiceController.Start(String[] args)
   at System.ServiceProcess.ServiceController.Start()
InnerException: System.ComponentModel.Win32Exception
   Message=Access denied
   ErrorCode=-2147467259
   NativeErrorCode=5
   InnerException: 


Den identificerede identitet er den samme som procesidentiteten. Så hvorfor har den efterligne identitet mindre adgangsrettigheder end procesidentiteten? Og hvordan kan man undgå det?


System: Windows 7, UAC aktiveret

Bedste reference


Sandsynligvis er din server ikke betroet til delegation. [4]

Andre referencer 1


Bemærk venligst at jeg har løst ovenstående problem - se mit indlæg her: ServiceController.start () og ServiceController.stop () kaster undtagelser? og den oprindelige artikel her: https://thommck.wordpress.com/2011/12/02/how-to-allow-non-admins-to-start-and-stop-system-services/ [[[6]