Log on as Service via GPO

Gestern war ich bei einem unserer Kunden vor Ort um ein Update der CRM Software zu installieren.

In dieser neuen Version nutzt die Software einen „Update Service“(Windows Dienst der Upates automatisch installiert) der sich von einem Netzwerkshare die Hotfixes / Updates lädt und diese dann installiert. Da der Service Zugriff auf das Netzlaufwerk braucht kann er nicht als „SYSTEM“ laufen, der User und das Passwort werden in einer INI-Datei des Dienstes (Passwort ist zwar verschlüsselt… aber naja) hinterlegt und der Dienst läuft dann im Kontext dieses Benutzers.

Dummerweise war dieses Konto aber gar nicht berechtigt sich als Dienst anzumelden. Diese Einstellung kann man ja über eine GPO verteilen… nach einer kurzen Prüfung stellte sich heraus, dass das nicht zufriedenstellend funkioniert. Die lokalen Einstellungen werden duch die GPO überschrieben und nicht ergänzt. Doch in meinem Hinterkopf machte sich ein Tool aus dem Windows Server 2003 Resource Kit bemerkbar:

ntrights.exe hieß das gute Stück. Mit diesem kann man einem Benutzerkonto ganz bestimmte Rechte zuweisen, auch unter Windows 7 ist dies kein Problem. (http://support.microsoft.com/kb/315276/)

Also habe ich ein Startup-Script für die betroffenen PCs per GPO verteilt in dem der Account entsprechend berechtigt wird:


@ECHO OFF
set log = %temp%\ntrights.log

if exist c:\support\flag.txt goto eof

if exist C:\support goto copy
echo create directory >> %$log%
md c:\support

:copy
if exist c:\support\ntrights.exe goto setrights
echo copy ntrights>> %$log%
robocopy \\domain.intern\SysVol\domain.intern\Policies\{29DF8DC2-9A6D-4549-BB1B-23E5A370FFB2}\Machine\Scripts\Startup\ c:\support ntrights.exe
echo %errorlevel% >> %$log%

:setrights
if exist c:\support\flag.txt goto eof
echo Setting rights >> %$log%
cd /d c:\support
c:\support\Ntrights.exe -u domain\cas_cl_inst +r SeServiceLogonRight

if %errorlevel% == 0 echo %errorlevel% > c:\support\flag.txt
echo Set rights successful >> %$log%

:eof
echo EOF >> %$log%
exit

Nach einem Neustart haben alle PCs angefangen sich das Update zu installieren. Durch die Nutzung der Flag-Datei wird der Befehl nicht bei jedem Start des PCs ausgeführt.