Heim >Backend-Entwicklung >C++ >Wie kann ich einen Windows-Dienst aus einer Anwendung ohne Administratorrechte starten?

Wie kann ich einen Windows-Dienst aus einer Anwendung ohne Administratorrechte starten?

Linda Hamilton
Linda HamiltonOriginal
2024-10-25 03:52:02484Durchsuche

How can I start a Windows service from an application without administrator rights?

Starten eines Windows-Dienstes ohne Administratorrechte von einer Anwendung aus

In einigen Szenarien möchten Sie möglicherweise einen Windows-Dienst von einer separaten Anwendung aus steuern ohne dass Administratorrechte erforderlich sind. Die Standardberechtigungen für Dienste verhindern jedoch häufig, dass Benutzer diese Aufgabe ausführen.

Lösung: Dienstberechtigungen ändern

Die Lösung besteht darin, die Sicherheitsbeschreibung des Dienstes zu ändern, dem die Berechtigung erteilt werden soll Nicht-Administratoren. So geht's:

  1. Öffnen Sie das Service-Handle:Erlangen Sie ein Service-Handle mit der Berechtigung WRITE_DAC.
  2. Erstellen Sie eine Sicherheitsbeschreibung: Erstellen Sie mithilfe der Security Descriptor Definition Language (SDDL) eine Sicherheitsbeschreibung, um die gewünschten Berechtigungen anzugeben. In diesem Beispiel gewähren wir interaktiven Benutzern das Recht „Dienst starten“:
<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
  ;</code>
  1. SDDL in Sicherheitsbeschreibung konvertieren: Verwenden Sie die Funktion „ConvertStringSecurityDescriptorToSecurityDescriptor“, um die zu konvertieren SDDL-Zeichenfolge in eine Sicherheitsbeschreibung.
  2. Dienstsicherheit festlegen: Weisen Sie die geänderte Sicherheitsbeschreibung dem Dienstobjekt mithilfe der SetServiceObjectSecurity-Funktion zu.

Befolgen Sie diese Schritte können Sie Benutzern ohne Administratorrechte die Möglichkeit gewähren, den Dienst aus Ihrer Anwendung heraus zu starten und zu stoppen, ohne die Systemsicherheit zu beeinträchtigen.

Das obige ist der detaillierte Inhalt vonWie kann ich einen Windows-Dienst aus einer Anwendung ohne Administratorrechte starten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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