Einsatz von Batchdateien unter Windows 9x (autoexec.bat)

(2132 Worte insgesamt im Text)
(10079 mal aufgerufen)  Druckerfreundliche Ansicht [1]

Letzte Änderung: 08.09.2005

Inhalt


Die Windows-Anmeldeprozedur

Unter Windows werden direkt nach dem Rechnerstart die Dateien config.sys, autoexec.bat und msdos.sys abgearbeitet.

Da es sich bei der autoexec.bat um eine sogenannte Batch-Datei - also eine reine Textdatei mit der Erweiterung '.bat' handelt, in welcher DOS Befehle so untereinander (in einem Stapel) stehen wie man sie in DOS - Box eingeben müsste, kann man hier eigene DOS-Kommandos unterbringen und damit schon vor dem eigentlichen Windows-Start ein wenig aufräumen.

Einige DOS-Kommandos

Ein ein paar Beispiele:

rem Bemerkung - der Text hinter "rem" wird von Windows nicht berücksichtigt.
@echo Echo (Ausgabe des Befehls am Bildschirm) in dieser Zeile unterdrücken.
@echo off Echo generell ausschalten.
@echo on Echo generell einschalten.
echo. Leere Zeile ausgeben. (Der Punkt direkt hinter dem echo ist wichtig.
echo hallo Das Wort 'hallo' auf dem Bildschirm ausgeben.
copy Dos-Befehl: Kopiere eine Datei
move Dos-Befehl: Verschiebe eine Datei
:name Name einer Sprungmarke
set Zeige die gespeicherten (Umgebungs-)Variablen an.
goto name Springe zu Sprungmarke name.
if exist x start y Wenn die Datei 'x' existiert, dann starte 'y'
xcopy Kopiere alle Dateien im Verzeichnis

Natürlich kennen auch die Schüler früher oder späterden Trick mit der autoexec.bat - deshalb haben wir zur Sicherung zwei Änderungen eingebaut:

  1. Während sich der Computer noch im "Dos-Modus" befindet - also die autoexec.bat abarbeitet - wird die Konsole gesperrt. Damit sind keine Tastatureingaben mehr möglich.
  2. Die autoexec.bat wird bei jeder Anmeldung mit der gleichlautenden Datei vom Server überschrieben. Damit werden Änderungen, die ein Schüler evtl. an der Datei vornimmt,beim nächsten Anmelden automatisch gelöscht. Außerdem lassen sich Änderungen an dieser Datei so leichter auf alle Rechner verteilen.

autoexec.bat - Vorlage

In der Tabelle steht der genaue Wortlaut der Datei, welche Sie sich hier herunterladen können... [9]

Allerdings gehört zu dieser Datei noch eine zusätzliche Datei namens "ja.dat [10]", welche eine Bestätigung für das Löschen aller ungeschützten Dateien im Stammverzeichniss C:\\\\ gibt. Bitte laden Sie also auch diese Datei herunter und verschieben Sie sie gleich in das Verzeichnis C:\\\\windows. (Die Datei enthält nur ein einfaches 'j' mit einem Zeilenvorschub.)

Bitte nehmen Sie sich einen Augenblick Zeit und lesen Sie sich die Datei ruhig einmal durch. Sie ist ausführlilch kommentiert, so dassSie leicht Änderungen vornehmen können - teilweise (insbesondere bei den "Programmbezogenen Einstellungen [11]" oder bei der De-Aktivierung des Diskettenlaufwerks [12]) müssen Sie das sogar!

Bitte beachten Sie, dass durch das Löschen des temporären Ordners bei Programminstallationen, die einen Neustart des Rechners verlangen, unter Umständen wichtige Dateien für diese neu installierten Programme gelöscht werden können!

Wenn Sie also neue Software installieren, dann sollten Sie den entsprechenden Eintrag mit einem vorangestellten "rem" auskommentieren - er wird dann nicht abgearbeitet.

@echo off
rem Bildschirm loeschen
cls<
rem Dann eine kleine Meldung fuer Ungeduldige:
echo Systemdaten werden eingelesen.
echo.
echo (c) 2005
echo.
echo.
echo Moment...
rem Sperren der Konsole
rem Mit nachfolgendem Befehl sorgt man dafuer, dass
rem keinerlei Meldungen mehr auf dem Bildschirm
rem erscheinen.
ctty nul
rem Systembezogene Einstellungen
rem ============================
rem Beschleunigung der nachfolgenden Plattenzugriffe
smartdrv
rem Allgemeine Systemeinstellungen<
mode con codepage prepare=((850)
C:\\\\WINDOWS\COMMAND\ega.cpi)
mode con codepage select=850
mode con rate=32 delay=1
keyb gr,850,C:\\\\WINDOWS\COMMAND\keyboard.sys
rem sortierte Inhaltsverzeichnisse auf DOS-Ebene
set dircmd=/o
rem setze Verzeichnis für temporäre Dateien
set temp=c:\\\\windows\temp
set tmp=c:\\\\windows\temp
rem Korrektur der Plattenlabels
label c: Festplatte
rem Stammverzeichnis aufraeumen
attrib c:\\\\*.* -a -s -h -r
attrib c:\\\\io.sys +s +h +r
attrib c:\\\\command.com +r +h
attrib c:\\\\config.sys +r +h
attrib c:\\\\autoexec.bat +r +h
attrib c:\\\\msdos.sys +r +h
attrib c:\\\\win386.swp +r
del c:\\\\*.* < c:\windows\ja.dat
attrib c:\\\\win386.swp -r +h
rem Loeschen ueberfluessiger Verzeichnisse.
deltree /y c:\\\\recycled
deltree /y c:\\\\windows\cookies
deltree /y c:\\\\windows\desktop
deltree /y c:\\\\windows\downlo~1
deltree /y c:\\\\windows\favori~1
deltree /y c:\\\\windows\history
deltree /y c:\\\\windows\recent
deltree /y c:\\\\windows\startm*
deltree /y c:\\\\windows\temp
deltree /y c:\\\\windows\tempor~1
rem Neuanlegen notwendiger Verzeichnisse
md c:\\\\windows\temp
rem Verbiegen des Diskettenlaufwerks, damit es nicht mehr
rem funktioniert. Das erspart die
Laufwerksschloesser,
rem wenn es auch nur ein recht geringer Schutz ist.
rem Immerhin besser, als keiner. Ich denke da vor allem
rem auch an Computerviren.
subst a: c:\\\\temp
rem Anmeldedateien loeschen. Ist gut gegen die Aus-
rem spaeh-Spezialisten, die mit Back-Orifice arbeiten und
rem aehnlichen unangenehmen icon_wink )) Dingen.
deltree /y c:\\\\windows\*.pwl
rem Ausserdem noch die persönlichen Einstellungen
rem die liegen sowieso auf dem Server...
deltree /y c:\\\\windows\*.acl
rem Bilder aus dem Ordner Windows löschen
rem die haben da nichts zu suchen!
deltree /y c:\\\\windows\*.bmp
deltree /y c:\\\\windows\*.jpg
deltree /y c:\\\\windows\*.gif
rem Programmbezogene Einstellungen
rem ==================================
rem Aktivieren der Soundkarte
rem Office-Umgebundsvariablen setzen
rem ...mal selbst in der alten autoexec.bat nachsehen!
rem Vorbereitungen abgeschlossen
rem ==================================
rem Abschalten des Festplatten-Caches.
rem smartdrv c-
rem Freigeben der Konsole
ctty con:
rem Begruessungstext
cls
echo Der Rechner wurde korrekt gestartet.
echo.
echo Viel Spass bei der Arbeit!
echo.
echo.

