Heim > Backend-Entwicklung > C++ > Wie können Anwendungen Windows-Dienste ohne Administratorrechte steuern?

Wie können Anwendungen Windows-Dienste ohne Administratorrechte steuern?

DDD
Freigeben: 2024-10-25 09:27:28
Original
683 Leute haben es durchsucht

How Can Applications Control Windows Services Without Administrator Privileges?

Windows-Dienste über Anwendungen ohne Administratorrechte steuern

Windows-Dienste bieten eine bequeme Möglichkeit, lang laufende Aufgaben im Hintergrund ohne Benutzereingriff auszuführen . Allerdings sind zum Starten oder Stoppen dieser Dienste standardmäßig Administratorrechte erforderlich. Dies stellt eine Einschränkung für Anwendungen dar, die Dienste im Auftrag von Benutzern verwalten müssen.

Lösung

Die Lösung für dieses Problem liegt in der Änderung der Berechtigungen des Dienstobjekts. Dadurch können Anwendungen mit dem Dienst interagieren, ohne dass erhöhte Berechtigungen erforderlich sind. Hier ist ein vorgeschlagener Ansatz mit C:

<code class="c++">wchar_t sddl[] = L"D:"
  L"(A;;CCLCSWRPWPDTLOCRRC;;;SY)"           // default permissions for local system
  L"(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)"   // default permissions for administrators
  L"(A;;CCLCSWLOCRRC;;;AU)"                 // default permissions for authenticated users
  L"(A;;CCLCSWRPWPDTLOCRRC;;;PU)"           // default permissions for power users
  L"(A;;RP;;;IU)"                           // added permission: start service for interactive users
  ;

PSECURITY_DESCRIPTOR sd;

if (!ConvertStringSecurityDescriptorToSecurityDescriptor(sddl, SDDL_REVISION_1, &amp;sd, NULL))
{
   // Handle error
}

if (!SetServiceObjectSecurity(service, DACL_SECURITY_INFORMATION, sd))
{
   // Handle error
}</code>
Nach dem Login kopieren

Erklärung

Dieser Code öffnet die Sicherheitsbeschreibung des angegebenen Dienstes und ändert seine DACL (Discretionary Access Control List). Es fügt einen neuen ACE (Zugriffskontrolleintrag) hinzu, der interaktiven Benutzern (Benutzern ohne Administratorrechte) das Recht „Dienst starten“ gewährt.

Um den Dienst ebenfalls zu stoppen, fügen Sie das Recht „Dienst stoppen“ hinzu (WP ) zur Liste:

<code class="c++">L"(A;;RPWP;;;IU)"                           // added permissions: start service, stop service for interactive users</code>
Nach dem Login kopieren

Durch Ändern der Berechtigungen des Dienstobjekts können Sie Anwendungen mit der Möglichkeit ausstatten, Windows-Dienste nahtlos zu verwalten, ohne dass eine Administratorberechtigung erforderlich ist.

Das obige ist der detaillierte Inhalt vonWie können Anwendungen Windows-Dienste ohne Administratorrechte steuern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage