Jump to content

DLL bei Systemstart registrieren


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Ausgangssituation: Ein Windows 2003 Server R2 SBS mit einem AD, dazu ein paar Windows XP und Win7-Clients. Die Benutzer melden sich an ihren Clients an die Domäne an.

 

Ich möchte sicherstellen, dass bei jedem Rechnerstart der Clients eine bestimmte DLL registriert ist, die ich über das Netzwerk (auf einer Freigabe des Servers) bereitstelle.

 

Da normale Benutzer auch nur Benutzerrechte (und keine Adminrechte) haben, kann ich also nicht einfach per Anmeldeskript (unter AD-Benutzer und -Computer, zur OU der Nutzer gehen, Eigenschaften, Profil) mir diese DLL vom Netz kopieren und einen regsvr32-Aufruf ausführen.

 

Also war mein nächster Gedanke, dies per Gruppenrichtlinie zu erledigen. Dazu habe ich beim Gruppenrichtlinienobjekteditor ein neues Objekt erstellt und bei Computerkonfiguration, Windows-Einstellungen, Skripts (Start/Herunterfahren), Starten ein Skript hinterlegt, welches sich die DLL in %USERPROFILE% kopiert und dann regsvr32 ausführt. Leider scheint dieses Skript völlig ignoriert zu werden. Zum Test habe ich in diesem Skript die aktuelle Uhrzeit in eine Datei schreiben lassen - diese Datei wird jedoch nie angelegt. Daraus schließe ich, dass eben das Skript gar nicht ausgeführt wird.

 

Was könnte ich noch übersehen haben? Ich bin für jeden Vorschlag dankbar.

Link zu diesem Kommentar
Ausgangssituation: Ein Windows 2003 Server R2 SBS mit einem AD, dazu ein paar Windows XP und Win7-Clients. Die Benutzer melden sich an ihren Clients an die Domäne an.

 

Ich möchte sicherstellen, dass bei jedem Rechnerstart der Clients eine bestimmte DLL registriert ist, die ich über das Netzwerk (auf einer Freigabe des Servers) bereitstelle.

 

Da normale Benutzer auch nur Benutzerrechte (und keine Adminrechte) haben, kann ich also nicht einfach per Anmeldeskript (unter AD-Benutzer und -Computer, zur OU der Nutzer gehen, Eigenschaften, Profil) mir diese DLL vom Netz kopieren und einen regsvr32-Aufruf ausführen.

 

Also war mein nächster Gedanke, dies per Gruppenrichtlinie zu erledigen. Dazu habe ich beim Gruppenrichtlinienobjekteditor ein neues Objekt erstellt und bei Computerkonfiguration, Windows-Einstellungen, Skripts (Start/Herunterfahren), Starten ein Skript hinterlegt, welches sich die DLL in %USERPROFILE% kopiert und dann regsvr32 ausführt. Leider scheint dieses Skript völlig ignoriert zu werden. Zum Test habe ich in diesem Skript die aktuelle Uhrzeit in eine Datei schreiben lassen - diese Datei wird jedoch nie angelegt. Daraus schließe ich, dass eben das Skript gar nicht ausgeführt wird.

 

Was könnte ich noch übersehen haben? Ich bin für jeden Vorschlag dankbar.

 

Was sagt EventLog bezüglich der Richtlinie?

gpupdate /force auf dem Client ausführen - wie ist das Resultat?

 

 

Gruss

Link zu diesem Kommentar

Hallo,

 

das kann auch nicht funktionieren was du da machst.

Du willst eine Datei in %userprofile% kopieren, allerdings ist zu diesem Zeitpunkt (weil du es in der Computereinstellung als Skript gemacht hast) ja noch gar kein Benutzer angemeldet.

 

Warum soll die DLL eigentlich ins %userprofile% und nicht unter system32? Lass Sie doch mal dort hin kopieren testweise mit dem Skript, das geht bestimmt.

Ach und noch etwas: Was gibst du als Quelle zum Kopieren an?

Link zu diesem Kommentar

Hm, also ich habe auch gerade neue Erkenntnisse gewonnen. Ich habe erstmal mit dem Anmeldeskript für einen Nutzer im AD (unter Eigenschaften, Profil) weiter getestet.

 

Aktuell sieht das so aus:

@echo on
echo %time% >> c:\test1\testfile.log
copy /Y "\\server\projecte\10053_Makro\AddIns\Bibliothek\dsofile.dll" C:\test1\
if %ERRORLEVEL% NEQ 0 GOTO ERROR1
regsvr32 /s c:\test1\dsofile.dll
if %ERRORLEVEL% NEQ 0 GOTO ERROR2
GOTO END
:ERROR1
echo ### Fehler (1) beim Kopieren der DLL! ###
pause
GOTO END
:ERROR2
echo ### Fehler (2) beim Registrieren der DLL! ###
pause
:END

Dies führt zum errorlevel 5 bei der Ausführung von regsvr32, was auf nicht ausreichende Rechte hinweist. Ich kann jetzt nochmal probieren, die DLL direkt in %windir%\system32 zu kopieren und dort zu registrieren. Mal schauen, aber ich denke nicht, dass sich da was ändert.

Ok, erwartungsgemäß konnte ich da nicht mal die DLL kopieren, wegen 'Zugriff verweigert'.

 

Hm, offenbar bin ich die ganze Zeit fälschlicherweise davon ausgegangen, dass das Anmeldeskript mit Adminrechten läuft und nicht mit Benutzerrechten.

Link zu diesem Kommentar
Ich habe mir jetzt dieses Kapitel zu den Anmeldeskripts des Buches "Integrationshandbuch Microsoft-Netzwerk" durchgelesen.

 

Muss man also wirklich über so ein Tool wie runas oder psexec (aus der Sysinternals Suite) gehen, wenn man eine DLL per Anmeldeskript registrieren möchte? Oder gibt es noch eine andere Möglichkeit?

 

Einen Dienst schreiben, welcher mit Admin Rechten läuft und bei jedem TS Server für den User eine DLL reggt... klingt mir nach einer sauberen Lösung anstatt von runas / psexec.

Link zu diesem Kommentar
  • 2 Wochen später...

Muß es unbedingt bei der Anmeldung des Benutzers sein? Wenn ja, dann könntest Du es auch mit einem geplanten Task machen. Der Task kopiert und registriert die DLL, allerdings nicht als der Benutzer sondern als System. Dazu muß allerdings auf der Freigabe, in der die DLL liegt auch das System Leserechte haben. Die Authentifizierten Benutzer mit Leserechten hinzufügen sollte ausreichen. Diesen Task kannst Du mit Hilfe der Group Policy Preferences auf den Clients ausrollen. Du kannst natürlich auch einen anderen Benutzer als den SYSTEM verwenden, der Benutzer muß genügen Berechtigungen haben und im Task aus ausführender Benutzer eingetragen sein.

 

Wenn es allerdings als Computerstartupscript ausreicht, dann kopier die DLL in das System32 Verzeichnis und registrier sie in einem Zug.

Link zu diesem Kommentar
"Group Policy Preferences" - unter Download: Group Policy Preferences Overview - Microsoft Download Center - Download Details steht, dass das ein neues Feature von Windows Server 2008 wäre. Ich habe aber hier einen Windows Server 2003 SBS-Rechner.

 

Die Preferences funktionieren auch auf einem W2003 nach Installation von KB943729:

 

CSE, GPP, RSAT - Remote Server Admistration Tool und die neue GPMC

GPP - Group Policy Preferences - Gruppenrichtlinien Einstellungen

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...