|
3.14.2 Windows 3.1x im NovellnetzUnsere Kunden bekommen ein Windows auf's Netz - im Verzeichnis SYS:WIN31 (mit einem Search-Map versehen) wird mit SETUP /A alles installiert. Jeder Benutzer hat ein User-Verzeichnis (i. d. Regel mit MAP ROOT G:=SYS:USER/%LOGIN_NAME% gemappt). Hier richte ich mir in meinem eigenen G:-Laufwerk mit SETUP /N die erste Win-Version im Verzeichnis G:\WIN31 ein. Mein Ziel bei Win-Installationen ist immer folgendes: der Anwender soll zwar alles Nötige zur Verfügung gestellt bekommen, aber er soll so gut wie nichts verstellen können. Auf die Weise kann er davon ausgehen, daß er beim nächsten Start von Windows alle Fenster so vorfindet, wie er es gewohnt ist - wenn man weiß, welches Unheil unerfahrene "Maus-Klicker und -Schieber" so auf dem Desktop anrichten können, ist das immer gut zu wissen. Jetzt installiere ich erstmal alle notwendigen Grafiktreiber. Auch werden alle Gruppen angelegt, die nötig sind. So schmeiße ich aus der Hauptgruppe fast alles 'raus, lege mir eine Gruppe "Supervisor" an und erstelle eine Gruppe "Programme", in die später alle Programme reinkommen. Ich lege auf dem Server ein Verzeichnis SYS:INI an. In diesem Verzeichnis wird für jeden Grafiktreibertyp ein Verzeichnis angelegt. Bspw.: SS8X6 für SpeedSTAR 800x600 usw. In diese Verzeichnisse (darauf haben alle Lesezugriff), kommen die gemeinsam genutzten Gruppen-Dateien (*.GRP). Im Verzeichnis INI lege ich für jeden Benutzer eine PROGMAN.INI als %LOGIN_NAME%.PRG an. Im Login-Script wird jetzt für jede Station - abhängig von der Grafikkarte - ein MAP ROOT J:=SYS:INI\<entsprechendes Verzeichnis> mit anschließendem COPY J:\*.GRP G:\WIN31 gemacht. In den *.PRG-Dateien in SYS:INI kann man wunderbar editieren, welcher Benutzer welche Gruppe sehen soll und wo die liegen soll (die PRG-Datei holt er sich beim Aufruf von Windows). Jeder Benutzer hat in G:\WIN31 eine AUTOSTART- und eine PRIVAT-Gruppe. Alle anderen kommen immer wieder von J: - so ist sichergestellt, daß auch die Gruppen immer gleich bleiben. Wozu die GRP's für jede Grafikkarte? Weil Win sonst jedesmal die GRP-Dateien an den jeweiligen Treiber anpassen muß - das kostet Zeit. Jetzt kommt die WIN.INI aus meinem Verzeichnis auch ins INI-Verzeichnis. Die SYSTEM.INI kommt als %STATION%.SYS ins INI-Verzeichnis, wobei im LOGIN-Script für jede Station mit SET STATION=P_STATION <<4 eine eindeutige Veriable gesetzt wurde (die enthält die letzten 8 Ziffern der Ethernet-ID). Die SPART.PAR-Datei (die den Verweis auf die stationsabhängige Auslagerungsdatei auf C: enthält, kommt ebenfalls als %STATION%.PAR ins INI-Verzeichnis. Im INI-Verzeichnis liegen also demnach: Die PROGMAN.INI für jeden Benutzer Die SYSTEM.INI für jede Station Die SPART.PAR für jede Station Die WIN.INI des Supervisors. Jetzt wird erstmal der ganze Kram aus meinem G:\WIN31 für jeden Benutzer kopiert - jeder erhält also ein G:\WIN31. Natürlich ohne meine eigenen Gruppen. Nur mit der leeren AUTOSTART und PRIVAT-Gruppe. Ab hier gibt es zwei Möglichkeiten: entweder legt man auch für jeden Benutzer eine eigene WIN.INI in INI ab (einfach...), oder man erzeugt eine, in der beim Start von Windows einige Stellen für den jeweiligen Benutzer ausgetauscht werden. Im ersteren Fall hat man den Nachteil, daß es Zeit kostet, Änderungen an den INI-Dateien für alle 120 Benutzer durchzuführen. Im letzteren Fall hat man das Problem, das es irre viel Gefummel ist, bis es läuft. Danach ist's aber sehr einfach, kurz mal was an der WIN.INI zu machen... Interessant wären die Batches, mit denen Windows aufgerufen
wird.
@echo off cls echo. ncopy H:\INI\WIN.INI I:\WIN31\WIN.INI >nul rem hier wird die WINI.INI nur erstmal kopiert ncopy H:\INI\%LOGIN_NAME%.PRG I:\WIN31\PROGMAN.INI >nul rem die eigene PROGMAN.INI ncopy H:\INI\%STATION%.SYS I:\WIN31\SYSTEM.INI >nul rem die stationsabhängige SYSTEM.INI ncopy H:\INI\%STATION%.PAR I:\WIN31\SPART.PAR >nul rem die stationsabhängige SPART.PAR ncopy H:\INI\%STATION%.CTR I:\WIN31\CONTROL.INI >nul rem auch die mußte ich bei einem Kunden variabel gestalten, rem da die Grafiktreiber unterschiedliche Farben machten ncopy J:\*.GRP I:\WIN31 >nul rem da kommen die Gruppen flag I:\WIN31\SPART.PAR RO >nul rem noch ein Schreibschutz drauf. Die SPART.PAR muß übrigens rem auf jedem PC einmalig unter Windows erstellt werden I: rem hier ist das Userverzeichnis I: und nicht G: wie oben if %STATION% == 12345678 goto WS01Config if %STATION% == yyyyyyyy goto WS02Config .... if %STATION% == xxxxxxxx goto WS07Config if %STATION% == zzzzzzzz goto WS08Config rem je nach Station gehts jetzt weiter rem (die Env.-Var %STATION% wird im LOGIN-Script gesetzt). :WS01Config rem USERNAME rem damit man später noch weiß, wer an dem Platz sitzt cd \win31 rem ins eigene Userverzeichnis wechseln QR Commit0 device= win.in* >nul QR Commit1 Panasonic win.in* >nul QR Commit2 KX-P4450i,PCL4X,LPT1: win.in* >nul QR Anschluss LPT1 win.in* >nul rem ich habe in der WIN.INI die Variablen "Commit0", "Commit1", rem "Commit2" und "Anschluss" gesetzt. Die werden vom Programm rem QR (ein Stringtauscher - mehr dazu weiter unten!) übersetzt in rem das, was hinter der Varible steht, also "Commit1" -> "Panasonic" rem - womit ich für jeden Benutzer unterschiedliche rem Druckervoreinstellungen machen kann. QR Col1 64 win.in* >nul QR Col2 128 win.in* >nul QR Col3 255 win.in* >nul QR Col4 224 win.in* >nul rem Hier noch ein paar Farbwerte... cd \ goto WindowsStart :WindowsStart rem Hier geht's dann los! win31 %1 rem Windows starten (die WIN.COM im userverzeichnis heißt WIN31.COM!) cls echo. i: cd\win31 copy SYSTEM.INI I:\WIN31\INI\%STATION%SYS.INI >nul copy CONTROL.INI I:\WIN31\INI\%STATION%CTR.INI >nul copy WIN.INI I:\WIN31\INI\%LOGIN_NAME%.INI >nul copy PROGMAN.INI I:\WIN31\INI\%LOGIN_NAME%.PRG >nul rem Damit man zur Not Änderungen an den INI-Dateien nicht einfach rem durch einen Windows-Neustart überschreibt... Da muß man aufpassen! dir J:\*.GRP /B >DELETE.IT xdel @DELETE.IT /N >nul rem Damit werden wieder alle GRP-Dateien gelöscht. del DELETE.IT >nul del SYSTEM.INI >nul del WIN.INI >nul del CONTROL.INI >nul del PROGMAN.INI >nul rem Damit ist das Verzeichnis beim User wieder total jungfräulich! cd.. flag I:\WIN31\SPART.PAR RW >nul del I:\WIN31\SPART.PAR >nul echo. Die andere Veriante (mit vielen WIN.INI's) sähe etwa so aus: @echo off cls echo Der Start von Windows 3.1 wird vorbereitet... echo. flag g:\windows\spart.par rw >nul ncopy f:\win31\ini\%LOGIN_NAME%.ini g:\windows\win.ini >nul ncopy f:\win31\ini\%LOGIN_NAME%.prg g:\windows\progman.ini >nul ncopy f:\win31\ini\%P_STATION%.ini g:\windows\system.ini >nul ncopy f:\win31\ini\%P_STATION%.par g:\windows\spart.par >nul ncopy j:\*.grp g:\windows >nul flag g:\windows\spart.par ro >nul win31 %1 cls echo Windows 3.1 wird beendet... echo. ncopy g:\windows\system.ini g:\windows\%P_STATION%.old >nul ncopy g:\windows\win.ini g:\windows\%LOGIN_NAME%.old >nul echo. Copyright © by Stefan Braunstein (stefan@braunstein.de) Letzte Aktualisierung am 1. November 1998 |