Rechner Inventarisierung, Login Skript und Login Dokumentation mit Kix und Active Directory
18.01.2006
15:08:14 Uhr56844 Aufrufe
35 Antworten
15:08:14 Uhr
35 Antworten
Noch nicht bewertet
Dieses Tutorial soll ein Beispiel für ein Domänen Anmelde- und Abmeldeskript sein, welches als nettes Abfallprodukt noch einige Rechner Informationen über die Hard- und Software erfasst.
Rechner Inventarisierung Login Skript und Dokumentation mit Kix und Active Directory.
Jeder Admin einer Domäne ist interessiert an den aktuellen Rechner Daten in seinem Netz. Aus diesem Grund habe ich vor drei bis vier Jahren mit Kix begonnen Skripte zu schreiben. Ich habe hier ein Kix Skript für die Anmeldung gebastelt, welches mir beim Login der User die Daten, der Rechner und die Infos wer sich An- bzw. Abgemeldet hat, in zwei Log-Files schreibt. Je eine für die Rechner Daten und eine für die Anmeldeinformationen.
Somit habe ich immer aktuelle Daten über die Konfiguration meiner Rechner im Netz und habe für jeden Tag eine Datei mit den An- und Abmeldungen. Ein weiterer Vorteil besteht darin das ich nun auch kontrollieren kann was alles an Software im Netz eingesetzt wird.
Was macht dieses Skript alles:
- verbinden und trennen von Netzwerk Freigaben
- verbinden und trennen von Netzwerk Druckern (Druckwarteschlangen auf Domänen Rechnern oder Servern)
- erfassen aller Benutzer An- und Abmeldungen
(für die Abmeldung ist ein zweites Skript mit gleichem Inhalt notwendig welches unterhalb der >>Login.kix<< steht)
- erstellen einer Datei für Alle An- und Abmeldungen pro Tag
- erfassen aller Rechner von denen sich angemeldet wird (nur Domänen Rechner)
- was wird erfasst: Harware (CPU, Betriebssystem, NetBios Name, RAM, MAC Adresse, IP Adresse)
Software (Alle installierten Programme sowie Patche)
Wobei zu sagen bleibt daß dies bei weitem nicht alles ist was mit Kix möglich ist.
So nun fangen wir mal an
Als erstes laden wir uns mal das aktuelle <a href="http://www.kixtart.org/binary/distrib/KiX ... Paket</a> von <a href="http://www.kixtart.org/">Kixtart. ...; herunter. Derzeitig ist die aktuelle Version 4.51. Nach dem entpacken der Datei benötigen wir erstmal nur die Datei "Kix32.exe" welche wir uns in einen neuen Ordner auf unserer Platte kopieren.
In diesem Ordner erstellen wir eine neue Datei welche wir "login.kix" nennen.
Diese Datei öffnen wir nun mit dem Notepad oder einem beliebigen anderen Editor, Tipp: ich würde die Endung .kix direkt dem Editor zuordnen denn beim arbeiten wird doch öfters mal getestet und dann kann man die Datei mit einem einfachen Doppelklick wieder bearbeiten.
Um unser Skript später zu testen ziehen wir per Drag and Drop unser Skript auf die kix32.exe oder direkt in der DOS Eingabeauffordung
mit "kix32.exe login.kix".
Zur Funktion:
Bereich Variablen
Hier werden die jeweiligen Servernamen gesetzt. In den meisten Fällen wird zwar alles auf einem einzigen Server durchgeführt, sollte es jedoch eine größeres LAN mit mehreren Servern sein, kann es durch aus Sinn machen die einzelnen Funktionen (File-, Druckserver, etc.) auf verschiedene Maschinen zu verteilen
Bereich Netzlaufwerke
Als erstes werden alle vorhandenen Netzlaufwerke getrennt, ganz klar erstmal reinen Tisch machen. Anschließend werden vom Fileserver die Freigaben Benutzer und / oder Gruppen bezogen gemappt. Sollte es mal einen Account "Gast" geben, was ich ja kaum glaube, dann soll dieser nur das Laufwerk "Public" gemappt bekommen. Aus diesem Grund wird direkt nach dem Mapping der Standard Block übersprungen "goto EndSharing" und an der Sprungmarke <:EndSharing> mit dem Skript fortgefahren.
Etwas spezielles ist noch die Freigabe <use z: "\\"+$Fileserver+"\"+@userid+"$">. Hier wird für jeden User ein individuell eine Freigabe, auf die nur er Zugriff hat, gemappt. Ich Verbinde mit dieser Funktion für jeden User ein persönliches Laufwerk, auf welchen er persönliche Dinge ablegen kann. Durch das $ hinter der Freigabge wird diese als nicht sichtbar deklariert und wird beim browsen in der Netzwerk Umgebung auf den Servern nicht angezeigt.
Druck Warteschlangen verbinden
Wenn ich auf dem einem Server Drucker Freigegeben habe, werden diese hier verbunden. Da alte Drucker, welche nicht mehr vorhanden sind, nicht automatisch auf den Clients gelöscht werden, kann ich die Löschung auch per Skript vornehmen. Hier wird Beispielhaft ein nicht mehr vorhandener Laser Drucker von den Clients gelöscht. Anschließend werden noch zwei weitere Drucker verbunden. Die Druckertreiber werden in der Regel automatisch vom Server auf die Clients übertragen. Wenn sich die Clients das erste mal mit dem Server verbinden dauert die Anmeldung etwas länger da die Druckertreiber komplett mit übertragen werden müssen. Bei weiteren Anmeldungen geht der Anmeldevorgang dann zügiger von statten.
Bereich Hardware
Kix stellt einige Variablen zur Verfügung, welche Informationen über das System enthalten. Diese Variablen an einem beginnenden @ Zeichen (Bsp.: @CPU) zu erkennen. Hier verweise ich auf die Dokumentation "Kix2010.doc" welche im Download enthalten ist. Die Hardware Informationen sind bis auf die IP-Adresse (@IPADRESS0) selbsterklärend. Bei @IPADRESSx muß das x durch einen Wert zwischen 0 und 3 ersetzt werden. Dieser gibt an welche IP-Adresse angezeigt werden soll. Ich habe mich in diesem Skript auf die erste Adresse beschränkt da es leider nur eine Möglichkeit gibt die MAC Adresse der ersten NIC anzuzeigen. Die einzelnen Blöcke der IP-Adresse werden mit führenden Leerzeichen dargestellt (z.B. 192.168. 2. 12). Wer dieses umgehen möchte, da die Daten eventuell weiterverarbeitet werden sollen, der sollte sich einmal den Befehl Split und Element anschauen. Hiermit ist es möglich die Leerzeichen zu entfernen. Ich habe diesen Code aus dem Skript rausgelassen, habe ihn jedoch am Ende der Doku angefügt. Diesen Code bei Bedarf mit der Stelle mit der Ausgabe der IP-Adresse ersetzen.
Bereich Software
Um zu erfahren welche Software installiert ist, liest das Skript die Registry Einträge aus dem Pfad "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" aus. Wie hier zum auslesen der Software, ist es auch möglich eigene Registry Einträge zu erstellen, auszulesen, zu ändern oder zu löschen. Ich hatte diese einmal genutzt um in Zeiten wo es noch keinen SUS bzw. WSUS gab erfahren ob Microsoft Patche installiert sind (Jaja die guten alten Würmer). Bitte in der Doku nach "DELKEY, DELVALUE, ENUMKEY, ENUMVALUE, KEYEXIST, READTYPE, READVALUE, WRITEVALUE" suchen.
Bereich Anmeldung und Abmeldung
Hier wird lediglich zu Beginn geschaut, ob es für den aktuellen Tag bereits eine Login Datei gibt. Wenn die Datei noch nicht existiert wird zusätzlich zu den Anmeldeinformationen ein Header geschrieben, damit die Datei übersichtlicher wird. Auch hier werden wieder System Variablen welche Kix zu Verfügung stellt angewendet um Informationen zu erhalten. In meinem Beispiel wird für jeden Tag eine neue Login Datei generiert. In kleineren Domänen könnte man sich auch auf eine Datei Pro Woche bzw. Pro Monat beschränken. Hierfür muß lediglich der Datei name angepasst werden (z.B. Anmeldungen "+" @YEAR+"."+@MONTHNO+".TXT" für eine Datei Pro Monat).
Für die Abmeldung wird der gleiche Code verwendet wie für die Anmeldung, wobei zu beachten ist das in der Zeile <? "¦"$user"¦ "$client" ¦ "@DATE" ¦ "@TIME" ¦ "$lserver" ¦ i ¦"> das kleine i durch ein o ersetzt wird. Es ist natürlich möglich hier einen x-beliebigen Begriff für Login und Logoff einzusetzen.
Wo setze ich nun die Skripte ein und wie aktiviere ich diese?
Die drei Dateien kix32.exe, login.kix und die logoff.kix kopieren wir in die NETLOGON Freigabe in unserer Domäne. Jetzt erstellen wir noch eine Gruppenrichtlinie die für alle User greift. Am besten eine eigene OU a la "Firmen User" erstellen und alle User Konten hierher verschieben wenn noch nicht geschehen. Für diese OU eine GPO erstellen. In dieser GPO folgende Eigenschaften eintragen.
- Benutzerkonfiguration -> Windows-Einstellungen -> Skripts (Anmeldn/Abmelden)
-Anmelden-
- Skriptname = "\\DeinDomänenname\SYSVOL\DeinDomänenname\scripts\kix32.exe"
- Skriptparameter "login.kix"
-Abmelden-
- Skriptname = "\\DeinDomänenname\SYSVOL\DeinDomänenname\scripts\kix32.exe"
- Skriptparameter "logoff.kix"
So jetzt nur noch speichern der GPO und anschließen testen.
Wenn man nur das Anmeldeskript benötigt (warum auch immer) kann man das Skript auch für jeden User in den Benutzereinstellungen auf der Reiterkarte Profil einrichten ("kix32.exe login.kix"). Zum testen kann man das Skript auch erstmal in einem DOS Fenster laufen lassen um zu prüfen ob alles einwandfrei funktioniert.
Hier nochmal der Link zur offiziellen Kixtart Seite http://www.kixtart.org
So das war es erstmal soweit von mir, ich denke jetzt schickts auch. Ich habe in diesem Skript nicht alles umgesetzt was möglich ist, lediglich die Dinge welche bei mir aus der Praxis heraus wichtig sind. Deshalb sollte dieses Tutorial bitte nicht als Versuch einer Komplett Dokumentation von Kix und dessen Möglichkeiten gesehen werden sondern nur als Anregung und Starthilfe für An- und Abmeldeskripte in Windows Domänen. Eine interessante Erweiterung wäre z.B. eine Erweiterung dahin, das für Lizenzpflichtige Softwarepakete ein Datei mit den aktuell installierten Lizenzen generiert wird. Naja Ihre habt bestimmt auch noch ettliche Ideen was Sinnvoll ist oder auch nicht. Ich hoffe das im Forum noch ein wenig darüber diskutiert wird damit wir alle nach kurzer Zeit mit einer optimierten Skript Lösung arbeiten können. Denn eigentlich haben wir doch alle das gleiche Ziel?
Grüße und viel Spaß beim Skripten
PS: Ich bitte um nachsehen für eventuelle Fehler, für unklare Beschreibungen und ich hoffe ich habe nichts wichtiges vergessen. Because pobody is nerfect!
!!!Die Namen für die / den Server sowie die Freigaben, User- und Gruppennamen müssen natürlich an Eure Struktur angepasst werden!!!
>>login.kix<< -- Ab hier den Inhalt markieren und in die Datei login.kix kopieren.
<font class="code">
; ### Das Anmeldeskript soll sichtbar ausgeführt werden und das Fenster für das Skript erhält mit SETTITLE eine Bezeichnung.
; ### Hier könnte stehen der Firmenname, auch Datum und Uhrzeit oder Informationen für Mitarbeiter.
; ### Wobei diese auch mit einer MessageBox realisiert werden können.
;
SETCONSOLE("show")
SETCONSOLE("maximized")
SETTITLE("Anmeldeskript für Meine Domäne 2006")
;
;
; *
; Variablen deklarieren
; *
;
$FileServer="ServerNameFileServer"
; ### Name des Servers auf welchem sich die Freigaben befinden
; ### alternativ kann auch natürlich auch eine IP-Adresse angegeben werden
;
$ProtokollServer="ServerNameProtokollServer"
; ### Name des Servers auf welchem die Freigabe für die Dokumentation
; ### der An- und Abmeldungen sowie der Rechner Infos liegt
;
$PrintServer="ServerNameDruckWarteSchlangen"
; ### Name des Servers auf welchem (falls vorhanden) die Drucker
; ### eingerichtet und freigegeben sind die verbunden werden sollen
;
;
; Alle vorhandenen Netzlaufwerke löschen
;
use "*" /delete
;
;
; *
; Netzlaufwerke Gruppen bezogen verbinden
; *
if ingroup("grpBuchhaltung")
use f: "\\"+$Fileserver+"\Buchhaltung"
endif
if ingroup("grpLeitung")
use l: "\\"+$FileServer+"\Leitung"
endif
; ### Für weitere Freigaben einfach einen oberen Block kopieren und anfügen
;
;
;
; Netzlaufwerke Benutzer bezogen verbinden
;
if @userid="Administrator"
use x: "\\"+$ProtokollServer+"\login$"
;das ist die Freigabe wo die Login Protokolle abgelegt werden
;natürlich soll diese nur der Admininstrator sehen
endif
if @userid="Gast"
use p: "\\"+$Fileserver+"\public"
goto EndSharing
endif
;
;
;
; Netzlaufwerke für jeden User verbinden
;
use g: "\\"+$Fileserver+"\Gemeinsames"
use s: "\\"+$Fileserver+"\Schriftverkehr"
use v: "\\"+$Fileserver+"\Vorlagen"
use z: "\\"+$Fileserver+"\"+@userid+"$"
:EndSharing
;
;
;
; Alte Drucker löschen
;
If DELPRINTERCONNECTION ("\\"+$PrintServer+"\LaserJet") = 0
? "Alter Laserdrucker wurde erfolgreich entfernt"
Endif
;
;
; *
; Drucker verbinden
; *
If ADDPRINTERCONNECTION ("\\"+$PrintServer+"\LaserJetColor") = 0
? "Drucker Farblaserdrucker wurde verbunden"
Endif
If ADDPRINTERCONNECTION ("\\"+$PrintServer+"\LaserZentrale") = 0
? "Drucker Laserdrucker Zentrale wurde verbunden"
Endif
;
;
; *
; Hardware Informationen auslesen
; *
;
: ### Ausgabe auf die Datei "Rechnername_info.txt" umleiten anstelle des Bildschirmes
$result=ReDirectOutput ("\\"+$ProtokollServer+"\login$\"+@Hostname+"_info.txt" ,1)
;
; ### Ab jetzt werden alle Printanweisungen in die Datei "Rechnername_info.txt" ausgegeben
? "Stand "@DATE" - "@TIME
? ""
? "* Rechner Information *"
?"NetBIOS Name: "@WKSTA
?"Letzter Login von: "@USERID
?"OS: "@PRODUCTTYPE" with "@CSD
?"CPU Modell: " @CPU
?"CPU Takt: "@MHZ " MHz"
?"Speicher: "MemorySize(0)" MB"
?"IP Adresse: " @IPADRESS0
?"MAC Adresse: "@ADDRESS
?""
;
; *
; Software Informationen auslesen
; *
;
; ### die installierte Software wird anhand der Uninstall Informationen der Registry ausgelesen, es wird
; ### solange gelesen bis im Reg Pfad keine Einträge mehr vorhanden sind, durch den Error wird dann die
; ### Schleife zur Sprungmark :Login verlassen
;
?"* installierte Software *"
$Index = 0
:Loop1
$KeyName = EnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", $Index)
If @ERROR = 0
Goto DisplayCheck
Else
Goto Login
EndIf
:DisplayCheck
$Displayname = ReadValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$Keyname","DisplayName")
If @ERROR = 0
$Index = $Index + 1
?$Displayname
Goto Loop1
Else
Goto Login
endif
:Login
;
;
; Login Informationen pro User
;
;
; ### hier wird die Ausgabe wieder auf die Protokoll Datei für den jeweiligen Tag umgeleitet
$result=ReDirectOutput ("\\"+$ProtokollServer+"\login$\Anmeldungen " + @YEAR + "."+ @MONTHNO + "." + @MDAYNO + ".txt" ,0)
;
; ### jetzt wird geprüft ob die Datei bereits existiert, wenn ja wird der Header nicht noch einmal in die Datei geschrieben
; ### da dieser bereits vorhanden ist.
$logExist=Exist("\\"+$ProtokollServer+"\login$\Anmeldungen " + @YEAR + "."+ @MONTHNO + "." + @MDAYNO + ".txt")
if $logExist = 0
? "+-------------------------------------------------------------------------------------------------+"
? "¦Benutzername ¦ Client ¦ Datum ¦ Uhrzeit ¦ Anmeldeserver ¦ i=login o=logout¦"
? "¦-------------+----------------------+------------+----------+------------------+-----------------¦"
endif
$user = @userid+left(" ",(13-len(@userid)))
$client = @WKSTA+left(" ",(20-len(@WKSTA)))
$lserver = @LSERVER+left(" ",(18-len(@LSERVER)))
$lserver = right($lserver,(len($lserver)-2))
? "¦"$user"¦ "$client" ¦ "@DATE" ¦ "@TIME" ¦ "$lserver" ¦ i ¦"
Exit
</font>
>>Ende Login.kix<<
>>Logoff.kix<<-- Ab hier den Inhalt markieren und in die Datei logoff.kix kopieren.
<font class="code">
; *
; Logoff Informationen pro User
; *
;
$result=ReDirectOutput ("\\"+$ProtokollServer+"\login$\Anmeldungen " + @YEAR + "."+ @MONTHNO + "." + @MDAYNO + ".txt" ,0)
$logExist=Exist("\\"+$ProtokollServer+"\login$\Anmeldungen " + @YEAR + "."+ @MONTHNO + "." + @MDAYNO + ".txt")
if $logExist = 0
? "+-------------------------------------------------------------------------------------------------+"
? "¦Benutzername ¦ Client ¦ Datum ¦ Uhrzeit ¦ Anmeldeserver ¦ i=login o=logout¦"
? "¦-------------+----------------------+------------+----------+------------------+-----------------¦"
endif
$user = @userid+left(" ",(13-len(@userid)))
$client = @WKSTA+left(" ",(20-len(@WKSTA)))
$lserver = @LSERVER+left(" ",(18-len(@LSERVER)))
$lserver = right($lserver,(len($lserver)-2))
? "¦"$user"¦ "$client" ¦ "@DATE" ¦ "@TIME" ¦ "$lserver" ¦ o ¦"
</font>
>>Ende Logoff.kix<<
>>Funktion zum entfernen der Leerzeichen in der IP Adresse<<
Den Code <?"IP Adresse: " @IPADRESS0> mit diesem ersetzen.
<font class="code">
; ### Dieser Code entfernt Leerzeichen aus der @IPADRESS0
$a = 0
$Myarray = Split(@IPADDRESS0 , " ")
For Each $Element In $MyArray
if $a = 0
$IP0 = $Element
endif
if $a= 1
$IP1= $Element
endif
if $a= 2
$IP2= $Element
endif
if $a = 3
$IP3 = $Element
endif
if $a = 4
$IP4 = $Element
endif
if $a = 5
$IP5 = $Element
endif
if $a = 6
$IP6 = $Element
endif
if $a= 7
$IP7 = $Element
endif
if $a= 8
$IP8 = $Element
endif
if $a = 9
$IP9 = $Element
endif
if $a = 10
$IP10 = $Element
endif
$a = $a + 1
Next
?"IP Adresse: " + +$IP0 + $IP1 + $IP2 + $IP3 + $IP4 + $IP5 + $IP6 + $IP7 + $IP8 + $IP9 + $IP10
</font>
Jeder Admin einer Domäne ist interessiert an den aktuellen Rechner Daten in seinem Netz. Aus diesem Grund habe ich vor drei bis vier Jahren mit Kix begonnen Skripte zu schreiben. Ich habe hier ein Kix Skript für die Anmeldung gebastelt, welches mir beim Login der User die Daten, der Rechner und die Infos wer sich An- bzw. Abgemeldet hat, in zwei Log-Files schreibt. Je eine für die Rechner Daten und eine für die Anmeldeinformationen.
Somit habe ich immer aktuelle Daten über die Konfiguration meiner Rechner im Netz und habe für jeden Tag eine Datei mit den An- und Abmeldungen. Ein weiterer Vorteil besteht darin das ich nun auch kontrollieren kann was alles an Software im Netz eingesetzt wird.
Was macht dieses Skript alles:
- verbinden und trennen von Netzwerk Freigaben
- verbinden und trennen von Netzwerk Druckern (Druckwarteschlangen auf Domänen Rechnern oder Servern)
- erfassen aller Benutzer An- und Abmeldungen
(für die Abmeldung ist ein zweites Skript mit gleichem Inhalt notwendig welches unterhalb der >>Login.kix<< steht)
- erstellen einer Datei für Alle An- und Abmeldungen pro Tag
- erfassen aller Rechner von denen sich angemeldet wird (nur Domänen Rechner)
- was wird erfasst: Harware (CPU, Betriebssystem, NetBios Name, RAM, MAC Adresse, IP Adresse)
Software (Alle installierten Programme sowie Patche)
Wobei zu sagen bleibt daß dies bei weitem nicht alles ist was mit Kix möglich ist.
So nun fangen wir mal an
Als erstes laden wir uns mal das aktuelle <a href="http://www.kixtart.org/binary/distrib/KiX ... Paket</a> von <a href="http://www.kixtart.org/">Kixtart. ...; herunter. Derzeitig ist die aktuelle Version 4.51. Nach dem entpacken der Datei benötigen wir erstmal nur die Datei "Kix32.exe" welche wir uns in einen neuen Ordner auf unserer Platte kopieren.
In diesem Ordner erstellen wir eine neue Datei welche wir "login.kix" nennen.
Diese Datei öffnen wir nun mit dem Notepad oder einem beliebigen anderen Editor, Tipp: ich würde die Endung .kix direkt dem Editor zuordnen denn beim arbeiten wird doch öfters mal getestet und dann kann man die Datei mit einem einfachen Doppelklick wieder bearbeiten.
Um unser Skript später zu testen ziehen wir per Drag and Drop unser Skript auf die kix32.exe oder direkt in der DOS Eingabeauffordung
mit "kix32.exe login.kix".
Zur Funktion:
Bereich Variablen
Hier werden die jeweiligen Servernamen gesetzt. In den meisten Fällen wird zwar alles auf einem einzigen Server durchgeführt, sollte es jedoch eine größeres LAN mit mehreren Servern sein, kann es durch aus Sinn machen die einzelnen Funktionen (File-, Druckserver, etc.) auf verschiedene Maschinen zu verteilen
Bereich Netzlaufwerke
Als erstes werden alle vorhandenen Netzlaufwerke getrennt, ganz klar erstmal reinen Tisch machen. Anschließend werden vom Fileserver die Freigaben Benutzer und / oder Gruppen bezogen gemappt. Sollte es mal einen Account "Gast" geben, was ich ja kaum glaube, dann soll dieser nur das Laufwerk "Public" gemappt bekommen. Aus diesem Grund wird direkt nach dem Mapping der Standard Block übersprungen "goto EndSharing" und an der Sprungmarke <:EndSharing> mit dem Skript fortgefahren.
Etwas spezielles ist noch die Freigabe <use z: "\\"+$Fileserver+"\"+@userid+"$">. Hier wird für jeden User ein individuell eine Freigabe, auf die nur er Zugriff hat, gemappt. Ich Verbinde mit dieser Funktion für jeden User ein persönliches Laufwerk, auf welchen er persönliche Dinge ablegen kann. Durch das $ hinter der Freigabge wird diese als nicht sichtbar deklariert und wird beim browsen in der Netzwerk Umgebung auf den Servern nicht angezeigt.
Druck Warteschlangen verbinden
Wenn ich auf dem einem Server Drucker Freigegeben habe, werden diese hier verbunden. Da alte Drucker, welche nicht mehr vorhanden sind, nicht automatisch auf den Clients gelöscht werden, kann ich die Löschung auch per Skript vornehmen. Hier wird Beispielhaft ein nicht mehr vorhandener Laser Drucker von den Clients gelöscht. Anschließend werden noch zwei weitere Drucker verbunden. Die Druckertreiber werden in der Regel automatisch vom Server auf die Clients übertragen. Wenn sich die Clients das erste mal mit dem Server verbinden dauert die Anmeldung etwas länger da die Druckertreiber komplett mit übertragen werden müssen. Bei weiteren Anmeldungen geht der Anmeldevorgang dann zügiger von statten.
Bereich Hardware
Kix stellt einige Variablen zur Verfügung, welche Informationen über das System enthalten. Diese Variablen an einem beginnenden @ Zeichen (Bsp.: @CPU) zu erkennen. Hier verweise ich auf die Dokumentation "Kix2010.doc" welche im Download enthalten ist. Die Hardware Informationen sind bis auf die IP-Adresse (@IPADRESS0) selbsterklärend. Bei @IPADRESSx muß das x durch einen Wert zwischen 0 und 3 ersetzt werden. Dieser gibt an welche IP-Adresse angezeigt werden soll. Ich habe mich in diesem Skript auf die erste Adresse beschränkt da es leider nur eine Möglichkeit gibt die MAC Adresse der ersten NIC anzuzeigen. Die einzelnen Blöcke der IP-Adresse werden mit führenden Leerzeichen dargestellt (z.B. 192.168. 2. 12). Wer dieses umgehen möchte, da die Daten eventuell weiterverarbeitet werden sollen, der sollte sich einmal den Befehl Split und Element anschauen. Hiermit ist es möglich die Leerzeichen zu entfernen. Ich habe diesen Code aus dem Skript rausgelassen, habe ihn jedoch am Ende der Doku angefügt. Diesen Code bei Bedarf mit der Stelle mit der Ausgabe der IP-Adresse ersetzen.
Bereich Software
Um zu erfahren welche Software installiert ist, liest das Skript die Registry Einträge aus dem Pfad "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" aus. Wie hier zum auslesen der Software, ist es auch möglich eigene Registry Einträge zu erstellen, auszulesen, zu ändern oder zu löschen. Ich hatte diese einmal genutzt um in Zeiten wo es noch keinen SUS bzw. WSUS gab erfahren ob Microsoft Patche installiert sind (Jaja die guten alten Würmer). Bitte in der Doku nach "DELKEY, DELVALUE, ENUMKEY, ENUMVALUE, KEYEXIST, READTYPE, READVALUE, WRITEVALUE" suchen.
Bereich Anmeldung und Abmeldung
Hier wird lediglich zu Beginn geschaut, ob es für den aktuellen Tag bereits eine Login Datei gibt. Wenn die Datei noch nicht existiert wird zusätzlich zu den Anmeldeinformationen ein Header geschrieben, damit die Datei übersichtlicher wird. Auch hier werden wieder System Variablen welche Kix zu Verfügung stellt angewendet um Informationen zu erhalten. In meinem Beispiel wird für jeden Tag eine neue Login Datei generiert. In kleineren Domänen könnte man sich auch auf eine Datei Pro Woche bzw. Pro Monat beschränken. Hierfür muß lediglich der Datei name angepasst werden (z.B. Anmeldungen "+" @YEAR+"."+@MONTHNO+".TXT" für eine Datei Pro Monat).
Für die Abmeldung wird der gleiche Code verwendet wie für die Anmeldung, wobei zu beachten ist das in der Zeile <? "¦"$user"¦ "$client" ¦ "@DATE" ¦ "@TIME" ¦ "$lserver" ¦ i ¦"> das kleine i durch ein o ersetzt wird. Es ist natürlich möglich hier einen x-beliebigen Begriff für Login und Logoff einzusetzen.
Wo setze ich nun die Skripte ein und wie aktiviere ich diese?
Die drei Dateien kix32.exe, login.kix und die logoff.kix kopieren wir in die NETLOGON Freigabe in unserer Domäne. Jetzt erstellen wir noch eine Gruppenrichtlinie die für alle User greift. Am besten eine eigene OU a la "Firmen User" erstellen und alle User Konten hierher verschieben wenn noch nicht geschehen. Für diese OU eine GPO erstellen. In dieser GPO folgende Eigenschaften eintragen.
- Benutzerkonfiguration -> Windows-Einstellungen -> Skripts (Anmeldn/Abmelden)
-Anmelden-
- Skriptname = "\\DeinDomänenname\SYSVOL\DeinDomänenname\scripts\kix32.exe"
- Skriptparameter "login.kix"
-Abmelden-
- Skriptname = "\\DeinDomänenname\SYSVOL\DeinDomänenname\scripts\kix32.exe"
- Skriptparameter "logoff.kix"
So jetzt nur noch speichern der GPO und anschließen testen.
Wenn man nur das Anmeldeskript benötigt (warum auch immer) kann man das Skript auch für jeden User in den Benutzereinstellungen auf der Reiterkarte Profil einrichten ("kix32.exe login.kix"). Zum testen kann man das Skript auch erstmal in einem DOS Fenster laufen lassen um zu prüfen ob alles einwandfrei funktioniert.
Hier nochmal der Link zur offiziellen Kixtart Seite http://www.kixtart.org
So das war es erstmal soweit von mir, ich denke jetzt schickts auch. Ich habe in diesem Skript nicht alles umgesetzt was möglich ist, lediglich die Dinge welche bei mir aus der Praxis heraus wichtig sind. Deshalb sollte dieses Tutorial bitte nicht als Versuch einer Komplett Dokumentation von Kix und dessen Möglichkeiten gesehen werden sondern nur als Anregung und Starthilfe für An- und Abmeldeskripte in Windows Domänen. Eine interessante Erweiterung wäre z.B. eine Erweiterung dahin, das für Lizenzpflichtige Softwarepakete ein Datei mit den aktuell installierten Lizenzen generiert wird. Naja Ihre habt bestimmt auch noch ettliche Ideen was Sinnvoll ist oder auch nicht. Ich hoffe das im Forum noch ein wenig darüber diskutiert wird damit wir alle nach kurzer Zeit mit einer optimierten Skript Lösung arbeiten können. Denn eigentlich haben wir doch alle das gleiche Ziel?
Grüße und viel Spaß beim Skripten
PS: Ich bitte um nachsehen für eventuelle Fehler, für unklare Beschreibungen und ich hoffe ich habe nichts wichtiges vergessen. Because pobody is nerfect!
!!!Die Namen für die / den Server sowie die Freigaben, User- und Gruppennamen müssen natürlich an Eure Struktur angepasst werden!!!
>>login.kix<< -- Ab hier den Inhalt markieren und in die Datei login.kix kopieren.
<font class="code">
; ### Das Anmeldeskript soll sichtbar ausgeführt werden und das Fenster für das Skript erhält mit SETTITLE eine Bezeichnung.
; ### Hier könnte stehen der Firmenname, auch Datum und Uhrzeit oder Informationen für Mitarbeiter.
; ### Wobei diese auch mit einer MessageBox realisiert werden können.
;
SETCONSOLE("show")
SETCONSOLE("maximized")
SETTITLE("Anmeldeskript für Meine Domäne 2006")
;
;
; *
; Variablen deklarieren
; *
;
$FileServer="ServerNameFileServer"
; ### Name des Servers auf welchem sich die Freigaben befinden
; ### alternativ kann auch natürlich auch eine IP-Adresse angegeben werden
;
$ProtokollServer="ServerNameProtokollServer"
; ### Name des Servers auf welchem die Freigabe für die Dokumentation
; ### der An- und Abmeldungen sowie der Rechner Infos liegt
;
$PrintServer="ServerNameDruckWarteSchlangen"
; ### Name des Servers auf welchem (falls vorhanden) die Drucker
; ### eingerichtet und freigegeben sind die verbunden werden sollen
;
;
; Alle vorhandenen Netzlaufwerke löschen
;
use "*" /delete
;
;
; *
; Netzlaufwerke Gruppen bezogen verbinden
; *
if ingroup("grpBuchhaltung")
use f: "\\"+$Fileserver+"\Buchhaltung"
endif
if ingroup("grpLeitung")
use l: "\\"+$FileServer+"\Leitung"
endif
; ### Für weitere Freigaben einfach einen oberen Block kopieren und anfügen
;
;
;
; Netzlaufwerke Benutzer bezogen verbinden
;
if @userid="Administrator"
use x: "\\"+$ProtokollServer+"\login$"
;das ist die Freigabe wo die Login Protokolle abgelegt werden
;natürlich soll diese nur der Admininstrator sehen
endif
if @userid="Gast"
use p: "\\"+$Fileserver+"\public"
goto EndSharing
endif
;
;
;
; Netzlaufwerke für jeden User verbinden
;
use g: "\\"+$Fileserver+"\Gemeinsames"
use s: "\\"+$Fileserver+"\Schriftverkehr"
use v: "\\"+$Fileserver+"\Vorlagen"
use z: "\\"+$Fileserver+"\"+@userid+"$"
:EndSharing
;
;
;
; Alte Drucker löschen
;
If DELPRINTERCONNECTION ("\\"+$PrintServer+"\LaserJet") = 0
? "Alter Laserdrucker wurde erfolgreich entfernt"
Endif
;
;
; *
; Drucker verbinden
; *
If ADDPRINTERCONNECTION ("\\"+$PrintServer+"\LaserJetColor") = 0
? "Drucker Farblaserdrucker wurde verbunden"
Endif
If ADDPRINTERCONNECTION ("\\"+$PrintServer+"\LaserZentrale") = 0
? "Drucker Laserdrucker Zentrale wurde verbunden"
Endif
;
;
; *
; Hardware Informationen auslesen
; *
;
: ### Ausgabe auf die Datei "Rechnername_info.txt" umleiten anstelle des Bildschirmes
$result=ReDirectOutput ("\\"+$ProtokollServer+"\login$\"+@Hostname+"_info.txt" ,1)
;
; ### Ab jetzt werden alle Printanweisungen in die Datei "Rechnername_info.txt" ausgegeben
? "Stand "@DATE" - "@TIME
? ""
? "* Rechner Information *"
?"NetBIOS Name: "@WKSTA
?"Letzter Login von: "@USERID
?"OS: "@PRODUCTTYPE" with "@CSD
?"CPU Modell: " @CPU
?"CPU Takt: "@MHZ " MHz"
?"Speicher: "MemorySize(0)" MB"
?"IP Adresse: " @IPADRESS0
?"MAC Adresse: "@ADDRESS
?""
;
; *
; Software Informationen auslesen
; *
;
; ### die installierte Software wird anhand der Uninstall Informationen der Registry ausgelesen, es wird
; ### solange gelesen bis im Reg Pfad keine Einträge mehr vorhanden sind, durch den Error wird dann die
; ### Schleife zur Sprungmark :Login verlassen
;
?"* installierte Software *"
$Index = 0
:Loop1
$KeyName = EnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", $Index)
If @ERROR = 0
Goto DisplayCheck
Else
Goto Login
EndIf
:DisplayCheck
$Displayname = ReadValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$Keyname","DisplayName")
If @ERROR = 0
$Index = $Index + 1
?$Displayname
Goto Loop1
Else
Goto Login
endif
:Login
;
;
; Login Informationen pro User
;
;
; ### hier wird die Ausgabe wieder auf die Protokoll Datei für den jeweiligen Tag umgeleitet
$result=ReDirectOutput ("\\"+$ProtokollServer+"\login$\Anmeldungen " + @YEAR + "."+ @MONTHNO + "." + @MDAYNO + ".txt" ,0)
;
; ### jetzt wird geprüft ob die Datei bereits existiert, wenn ja wird der Header nicht noch einmal in die Datei geschrieben
; ### da dieser bereits vorhanden ist.
$logExist=Exist("\\"+$ProtokollServer+"\login$\Anmeldungen " + @YEAR + "."+ @MONTHNO + "." + @MDAYNO + ".txt")
if $logExist = 0
? "+-------------------------------------------------------------------------------------------------+"
? "¦Benutzername ¦ Client ¦ Datum ¦ Uhrzeit ¦ Anmeldeserver ¦ i=login o=logout¦"
? "¦-------------+----------------------+------------+----------+------------------+-----------------¦"
endif
$user = @userid+left(" ",(13-len(@userid)))
$client = @WKSTA+left(" ",(20-len(@WKSTA)))
$lserver = @LSERVER+left(" ",(18-len(@LSERVER)))
$lserver = right($lserver,(len($lserver)-2))
? "¦"$user"¦ "$client" ¦ "@DATE" ¦ "@TIME" ¦ "$lserver" ¦ i ¦"
Exit
</font>
>>Ende Login.kix<<
>>Logoff.kix<<-- Ab hier den Inhalt markieren und in die Datei logoff.kix kopieren.
<font class="code">
; *
; Logoff Informationen pro User
; *
;
$result=ReDirectOutput ("\\"+$ProtokollServer+"\login$\Anmeldungen " + @YEAR + "."+ @MONTHNO + "." + @MDAYNO + ".txt" ,0)
$logExist=Exist("\\"+$ProtokollServer+"\login$\Anmeldungen " + @YEAR + "."+ @MONTHNO + "." + @MDAYNO + ".txt")
if $logExist = 0
? "+-------------------------------------------------------------------------------------------------+"
? "¦Benutzername ¦ Client ¦ Datum ¦ Uhrzeit ¦ Anmeldeserver ¦ i=login o=logout¦"
? "¦-------------+----------------------+------------+----------+------------------+-----------------¦"
endif
$user = @userid+left(" ",(13-len(@userid)))
$client = @WKSTA+left(" ",(20-len(@WKSTA)))
$lserver = @LSERVER+left(" ",(18-len(@LSERVER)))
$lserver = right($lserver,(len($lserver)-2))
? "¦"$user"¦ "$client" ¦ "@DATE" ¦ "@TIME" ¦ "$lserver" ¦ o ¦"
</font>
>>Ende Logoff.kix<<
>>Funktion zum entfernen der Leerzeichen in der IP Adresse<<
Den Code <?"IP Adresse: " @IPADRESS0> mit diesem ersetzen.
<font class="code">
; ### Dieser Code entfernt Leerzeichen aus der @IPADRESS0
$a = 0
$Myarray = Split(@IPADDRESS0 , " ")
For Each $Element In $MyArray
if $a = 0
$IP0 = $Element
endif
if $a= 1
$IP1= $Element
endif
if $a= 2
$IP2= $Element
endif
if $a = 3
$IP3 = $Element
endif
if $a = 4
$IP4 = $Element
endif
if $a = 5
$IP5 = $Element
endif
if $a = 6
$IP6 = $Element
endif
if $a= 7
$IP7 = $Element
endif
if $a= 8
$IP8 = $Element
endif
if $a = 9
$IP9 = $Element
endif
if $a = 10
$IP10 = $Element
endif
$a = $a + 1
Next
?"IP Adresse: " + +$IP0 + $IP1 + $IP2 + $IP3 + $IP4 + $IP5 + $IP6 + $IP7 + $IP8 + $IP9 + $IP10
</font>
Biber schreibt am 18.01.2006 um 22:00:52 Uhr
Moin CoachCoach,
auch wenn man/frau eigentlich keine Kommentare unter Tutorials schreiben sollte...
Vielen Dank!
@alle zur Info:
Wegen des erhöhten Interesses an KiX in letzter Zeit werde ich mich für die Einrichtung eines Bereichs "KiX" unterhalb "Entwicklung->Programmierung" einsetzen.
Zum besseren Wiederfinden.
Gruß Biber
P.S.
; ### Auch dieser Code entfernt Leerzeichen aus der @IPADRESS0
Dim $Myarray = Split(@IPADDRESS0 , " ")
$IP =""
For Each $Element In $MyArray
$IP = $IP + Trim($Element)
Next
? "IP Adresse: " + $IP
;--oder dieser:
; ### Auch dieser Code entfernt Leerzeichen aus der @IPADRESS0
Dim $Myarray = Split(@IPADDRESS0 , ".")
$IP =Trim($MyArray[0])+"." +Trim($MyArray[1])+"." Trim($MyArray[2])+"." +Trim($MyArray[3])
? "IP Adresse: " + $IP
auch wenn man/frau eigentlich keine Kommentare unter Tutorials schreiben sollte...
Vielen Dank!
@alle zur Info:
Wegen des erhöhten Interesses an KiX in letzter Zeit werde ich mich für die Einrichtung eines Bereichs "KiX" unterhalb "Entwicklung->Programmierung" einsetzen.
Zum besseren Wiederfinden.
Gruß Biber
P.S.
; ### Auch dieser Code entfernt Leerzeichen aus der @IPADRESS0
Dim $Myarray = Split(@IPADDRESS0 , " ")
$IP =""
For Each $Element In $MyArray
$IP = $IP + Trim($Element)
Next
? "IP Adresse: " + $IP
;--oder dieser:
; ### Auch dieser Code entfernt Leerzeichen aus der @IPADRESS0
Dim $Myarray = Split(@IPADDRESS0 , ".")
$IP =Trim($MyArray[0])+"." +Trim($MyArray[1])+"." Trim($MyArray[2])+"." +Trim($MyArray[3])
? "IP Adresse: " + $IP
CouchCoach schreibt am 19.01.2006 um 13:43:32 Uhr
Tja so isses halt nunmal, viele Wege führen nach Rom doch kann man immer nur einen gehen.
Nach dem Motto "Der Weg ist das Ziel" bin ich halt mal den längeren gegangen
Grüße
Nach dem Motto "Der Weg ist das Ziel" bin ich halt mal den längeren gegangen
Grüße
CouchCoach schreibt am 23.01.2006 um 12:03:09 Uhr
Kix läuft auch ab Win95 jedoch werden Einige Funktionen erst ab Windows NT unterstützt. Und wenn das OS kleiner wie NT ist benötigt man noch eine spezielle DLL damit KIX unter Win9x / ME läuft.
Also kein Problem mit Windows NT+++
Also kein Problem mit Windows NT+++
CouchCoach schreibt am 23.01.2006 um 12:46:09 Uhr
juppt, wo es Probleme geben wird ist bei der Verteilung der Drucker, falls du z.B. Windows 2000 oder Pro Clients hast weil der Druckertreiber dann nicht passt.
Grüße
Grüße
stash schreibt am 30.01.2006 um 13:58:11 Uhr
Hallo,
ersteinmal vielen Dank für die Bereitstellung des Skriptes. Ich habs direkt mal bei uns eingebaut und getestet. Eine Frage hab ich aber noch:
Bei der Abfrage der Software-Keys gibt es unter WinXP welche, die einen richtigen Namen haben und auch andere, die ebend nach dem Muster {000-000-000-usw} aufgebaut sind.
Bei mir listet er diese z.b. garnicht auf, obwohl unter jedem einzelnen auch unter "DisplayName" ein Softwarename steht. Desweiteren komtm das Skript ein bisschen ins stocken, wenn auf einmal der Wert "DisplayName" nicht gefüllt ist:
Hier ein Beispiel:
Der Eintag DirectDrawEx hat z.B. keinen Wert. Deswegen gibt das Skript auch einen Fehler zurück und die Schleife beendet sich.
Vielleicht könnt Ihr dieses Problem lösen, da ich just heute erst mit Kix angefangen habe.
Wäre zumindest echt gut für die Einführung.
Ansonsten scheint Kix aber trotzalledem sehr mächtig zu sein. Naja, auf jedenfall mehr, als wie die alten Batch-Skripte.
Gruß, Stash
ersteinmal vielen Dank für die Bereitstellung des Skriptes. Ich habs direkt mal bei uns eingebaut und getestet. Eine Frage hab ich aber noch:
Bei der Abfrage der Software-Keys gibt es unter WinXP welche, die einen richtigen Namen haben und auch andere, die ebend nach dem Muster {000-000-000-usw} aufgebaut sind.
Bei mir listet er diese z.b. garnicht auf, obwohl unter jedem einzelnen auch unter "DisplayName" ein Softwarename steht. Desweiteren komtm das Skript ein bisschen ins stocken, wenn auf einmal der Wert "DisplayName" nicht gefüllt ist:
Hier ein Beispiel:
Der Eintag DirectDrawEx hat z.B. keinen Wert. Deswegen gibt das Skript auch einen Fehler zurück und die Schleife beendet sich.
Vielleicht könnt Ihr dieses Problem lösen, da ich just heute erst mit Kix angefangen habe.
Wäre zumindest echt gut für die Einführung.
Ansonsten scheint Kix aber trotzalledem sehr mächtig zu sein. Naja, auf jedenfall mehr, als wie die alten Batch-Skripte.
Gruß, Stash
CouchCoach schreibt am 01.02.2006 um 09:01:02 Uhr
Hi Stash,
habe eben deinen Kommentar gelesen, ich werde mich am WE mal dran setzen, da ich zurzeit etwas im Arbeitsstreß bin.
Grüße
habe eben deinen Kommentar gelesen, ich werde mich am WE mal dran setzen, da ich zurzeit etwas im Arbeitsstreß bin.
Grüße
knolli75 schreibt am 13.04.2006 um 11:09:04 Uhr
Hallo,
ich habe das Script eingesetzt. Es funktioniert auch ziemlich gut.
Allerdings wird bei mir in der Hardwaredoku bei der IPAdresse nur ein 0 angezeigt.
Unter Installierte Software wird kein Eintrag angelegt.
Wo kann denn da das Problem liegen ?
ich habe das Script eingesetzt. Es funktioniert auch ziemlich gut.
Allerdings wird bei mir in der Hardwaredoku bei der IPAdresse nur ein 0 angezeigt.
Unter Installierte Software wird kein Eintrag angelegt.
Wo kann denn da das Problem liegen ?
CouchCoach schreibt am 13.04.2006 um 11:22:08 Uhr
Hi Knolli,
es wird hier nur die IP der 1. NIC Karte bzw. Verbindung ausgelesen. Wenn du mehrere NIC´s einsetzt bzw. DFÜ Verbindungen eingerichtet hast könnte hier das Problem liegen.
Versuche einmal anstelle von @IPADRESS0 @IPADRESS1 oder 2 etc..
Die installierte Software wird aus der Registry ausgelesen. Welches OS setzt du denn ein? Vielleicht ist bei dir der Reg-Pfad etwas anders (NT 4.0?).
Grüße Kai
es wird hier nur die IP der 1. NIC Karte bzw. Verbindung ausgelesen. Wenn du mehrere NIC´s einsetzt bzw. DFÜ Verbindungen eingerichtet hast könnte hier das Problem liegen.
Versuche einmal anstelle von @IPADRESS0 @IPADRESS1 oder 2 etc..
Die installierte Software wird aus der Registry ausgelesen. Welches OS setzt du denn ein? Vielleicht ist bei dir der Reg-Pfad etwas anders (NT 4.0?).
Grüße Kai
knolli75 schreibt am 13.04.2006 um 12:16:29 Uhr
Das nenne ich aber eine schnelle Antwort.
Ich versuche mal die Nr. für die Netzwerkkarte anzupassen.
Mit der Software sieht es so aus, dass die ersten Einträge nicht als Wort sondern als {000-000-000-usw} angezeigt werden. Ich denke dass diese eventuell als error ausgeworfen werden. Wenn dem so ist, wie kann ich es am besten umgehen ?
Ich versuche mal die Nr. für die Netzwerkkarte anzupassen.
Mit der Software sieht es so aus, dass die ersten Einträge nicht als Wort sondern als {000-000-000-usw} angezeigt werden. Ich denke dass diese eventuell als error ausgeworfen werden. Wenn dem so ist, wie kann ich es am besten umgehen ?
knolli75 schreibt am 19.04.2006 um 11:30:58 Uhr
Was ist denn wenn die ersten Einträge unter der Software-Übersicht im Format {00000407-78E1-11D2-B60F-006097C998E7} aufgebaut sind ? Die werden wahrscheinlich als Fehler angezeigt und werden in der Übersicht nicht angezeigt, bzw. die Darstellung wird ab dem Eintrag gestoppt. Wie kann ich diese Einträge aber trotzdem mit protokollieren lassen oder vielleicht auslassen ?
backfight schreibt am 16.01.2007 um 14:25:59 Uhr
Hi,
Super Script! Muss ich schon sagen. Die einzige Stelle die mir Probleme macht ist diese hier:
$result=ReDirectOutput ("\\"+$ProtokollServer+"\login$\"+@Hostname+"_info.txt" ,1)
Da speichert er mir nix aufm Server.
Nur wenn ich es so abänder:
$result=ReDirectOutput ("C:\Inventar\"+@Hostname+"_info.txt" ,1)
Aber dann legt er mir die Datein jeweils auf den Rechnern an
Ich vermute es ist nur nen simpler Syntax fehler aber kann mir da jemand helfen?
Gruß
Backfight
Super Script! Muss ich schon sagen. Die einzige Stelle die mir Probleme macht ist diese hier:
$result=ReDirectOutput ("\\"+$ProtokollServer+"\login$\"+@Hostname+"_info.txt" ,1)
Da speichert er mir nix aufm Server.
Nur wenn ich es so abänder:
$result=ReDirectOutput ("C:\Inventar\"+@Hostname+"_info.txt" ,1)
Aber dann legt er mir die Datein jeweils auf den Rechnern an
Ich vermute es ist nur nen simpler Syntax fehler aber kann mir da jemand helfen?
Gruß
Backfight
CouchCoach schreibt am 16.01.2007 um 15:40:00 Uhr
Hi Backfight,
hast du auf dem Protokollserver eine Ordner Freigabe die login$ heißt?
Grüße Kai
hast du auf dem Protokollserver eine Ordner Freigabe die login$ heißt?
Grüße Kai
CouchCoach schreibt am 16.01.2007 um 15:40:51 Uhr
Hi Backfight,
hast du auf dem Protokollserver eine Ordner Freigabe die login$ heißt?
Grüße Kai
hast du auf dem Protokollserver eine Ordner Freigabe die login$ heißt?
Grüße Kai
backfight schreibt am 17.01.2007 um 07:56:04 Uhr
Kommando zurück. Habs hinbekommen.
Mich würde freun, das wenn das Script abgearbeitet ist auf einem Client der sich an der domain anmeldet, so ein kleines fenster kommt mit:
Datum
Zeit
User ID
Full Name
Privilegien
OS Vers.
Computername
Und dann Irgendwie sowas Guten Morgen/ Guten Tag %Username%
Je nach Zeit
Ist das möglich? Wenn ja wie? Ich bekomme die Syntax immernur irgendwie falsch hin *g*
Gruß
Backfight
Mich würde freun, das wenn das Script abgearbeitet ist auf einem Client der sich an der domain anmeldet, so ein kleines fenster kommt mit:
Datum
Zeit
User ID
Full Name
Privilegien
OS Vers.
Computername
Und dann Irgendwie sowas Guten Morgen/ Guten Tag %Username%
Je nach Zeit
Ist das möglich? Wenn ja wie? Ich bekomme die Syntax immernur irgendwie falsch hin *g*
Gruß
Backfight
CouchCoach schreibt am 17.01.2007 um 09:15:07 Uhr
Moin Backfight,
also mit einer Messagebox (kleines Fenster halt) würde ich die User nicht belästigen, so was wird aus der Erfahrung heraus einfach weggeklickt und basta. Wenn du, zwecks Help Desk, von den Usern Infos zu deren Rechnern benötigst würde ich die das Tool Background Info (bginfo) empfehlen. Damit kannst du genau die Infos die du genannt hast beim Start des Rechners bzw. nach der Anmeldung auf den Desktop projezieren. Somit sind die Informationen immer griffbereit
Grüße Kai
also mit einer Messagebox (kleines Fenster halt) würde ich die User nicht belästigen, so was wird aus der Erfahrung heraus einfach weggeklickt und basta. Wenn du, zwecks Help Desk, von den Usern Infos zu deren Rechnern benötigst würde ich die das Tool Background Info (bginfo) empfehlen. Damit kannst du genau die Infos die du genannt hast beim Start des Rechners bzw. nach der Anmeldung auf den Desktop projezieren. Somit sind die Informationen immer griffbereit
Grüße Kai
backfight schreibt am 17.01.2007 um 10:12:04 Uhr
Gut hast mich überzeugt.
Kannst du mir denn sagen wie man am besten ein Userlaufwerk auf einem Fileserver mappt?
irgendwie so nach dem motto: use H: \\fileserver\%username%
??
Ich komme mit der syntax nicht klar desswegen frage ich
Oder kann man das noch besser realisieren?
Gruß
Backfight
Kannst du mir denn sagen wie man am besten ein Userlaufwerk auf einem Fileserver mappt?
irgendwie so nach dem motto: use H: \\fileserver\%username%
??
Ich komme mit der syntax nicht klar desswegen frage ich
Oder kann man das noch besser realisieren?
Gruß
Backfight
CouchCoach schreibt am 17.01.2007 um 10:22:33 Uhr
Für was soll das Laufwerk den dienen, Profile oder Dateiablage wo nur der jeweilige Benutzer zugriff hat?
backfight schreibt am 17.01.2007 um 15:09:20 Uhr
Habs wieder hinbekommen.
Jetzt stehe ich aber vor dem Problem Drucker anzulgen Pro Gruppe im ADS.
Die Drucker sind alle auf dem DomainController installiert.
Wie lautet das Script und wie muss ich vorgehen?
Bitte helft mir noch einmal
Ich denke das werd ich nicht so schnell lösen
Jetzt stehe ich aber vor dem Problem Drucker anzulgen Pro Gruppe im ADS.
Die Drucker sind alle auf dem DomainController installiert.
Wie lautet das Script und wie muss ich vorgehen?
Bitte helft mir noch einmal
Ich denke das werd ich nicht so schnell lösen
CouchCoach schreibt am 18.01.2007 um 12:57:07 Uhr
Hi Backfight,
also die Drucker müssen nicht im ADS freigegeben sein, werden sie aber in einer Domäne standardmäßig.
Also als erstes den Printserver definieren (bei die dein DC)
$PrintServer = "MeinDC"
So jetzt die einzelnen Gruppen abfragen und die Drucker zuweisen
if ingroup("grpLaserDruckerMono")
If ADDPRINTERCONNECTION ("\\"+$PrintServer+"\LaserMono") = 0
? "Drucker Laserdrucker Zentrale wurde verbunden"
Endif
goto EndeDrucker
endif
if ingroup("grpLaserDruckerColor")
If ADDPRINTERCONNECTION ("\\"+$PrintServer+"\LaserColor") = 0
? "Drucker Laserdrucker Zentrale wurde verbunden"
Endif
goto EndeDrucker
endif
:EndeDrucker
und weiter mit deinem Script.....
Grüße Kai
PS.: Wenns noch nicht so klappen will, poste einfach nochmal dein Problem, am besten packst du mal dein script mit rein!!!
also die Drucker müssen nicht im ADS freigegeben sein, werden sie aber in einer Domäne standardmäßig.
Also als erstes den Printserver definieren (bei die dein DC)
$PrintServer = "MeinDC"
So jetzt die einzelnen Gruppen abfragen und die Drucker zuweisen
if ingroup("grpLaserDruckerMono")
If ADDPRINTERCONNECTION ("\\"+$PrintServer+"\LaserMono") = 0
? "Drucker Laserdrucker Zentrale wurde verbunden"
Endif
goto EndeDrucker
endif
if ingroup("grpLaserDruckerColor")
If ADDPRINTERCONNECTION ("\\"+$PrintServer+"\LaserColor") = 0
? "Drucker Laserdrucker Zentrale wurde verbunden"
Endif
goto EndeDrucker
endif
:EndeDrucker
und weiter mit deinem Script.....
Grüße Kai
PS.: Wenns noch nicht so klappen will, poste einfach nochmal dein Problem, am besten packst du mal dein script mit rein!!!
backfight schreibt am 18.01.2007 um 13:50:20 Uhr
Funktioniert nicht 
Hier der Code:
;*
; Drucker den Abteilungen zuordnen
;*
$PrintServer = "DC"
if ingroup("TestGruppe")
If ADDPRINTERCONNECTION ("\\"+$PrintServer+"\NRG DSm725 Test") = 0
? "Drucker Laserdrucker Test wurde verbunden"
Endif
goto EndeDrucker
endif
:EndeDrucker
da mach ich doch sicher was mit der syntax falsch oder?
Gruß
Backfight
Hier der Code:
;*
; Drucker den Abteilungen zuordnen
;*
$PrintServer = "DC"
if ingroup("TestGruppe")
If ADDPRINTERCONNECTION ("\\"+$PrintServer+"\NRG DSm725 Test") = 0
? "Drucker Laserdrucker Test wurde verbunden"
Endif
goto EndeDrucker
endif
:EndeDrucker
da mach ich doch sicher was mit der syntax falsch oder?
Gruß
Backfight
CouchCoach schreibt am 18.01.2007 um 13:56:19 Uhr
Probier mal das script hier aus
if ingroup("TestGruppe")
? "JA Benutzer ist in der Gruppe
endif
Klappt das, dann ersetzte ? "Ja Benutzer.... durch die AddPrinterConnection Anweisung.
Prüfe nach ist der DC eintrag korrekt, stimmt der Freigabename, hast du rechte dich mit dem Drucker zu verbinden.....
Grüße
if ingroup("TestGruppe")
? "JA Benutzer ist in der Gruppe
endif
Klappt das, dann ersetzte ? "Ja Benutzer.... durch die AddPrinterConnection Anweisung.
Prüfe nach ist der DC eintrag korrekt, stimmt der Freigabename, hast du rechte dich mit dem Drucker zu verbinden.....
Grüße
Biber schreibt am 19.01.2007 um 08:27:56 Uhr
Moin backfive,
CoachCoach hat doch die "richtige" Syntax vorgekaspert. Ist doch ein Tutorial hier.
"Richtig" in obigem Sinne heißt: konform mit den beiden üblichen KiX-Referenzen "kix2010.doc" und "KiXhelp451.chm", die auf www.Kixtart.org empfohlen werden.
Siehe oben bei CoachCoach.
Um nochmal eine mögliche Fehlerquelle anzugeben:
Und bei Deinem letzten geposteten Beispiel ist entweder ein Anführungszeichen zuviel oder zuwenig.
Geht Dein Programm nun in diese InGroup-Verzweigung oder nicht oder weißt Du es nicht?
Gruß
Biber
Weil ich hab mal gegoogelt ...
WTF is "google"?...und jeder schreibt den ADPRINTERCONNECTION Befehl irgendwie anders!!??!
Ist das deren Problem oder Deins?CoachCoach hat doch die "richtige" Syntax vorgekaspert. Ist doch ein Tutorial hier.
"Richtig" in obigem Sinne heißt: konform mit den beiden üblichen KiX-Referenzen "kix2010.doc" und "KiXhelp451.chm", die auf www.Kixtart.org empfohlen werden.
Siehe oben bei CoachCoach.
Um nochmal eine mögliche Fehlerquelle anzugeben:
Syntax
ADDPRINTERCONNECTION ("printer name")
Parameters
Printer name
The (share)name of the printer to which to connect.
----------> das heißt, Du musst den Drucker unter seinem Freigabe-Namen ansprechen. Und...ADDPRINTERCONNECTION ("printer name")
Parameters
Printer name
The (share)name of the printer to which to connect.
When Windows NT connects to the printer, it may copy printer driver files to the local computer.
If the user does not have permission to copy files to the appropriate location, ADDPRINTERCONNECTION fails, and @ERROR returns ERROR_ACCESS_DENIED
----------> Und das wäre auch das sinnvollste: erstmal den (Fehler-)Rückgabewert zu erfahren.If the user does not have permission to copy files to the appropriate location, ADDPRINTERCONNECTION fails, and @ERROR returns ERROR_ACCESS_DENIED
Und bei Deinem letzten geposteten Beispiel ist entweder ein Anführungszeichen zuviel oder zuwenig.
Geht Dein Programm nun in diese InGroup-Verzweigung oder nicht oder weißt Du es nicht?
Gruß
Biber
backfight schreibt am 19.01.2007 um 08:40:57 Uhr
Ich weiß es nicht ob das Script in die verzweigung geht. Ich weiß nicht mal wo der Wert dann ausgegeben wird wenn er nicht in den Zweig geht. Ich muss dazu sagen das ich Kix seid 4 oder 5 Tagen kenne/Benutze. Daher keinerleih Ahnung davon habe. Das ich meine vorherigen Probleme hinbekommen habe ist Glück gewesen. Erschwerend kommt dazu das ich auch das erste mal eine Domäne hochziehe / Daher nicht viel Ahnung habe. Also was kann ich machen?
Sorry wenn ich hier nerve
Gruß
Backfight
Sorry wenn ich hier nerve
Gruß
Backfight
ceng.de schreibt am 24.07.2010 um 19:29:22 Uhr
Hat jemand eine Idee, warum dieses Script bei Windows 7 im Bereich Softwareinventar nicht mehr funktioniert?
; Software Informationen auslesen
; *
;
; ### die installierte Software wird anhand der Uninstall Informationen der Registry ausgelesen, es wird
; ### solange gelesen bis im Reg Pfad keine Einträge mehr vorhanden sind, durch den Error wird dann die
; ### Schleife zur Sprungmark :Login verlassen
;
?"* installierte Software *"
$Index = 0
:Loop1
$KeyName = EnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", $Index)
If @ERROR = 0
Goto DisplayCheck
Else
Goto Login
EndIf
:DisplayCheck
$Displayname = ReadValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$Keyname","DisplayName")
If @ERROR = 0
$Index = $Index + 1
?$Displayname
Goto Loop1
Else
Goto Login
endif
--> Der Pfad besteht noch so in Windows 7
Hier zum Vergleich ein Eintrag aus meinem Uninstall Hive...
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinRAR archiver]
"DisplayName"="WinRAR"
"UninstallString"="C:\\Program Files\\WinRAR\\uninstall.exe"
"DisplayIcon"="C:\\Program Files\\WinRAR\\WinRAR.exe"
"NoModify"=dword:00000001
"NoRepair"=dword:00000001
; Software Informationen auslesen
; *
;
; ### die installierte Software wird anhand der Uninstall Informationen der Registry ausgelesen, es wird
; ### solange gelesen bis im Reg Pfad keine Einträge mehr vorhanden sind, durch den Error wird dann die
; ### Schleife zur Sprungmark :Login verlassen
;
?"* installierte Software *"
$Index = 0
:Loop1
$KeyName = EnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", $Index)
If @ERROR = 0
Goto DisplayCheck
Else
Goto Login
EndIf
:DisplayCheck
$Displayname = ReadValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$Keyname","DisplayName")
If @ERROR = 0
$Index = $Index + 1
?$Displayname
Goto Loop1
Else
Goto Login
endif
--> Der Pfad besteht noch so in Windows 7
Hier zum Vergleich ein Eintrag aus meinem Uninstall Hive...
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinRAR archiver]
"DisplayName"="WinRAR"
"UninstallString"="C:\\Program Files\\WinRAR\\uninstall.exe"
"DisplayIcon"="C:\\Program Files\\WinRAR\\WinRAR.exe"
"NoModify"=dword:00000001
"NoRepair"=dword:00000001
TxWcA schreibt am 11.08.2010 um 13:38:29 Uhr
Hallo zusammen
Ich habe versucht das Script nachzubauen, jedoch ohne Erfolg.
Hab zuerst die Version von Kix 461 runtergeladen und die kix32.exe in einen Ordner lokal mit dem Namen kix gelegt. Dorthin habe ich dann die login.kix erstellt, welche wie folgt aussieht.
Auf dem FileServer habe ich eine Freigabe login$ erstellt welche per \\ FileServer\login$ erreichbar ist und jeder User reinschreiben darf und kann.
Wenn ich nun eine CMD öffne mich auf den Ordner per CMD stelle wo die kix32.exe sich drin befindet und das login.kix und ich den Befehl absetzte:
Kix32.exe login.kix
Bekomme ich folgende Meldung:
ERROR: unexepected command!
Script: C:\Kix\login.kix
Line: 1
Hier mein Script:
>>Ende Login.kix<<
Auch wäre es super Toll wenn ich z.b. die Keys von Windows, Office usw. auslesen könnte.
[Edit Biber] <font class=code> duch heutige Codeformatierung ersetzt. Siehe unten [/Edit]
Ich habe versucht das Script nachzubauen, jedoch ohne Erfolg.
Hab zuerst die Version von Kix 461 runtergeladen und die kix32.exe in einen Ordner lokal mit dem Namen kix gelegt. Dorthin habe ich dann die login.kix erstellt, welche wie folgt aussieht.
Auf dem FileServer habe ich eine Freigabe login$ erstellt welche per \\ FileServer\login$ erreichbar ist und jeder User reinschreiben darf und kann.
Wenn ich nun eine CMD öffne mich auf den Ordner per CMD stelle wo die kix32.exe sich drin befindet und das login.kix und ich den Befehl absetzte:
Kix32.exe login.kix
Bekomme ich folgende Meldung:
ERROR: unexepected command!
Script: C:\Kix\login.kix
Line: 1
Hier mein Script:
01.
; ### Das Anmeldeskript soll sichtbar ausgeführt werden und das Fenster für das Skript erhält mit SETTITLE eine Bezeichnung. 02.
; ### Hier könnte stehen der Firmenname, auch Datum und Uhrzeit oder Informationen für Mitarbeiter. 03.
; ### Wobei diese auch mit einer MessageBox realisiert werden können. 04.
; 05.
SETCONSOLE("show") 06.
SETCONSOLE("maximized") 07.
SETTITLE("Anmeldeskript für Meine Domäne ") 08.
; 09.
; 10.
; * 11.
; Variablen deklarieren 12.
; * 13.
; 14.
$FileServer="FileServer" 15.
; ### Name des Servers auf welchem sich die Freigaben befinden 16.
; ### alternativ kann auch natürlich auch eine IP-Adresse angegeben werden 17.
; 18.
$ProtokollServer="FileServer" 19.
; ### Name des Servers auf welchem die Freigabe für die Dokumentation 20.
; ### der An- und Abmeldungen sowie der Rechner Infos liegt 21.
; 22.
$PrintServer="FileServer" 23.
; ### Name des Servers auf welchem (falls vorhanden) die Drucker 24.
; ### eingerichtet und freigegeben sind die verbunden werden sollen 25.
; 26.
; 27.
; Alle vorhandenen Netzlaufwerke löschen 28.
; 29.
use "*" /delete 30.
; 31.
; 32.
; * 33.
; Netzlaufwerke Gruppen bezogen verbinden 34.
; * 35.
; 36.
if ingroup("grpFibu") 37.
use f: "\\"+$FileServer+"\Fibu" 38.
endif 39.
if ingroup("grpITadministration") 40.
use z: "\\"+$ FileServer +"\admin-win" 41.
endif 42.
if ingroup ("grpMarketing") 43.
if m: "\\"+$ FileServer +"\marketing" 44.
endif 45.
if ingroup ("grpGef") 46.
use n: "\\"+$ FileServer +"\gef" 47.
endif 48.
if ingroup ("grpControlling") 49.
use k: "\\"+$ FileServer +"\controlling" 50.
endif 51.
if ingroup ("grpfile-sek-gf") 52.
use o: "\\"+$ FileServer +"\file-sek-gef" 53.
endif 54.
55.
; ### Für weitere Freigaben einfach einen oberen Block kopieren und anfügen 56.
; 57.
; 58.
; 59.
; Netzlaufwerke Benutzer bezogen verbinden 60.
; 61.
if @userid="Administrator" 62.
use x: "\\"+$ FileServer +"\login$" 63.
;das ist die Freigabe wo die Login Protokolle abgelegt werden 64.
;natürlich soll diese nur der Admininstrator sehen 65.
endif 66.
; 67.
;Netzlaufwerk für Admin1 und Admin2 weil dies ein IT-Administrations-Laufwerk ist 68.
if @userid="Admin1" 69.
use y: "\\"+$ FileServer +"\it-administration$" 70.
endif 71.
if @userid="Admin2" 72.
use y: "\\"+$ FileServer +"\it-administration$" 73.
endif 74.
if @userid="Gast" 75.
use p: "\\"+$Fileserver+"\public" 76.
goto EndSharing 77.
endif 78.
; 79.
; 80.
; 81.
; Netzlaufwerke für jeden User verbinden 82.
; 83.
use p: "\\"+$ FileServer +"\ablage" 84.
use r: "\\"+$ FileServer +"\Projekte" 85.
use t: "\\"+$ FileServer +"\Technik" 86.
use u: "\\"+$ FileServer +"\"+@userid+"$" 87.
:EndSharing 88.
; 89.
; 90.
; 91.
; Alte Drucker löschen 92.
; 93.
;If DELPRINTERCONNECTION ("\\"+$FileServer +"\LaserJet") = 0 94.
;? "Alter Laserdrucker wurde erfolgreich entfernt" 95.
;Endif 96.
; 97.
; 98.
; * 99.
; Drucker verbinden 100.
; * 101.
;If ADDPRINTERCONNECTION ("\\"+$FileServer +"\LaserJetColor") = 0 102.
;? "Drucker Farblaserdrucker wurde verbunden" 103.
;Endif 104.
;If ADDPRINTERCONNECTION ("\\"+$FileServer +"\LaserZentrale") = 0 105.
;? "Drucker Laserdrucker Zentrale wurde verbunden" 106.
;Endif 107.
; 108.
; 109.
; * 110.
; Hardware Informationen auslesen 111.
; * 112.
; 113.
: ### Ausgabe auf die Datei "Rechnername_info.txt" umleiten anstelle des Bildschirmes 114.
$result=ReDirectOutput ("\\"+$FileServer +"\login$\"+@Hostname+"_info.txt" ,1) 115.
; 116.
; ### Ab jetzt werden alle Printanweisungen in die Datei "Rechnername_info.txt" ausgegeben 117.
? "Stand "@DATE" - "@TIME 118.
? "" 119.
? "* Rechner Information *" 120.
?"NetBIOS Name: "@WKSTA 121.
?"Letzter Login von: "@USERID 122.
?"OS: "@PRODUCTTYPE" with "@CSD 123.
?"CPU Modell: " @CPU 124.
?"CPU Takt: "@MHZ " MHz" 125.
?"Speicher: "MemorySize(0)" MB" 126.
?"IP Adresse: " @IPADRESS0 127.
?"MAC Adresse: "@ADDRESS 128.
?"" 129.
; 130.
; * 131.
; Software Informationen auslesen 132.
; * 133.
; 134.
; ### die installierte Software wird anhand der Uninstall Informationen der Registry ausgelesen, es wird 135.
; ### solange gelesen bis im Reg Pfad keine Einträge mehr vorhanden sind, durch den Error wird dann die 136.
; ### Schleife zur Sprungmark :Login verlassen 137.
138.
; 139.
?"* installierte Software *" 140.
$Index = 0 141.
:Loop1 142.
$KeyName = EnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", $Index) 143.
If @ERROR = 0 144.
Goto DisplayCheck 145.
Else 146.
Goto Login 147.
EndIf 148.
:DisplayCheck 149.
$Displayname = ReadValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$Keyname","DisplayName") 150.
If @ERROR = 0 151.
$Index = $Index + 1 152.
?$Displayname 153.
Goto Loop1 154.
Else 155.
Goto Login 156.
endif 157.
:Login 158.
; 159.
; 160.
; Login Informationen pro User 161.
; 162.
; 163.
; ### hier wird die Ausgabe wieder auf die Protokoll Datei für den jeweiligen Tag umgeleitet 164.
$result=ReDirectOutput ("\\"+$FileServer +"\login$\Anmeldungen " + @YEAR + "."+ @MONTHNO + "." + @MDAYNO + ".txt" ,0) 165.
; 166.
; ### jetzt wird geprüft ob die Datei bereits existiert, wenn ja wird der Header nicht noch einmal in die Datei geschrieben 167.
; ### da dieser bereits vorhanden ist. 168.
$logExist=Exist("\\"+$FileServer +"\login$\Anmeldungen " + @YEAR + "."+ @MONTHNO + "." + @MDAYNO + ".txt") 169.
if $logExist = 0 170.
? "+-------------------------------------------------------------------------------------------------+" 171.
? "¦Benutzername ¦ Client ¦ Datum ¦ Uhrzeit ¦ Anmeldeserver ¦ i=login o=logout¦" 172.
? "¦-------------+----------------------+------------+----------+------------------+-----------------¦" 173.
endif 174.
$user = @userid+left(" ",(13-len(@userid))) 175.
$client = @WKSTA+left(" ",(20-len(@WKSTA))) 176.
$lserver = @LSERVER+left(" ",(18-len(@LSERVER))) 177.
$lserver = right($lserver,(len($lserver)-2)) 178.
? "¦"$user"¦ "$client" ¦ "@DATE" ¦ "@TIME" ¦ "$lserver" ¦ i ¦" 179.
ExitAuch wäre es super Toll wenn ich z.b. die Keys von Windows, Office usw. auslesen könnte.
[Edit Biber] <font class=code> duch heutige Codeformatierung ersetzt. Siehe unten [/Edit]
Biber schreibt am 11.08.2010 um 22:20:08 Uhr
Moin TxWcA,
möglicherweise hattest du die oben noch verwendete "alte" Codeformatierung für bare Münze bzw. für KiX-Code mit übernommen?
Diese <font class=code></font>-Klamotte?
ich habe deinen zitierten Code jedenfalls mal als "Code" formatiert, so dass du ihn mal jetzt kopieren kannst.
sollte es etwas anderes sein, dann machen wir natürlich weiter...
Grüße
Biber
möglicherweise hattest du die oben noch verwendete "alte" Codeformatierung für bare Münze bzw. für KiX-Code mit übernommen?
Diese <font class=code></font>-Klamotte?
ich habe deinen zitierten Code jedenfalls mal als "Code" formatiert, so dass du ihn mal jetzt kopieren kannst.
sollte es etwas anderes sein, dann machen wir natürlich weiter...
Grüße
Biber








6741schreibt am 23.01.2006 um 12:00:36 Uhr6741schreibt am 23.01.2006 um 12:15:04 Uhr