Windows 3.1x im Novellnetz

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.
Wenn man obiges gelesen hat, versteht man vielleicht auch dieses (die umfangreiche Version mit nur einer WIN.INI):
@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.
4>