Signatur
Beschreibung
win32_add_right_access_service() ist Teil der win32service-Erweiterung für PHP unter Windows und ermöglicht es, einem bestimmten Benutzeraccount Zugriffsrechte auf einen registrierten Windows-Dienst (Service) zu gewähren. Damit kann der Dienst z. B. von diesem Benutzer gestartet, gestoppt oder abgefragt werden, ohne dass Administrator-Rechte erforderlich sind.
Die Funktion ist ausschließlich unter Windows verfügbar und erfordert, dass die win32service-Erweiterung installiert und aktiviert ist. Sie muss in der Regel mit erhöhten Rechten (z. B. als Administrator) ausgeführt werden, da das Ändern von Dienst-ACLs systemweite Berechtigungen erfordert.
Typischer Anwendungsfall ist die Einrichtung eines Windows-Dienstes, bei der nicht-administrative Benutzer oder Dienstkonten (z. B. ein dedizierter PHP-Prozessbenutzer) Kontrolle über den Dienst erhalten sollen, ohne vollständige Administratorrechte zu besitzen.
Schlägt die Operation fehl, wird seit Version 0.4.0 eine Win32ServiceException geworfen, weshalb der Aufruf in einem try/catch-Block erfolgen sollte.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $service_name Pflicht | string | Der interne Name (nicht der Anzeigename) des Windows-Dienstes, für den die Zugriffsrechte gesetzt werden sollen, z. B. 'MyPhpService'. |
|
| $username Pflicht | string | Der Windows-Benutzername, dem Zugriffsrechte gewährt werden sollen. Kann in der Form 'DOMAIN\\username' oder nur 'username' für lokale Konten angegeben werden. |
Rückgabewert
Win32ServiceException geworfen.Beispiele
Zugriffsrechte für einen lokalen Benutzer hinzufügen
<?php
// Erfordert die win32service-Erweiterung und Administratorrechte
try {
win32_add_right_access_service('MyPhpService', 'localuser');
echo "Zugriffsrechte für 'localuser' auf den Dienst 'MyPhpService' erfolgreich gesetzt.";
} catch (Win32ServiceException $e) {
echo "Fehler beim Setzen der Rechte: " . $e->getMessage();
}
Zugriffsrechte für einen Domänenbenutzer hinzufügen
<?php
// Dienst-Zugriffsrechte für einen Domänenbenutzer setzen
$serviceName = 'MyPhpService';
$username = 'MYDOMAIN\\svcaccount';
try {
win32_add_right_access_service($serviceName, $username);
echo "Benutzer '{$username}' hat nun Zugriffsrechte auf den Dienst '{$serviceName}'.";
} catch (Win32ServiceException $e) {
echo "Fehler: " . $e->getCode() . ' - ' . $e->getMessage();
}
// Wichtig · Fallstricke
Wichtig: Diese Funktion ist ausschließlich unter Windows verfügbar und setzt die Installation der win32service PECL-Erweiterung voraus. Unter Linux oder macOS ist sie nicht verfügbar.
Berechtigungen: Das ausführende PHP-Skript bzw. der PHP-Prozess benötigt Administratorrechte, um die ACL (Access Control List) eines Windows-Dienstes ändern zu können. Andernfalls schlägt die Funktion fehl und wirft eine Win32ServiceException.
Versionsinformation: Ab Version 0.4.0 der win32service-Erweiterung werden Fehler als Ausnahmen vom Typ Win32ServiceException geworfen statt Fehlercodes zurückzugeben. Ältere Codebeispiele mit Rückgabewert-Prüfung sind daher veraltet.