Bitte vergleichen Sie diese Datei mit ihrer ursprünglichen autoexec.bat: oft werden hier noch zusätzliche Treiber geladen, die natürlich von Computer zu Computer unterschiedlich sind. Fügen Sie einfach die entsprechenden Zeilen in der neuen autoexec.bat hinter Programmbezogene Einstellungen [13] ein.

Sollten Sie für die einzelnen Computer unterschiedliche Treiber benötigen, so wird die Sache etwas komplizierter, aber nicht unmöglich: Sie müssen dann diese Treiberaufrufe in eine eigene Datei (z.B. treiber.bat) kopieren und diese Datei wiederum in der autoexec.bat aufrufen. Dann kann weiterhin die autoexec.bat vom Server kopiert werden - nur die Datei treiber.bat müsste bei jedem Computer anders aussehen - und evtl. noch zusätzlich geschützt (z.B. durch Kopieren in den Ordner c:\\\\windows und Anwenden der Atribute wie oben zu sehen) werden.

Dafür hat sich ein Aufruf innerhalb der Datei sehr bewährt:

if exist c:\\\\windows\rechner1.dat goto rechner01
if exist c:\\\\\windows\rechner2.dat goto rechner02
:rechner01
rem hier stehen die Befehle für Rechner01
:rechner02
rem hier stehen die Befehle für Rechner02

Logon-Dateien anpassen

Nachdem sich der Benutzer am Rechner angemeldet hat, prüft dieser, ob es auf dem Server eine spezielle Datei für diesen Benutzer gibt und führt diese aus.

