Start · Sprachen · PHP · Referenz · win32_add_right_access_service

win32_add_right_access_service

Funktion

Fügt einem Windows-Benutzernamen Zugriffsrechte für einen Windows-Dienst hinzu.

seit PHP 0.4.0 Kategorie: misc

Signatur

win32_add_right_access_service(string $service_name, string $username): void

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

Typ
void
Beschreibung
Die Funktion gibt keinen Wert zurück. Bei einem Fehler wird eine 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 'localuser' auf den Dienst 'MyPhpService' erfolgreich gesetzt.

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();
}
Benutzer 'MYDOMAIN\svcaccount' hat nun Zugriffsrechte auf den Dienst 'MyPhpService'.

// 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.