Auch bei diesen sogenannten "logon-Skripten" handelt es sich um Batch-Dateien, welche in einem besonderen Verzeichnis auf dem Server liegen. Sie können diese Dateien am besten von einem Windows-Client aus bearbeiten. Melden Sie sich dazu als "Domänen-Administrator" an (in den meisten Fällen ist das der Benutzer admin oder administrator am Client an und öffnen Sie eine DOS-Box in welcher Sie den Befehl:

net use n:\\\\servername\netlogon /yes
eingeben. Ersetzen Sie servername durch den NetBIOS-Namen ihres Samba-Servers, so wie sie ihn in der Netzwerkumgebung sehen.

Jetzt sollten Sie ein neues Laufwerk N:\\\\ im Explorer sehen und darin verschiedene *.bat-Dateien finden können.

Bei den meisten Linuxservern existiert für jede Gruppe (Lehrer, Schüler) ein eigenes Logon-Skript. Diese Skripte können Sie z.B. mit dem Notepad öffnen, bearbeiten und auch wieder zurückspeichern.

Dateien vom Server auf die Clients kopieren

Ein einfaches Beispiel, wie man sich das Leben als Administrator vereinfachen kann, sind die Dateien lmhosts und hosts. In diesen Dateien schauen die Windows-Clients zuerst nach, wenn Sie einen anderen Rechner im Netzwerk suchen. Wenn Sie also ihr Netzwerk ein wenig entlasten möchten, weil die Clients nicht für jede Namensanfrage den Hauptserver befragen müssen, können Sie hier wichtige Namen und deren IP-Nummern ablegen. Dies getrennt für Rechner im Internet (hosts) und im Lokalen Samba-Netzwerk (lmhosts).

Anstatt jetzt bei jedem Client diese Dateien von Hand anzupassen (aufwendig, zeitraubend und fehleranfällig), pflegen wir nur je eine einzige Datei und kopieren diese Datei bei jeder Anmeldung vom Server auf die Clients an den richtigen Platz.

Zunächst einmal ein Beispiel für eine hosts-Datei:

# Diese Datei enthält die Zuordnung von Rechnernamen zu IP-Adressen
# Jeder Eintrag sollte in einer eigenen Zeile stehen
# Zuerst kommt die IP-Adresse des Rechners, danach dessen vollständiger Rechnername mit (Intenet)Domain
# Trennzeichen ist (mindestens) ein Leerzeichen
# Kommentare (wie diese) beginnen mit einem '#'
#
# Die Beispiele bitte anpassen
#
127.0.0.1 localhost
172.16.0.2 admin.meine-schule.de
66.249.85.99 www.google.de

Und nun noch ein Beispiel für eine lmhosts-Datei:

# Diese Datei ist für das Browsen im lokalen LAN zuständig
# Jeder Eintrag sollte in einer eigenen Zeile stehen
# Zuerst die IP-Adresse des Rechners, danach dessen Name im Windows-LAN
# Trennzeichen ist (mindestens) ein Leerzeichen
# Kommentare (wie diese) beginnen mit einem '#'
# Wichtig sind hier noch die folgenden Ergänzungen:
# #PRE : Setzt einen statischen Eintrag
# #DOM:<domain> : Hängt die Windows-Domäne an den Eintrag an</domain>
# #INCLUDE <filename> : Läd die angegebene Datei und behandelt diese wie die lokale lmhosts (wichtig für größere Dateien mit mehreren 100 Einträgen)</filename>
# Beispiel:
172.16.0.2 pdc-server #PRE #DOM:schule
#INCLUDE \\\\pdc-server\netlogon\lnhosts

Diese Dateien kopieren Sie jetzt ins Verzeichnis netlogon des Samba-Servers. Damit diese Dateien jetzt bei der Anmeldung eines Benutzers noch auf den Client kopiert werden, ergänzen Sie einfach in der jeweiligen logon-Datei die Einträge:

copy \\\\pdc-server\netlogon\Lmhosts.* c:\\\\windows /y
copy \\\\pdc-server\netlogon\Hosts.* c:\\\\windows /y

...und wo Sie die Logon-Datei schon mal geöffnet haben, können Sie diese natürlich auch noch mit ein paar Erweiterungen "verziehren". Ein Beispiel:

@echo off
rem Anmeldescript fuer Schueler
rem Bildschirm l�chen
cls
rem kleine Wartemeldung
echo.
echo Anmeldung am Server erfolgt...
rem Sperren der Konsole
rem Schüler können das Skript nicht mehr abbrechen
ctty nul
rem Uhrzeit stellen
net time \\\\timeserver /set /yes
rem Laufwerke verbinden
net use h: \\\\pdc-server\homes /yes
net use s: \\\\pdc-server\software /yes
rem Dieses Laufwerk liegt auf einem anderen Server namens space:
net use t: \\\\space\tausch /yes
rem aktuelle Rechner-Umgebung kopieren
copy \\\\pdc-server\netlogon\Lmhosts.* c:\\\\windows /y
copy \\\\pdc-server\netlogon\Hosts.* c:\\\\windows /y
rem Kopiere Datei autoexec.bat
rem und ja.dat und schütze diese Dateien vor Veränderungen
attrib c:\autoexec.bat -r -h
copy \\\\pdc-server\netlogon\autoexec.bat c:\\\\autoexec.bat /y
attrib c:\\\\autoexec.bat +r +h
attrib c:\\\\windows\ja.dat -r -h
copy \\susi\netlogon\ja.dat c:\\\\windows\ja.dat /y
attrib c:\\\\windows\ja.dat +r +h
rem Kopieren von Links auf lokal installierte Programme
rem so können Rechner unterschiedliche Programme installiert haben
rem und die Nutzer bekommen diese jeweils ins Startmenü eingebunden
deltree /y z:\\\\profile\startmen?\programme\lokales
if exist c:\\\\windows\lokales\*.* md
z:\\\\profile\startmen?\programme\lokales
if exist c:\\\\windows\lokales\*.* xcopy c:\\\\windows\lokales
z:\\\\profile\startmen?\programme\lokales /S
rem Serverbasierte Profile abrufen
call \\\\pdc-server\netlogon\setreg.bat

Wie Sie anhand der letzten beiden Zeilen sicherlich schon erkannt haben, kann man natürlich noch weitere Programme (z.B. durch die Befehle start oder call) aus diesen Batch-Dateien heraus starten.

Dies nutzen wir z.B. um Sachen, die für alle Benutzer gelten sollen, in nur einer Datei pflegen zu müssen. Die Datei setreg.bat" z.B. erlaubt es Windows 9x-Nutzern, die "Roaming Profiles" von jüngeren Windows-Versionen wie Windows 2000 oder XP zu nutzen. D.h. ein Benutzer kann sich an einen beliebigen PC innerhalb der Domäne setzen und bekommt immer genau sein Einstellungen und Dateien angezeigt. Zusammen mit dem Einsatz von Poledit [14] und/ oder TweakUI [15] kann man hier schon sehr viel auch mit dem alten Windows 9x erreichen.


Roaming Profiles mit Windows 9x: setreg.bat

Wenn sich ein neuer Benutzer an einer Windows 9x Maschine einloggt, bekommt er zwei Dialogfelder präsentiert:
  1. Sollen die persönliche Einstellungen beibehalten werden?
  2. Das Passwort soll noch einmal bestätigt werden.

Windows 9x legt dann auch für jeden Anwender ein eigenes Verzeichnis und eine lokale Kopie seiner user.dat unter c:\\\\windows\profiles an.

Durch das Programm PUTINENV [16] lässt sich Windows nun wunderbar austricksen, indem über den LANManager-Service die Benutzerdaten erfragt werden und diese Daten dann in die Registry eingefügt werden bevor Windows auf die Idee kommt, den Benutzer mit diesen Fragen zu nerven.

Voraussetzungen auf dem Server

Um sämtliche Nutzerdaten auf dem Server speichern zu können, muss in der Datei smb.conf auf dem Server der Eintrag:
logon home = %u

im [global]-Abschnitt aktiviert sein. Bei manchen Schulservern sieht der Pfad auch ein wenig anders aus - etwas so:
logon home = \\\\%L\profiles\%U

Wichtig: Die Einstellung für logon home gilt ausschließlich für Rechner unter Windows 9x/Me. Diese verwenden zum Auffinden ihrer Profile ein etwas anderes Verfahren als Windows NT, 2000, XP und 2003.

Sobald sich ein neuer Benutzer einloggt, erzeugt der Windows 9x/Me-Client eine Datei user.dat (unter neueren Windows-Versionen heißt diese Datei ntuser.dat).

Anschließend lädt der Client die Inhalte des Desktops, das Startmenü, die Netzwerkumgebung und die Programmordner in einzelnen Ordnern im Verzeichnis. Wenn sich der Benutzer ausloggt, werden diese Inhalte auf dem Server gespeichert, bis sich der Benutzer das nächste Mal einloggt. Dann werden diese Inhalte vom Server heruntergeladen und auf der Client-Maschine aktiviert.

Gibt es beim Anmelden eines Benutzers also keine user.dat-Datei wird sie automatisch von Windows erzeugt.

Nun können wir dem Benutzer natürlich eine solche Datei von einem anderen Nutzer "unterjubeln", indem wir einfach eine solche vor dem Anlegen eines Nutzers in das Verzeichnis /etc/skel auf den Server kopieren (beim OSS [17] reicht es, einen Template-Benutzer [18] einzurichten). Beim Neu-Anlegen eines Benutzers bekommt dieser diese Datei dann in sein eigenes Verzeichnis kopiert.

Das Problem: der Windows-Client "kennt" diesen Benutzer noch nicht. Also überprüft Windows 9x überhaupt nicht, ob der Benutzer etwa schon auf dem Server existiert: es legt ihn einfach noch einmal neu an! (Windows 9x ist halt ein Einzelplatz-System.)

Wir müssen Windows 9x also vorgaukeln, diesen Benutzer schon zu kennen. Dies geschieht nun mit der Unterstützung von PUTINENV.


Windows einen Benutzer vorgaukeln: setreg.bat

Um Windows nun auszutricksen, kommt die Datei setreg.bat ins Spiel. Diese sieht wie folgt aus:

@echo off
REM Batch zum Anlegen von Usern in der Win9x Registry beim Einloggen
REM Thomas Litsch, 16.04.2000 [tlitsch@gmx.de]
REM Der Name des Anwenders wird ausgelesen
REM und in der Variable %username% abgelegt.
\\\\pdc-server\netlogon\putinenv.exe L
REM Ein neuer Registry Eintrag wird generiert
set regfile=c:\\\\windows\temp\profreg.reg
echo REGEDIT4> %regfile%
echo.>> %regfile
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ProfileList]>>%regfile%
echo.>> %regfile%
REM Der Pfad in der naechsten Zeile muss an die Konfiguration der
REM Arbeitsstationen angepasst werden!!!
REM Hier bleibt die User.dat in z:\\profile liegen und wird nicht
REM nach c:\\\\windows\profiles kopiert
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ProfileList\%username%]>>%regfile% echo "ProfileImagePath"="Z:\\\\profile" >> %regfile%
REM Damit nicht nach dem Passwort gefragt wird, schalten wir das ab
echo.>> %regfile%
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Network] >> %regfile%
echo "DisablePwdCaching"=dword:00000001 >> %regfile%
REM Der erzeugte Registy Eintrag wird eingetragen: /s fuer silent!
regedit /s %regfile%
del c:\\\\windows\temp\profreg.reg < c:\windows\ja.dat

Beachten Sie bitte, dass die Datei putinenv.exe hier im Verzeichnis netlogon des Servers liegt. Kopieren Sie sie also einfach nach dem Download dorthin.




  

[ zurück zu Windows [19] | Index [20] ]

Kommentare

Einen Kommentar hinzufügen


Links
  [1] http://www.linux-schulserver.de/index.php?name=Sections&req=viewarticle&artid=44&allpages=1&theme=Printer
  [2] http://www.linux-schulserver.de/Sections-article44-p2.phtml#anmeldeprozedur
  [3] http://www.linux-schulserver.de/Sections-article44-p2.phtml#dos
  [4] http://www.linux-schulserver.de/Sections-article44-p3.phtml#autoexec.bat
  [5] http://www.linux-schulserver.de/Sections-article44-p4.phtml#logon.bat
  [6] http://www.linux-schulserver.de/Sections-article44-p5.phtml
  [7] http://www.linux-schulserver.de/Sections-article44-p5.phtml#voraussetzung
  [8] http://www.linux-schulserver.de/Sections-article44-p6.phtml
  [9] http://www.linux-schulserver.de/modules.php?name=CmodsDownload&req=getit&lid=62
  [10] http://www.linux-schulserver.de/modules.php?name=CmodsDownload&req=getit&lid=63
  [11] http://www.linux-schulserver.de/#prog.einst.
  [12] http://www.linux-schulserver.de/#diskette
  [13] http://www.linux-schulserver.de/#prog.einst.
  [14] http://www.linux-schulserver.de/Sections-article8-p1.phtml
  [15] http://www.linux-schulserver.de/Sections-article12-p1.phtml
  [16] http://www.linux-schulserver.de/modules.php?name=CmodsDownload&req=getit&lid=64
  [17] http://www.extis.de/oss
  [18] http://www.linux-schulserver.de/Sections-article41-p3.phtml
  [19] http://www.linux-schulserver.de/index.php?name=Sections&req=listarticles&secid=3
  [20] http://www.linux-schulserver.de/index.php?name=Sections