This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Endlich ist er da: der Nachfolgeband zum erfolgreichen »Professional Series: Scripting Host Praxisbuch«. In den vergangenen vier Monaten wurde ich von E-Mails förmlich überschüttet, und viele Leser wünschten sich die Quellcodes und Hintergrundinformationen dazu, wie man selbst eigene Script-Befehlserweiterungen schreibt. Genau diese Informationen finden Sie in diesem Buch, und obwohl ich weiß, daß es Ihnen wahrscheinlich in den Fingern juckt, sofort zu den einzelnen Kapiteln zu springen und Resultate zu sehen – bitte gönnen Sie sich und mir drei Minuten, und lesen Sie dieses Vorwort bis zu Ende durch.
Was Sie in diesem Buch finden Dieses Buch setzt nahtlos auf dem Vorgängerband »Professional Series: Scripting Host Praxisbuch« auf. Das bedeutet: Sie finden keine Wiederholungen, sondern durchgängig neue und teilweise unglaubliche Möglichkeiten. Das bedeutet aber auch: Wenn Sie bisher noch keinerlei Berührung mit Scripts gehabt haben, dann ist der Vorgängerband die ideale Einstiegslektüre. Und darum geht es in diesem Buch:
Scripting Spy: Das geheime Script-Spionagetool Wo schlummern eigentlich all die versteckten COM-Objekte, die Ihre Scripts fernsteuern können? Woher weiß man, welche Befehle und Funktionen darin enthalten sind? Wie kann man zum Beispiel Winword fernsteuern oder sich die Rechtschreibkontrolle herausklauben, Windows 2000 eigene Texte vorlesen lassen oder den Akkustand des Notebooks überprüfen? Diese Antworten liefert ein kleines Tool, das Sie auf der Buch-CD finden. Der Scripting Spy durchleuchtet Ihr ganzes System und gewährt dann tiefste Einblicke in den inneren Aufbau aller COM-Objekte, die auf Ihrem System installiert sind. Auf Wunsch schreibt der Scripting Spy sogar Beispielskripte für Sie. Hier eine kleine Kostprobe, die der Scripting Spy ausgegraben hat: Auf Windows 2000-Systemen genügt dieses kleine Script, um Ihrem Computer das Sprechen beizubringen – wenn auch mit ausgeprägt amerikanischem Akzent: ’ VBS Windows Script Host File ’ automatisch generiert von Scripting Spy V1.0 set VTxtAuto = CreateObject("Speech.VoiceText") VTxtAuto.Register "", "Demo App" VTxtAuto.Enabled = true VTxtAuto.Speed = 180
6
Vorwort
text = InputBox("Was soll ich sagen?") VTxtAuto.Speak text, 2 MsgBox "Hören Sie mich?" ' ' ' '
"enabled" ist vom Typ "Property " Zurückgelieferter Wert ist vom Typ: Beschreibung von "enabled" Set the Enabled/Disabled state.
"Long"
Internet Explorer – komplett ausgezogen und offengelegt Internet Explorer im Detail: Der Internet Explorer ist ein enorm mächtiges Programm, denn er ist nicht nur für die Anzeige aller Ordner und Laufwerke verantwortlich, sondern kann auch als Scripting Host-Ausgabefenster genutzt werden. Wie der Internet Explorer hinter den Kulissen funktioniert und an welchen Strippen Ihre Scripts ziehen können, zeige ich Ihnen im Detail. Dabei enthülle ich auch das geheimnisvolle Shell.Application-Objekt, mit dem Sie in laufende ExplorerFenster eingreifen, virtuelle Ordner anzeigen und vieles mehr meistern.
Datenbankzugriffe per Script: Möglichkeiten über Möglichkeiten Entdecken Sie, wie leicht Ihre Scripts per ADODB auf jedwede Datenbank zugreifen, sei es Access, Oracle oder MS SQLServer. Kleine Scripts demonstrieren, wie Sie Daten in Datenbanken schreiben, daraus abfragen und sogar Datenbanken verwalten. Sie können per Script neue Tabellen anlegen, Datenbanken löschen und sogar einen Blick ins ansonsten streng geheime Datenbankschema werfen. Es gibt viel zu entdecken, und das Ergebnis hilft dabei, daß aus Datenbanken keine Datengräber werden. Schreiben Sie sich kleine Konvertierungsskripte, die Datenbankinfos direkt in Excel oder Winword ausgeben, oder lassen Sie Ihre Scripts Textlisten einlesen, die dann sofort in die passende Datenbank geschrieben werden.
Eigene neue Script-Befehle mit der Windows-API Windows-API und eigene Befehlserweiterungen schreiben: Ihnen reichen die eingebauten VBScript-Befehle nicht? Sie wollen die CD-Schublade öffnen, eine Internetverbindung herstellen oder NT-Benutzerkonten anlegen? Dann brauchen Sie Zugriff auf die internen Windows-APIFunktionen, und genau das ist ein ganz besonderer Schwerpunkt dieses Buches. Zuerst zeige ich Ihnen, wie Sie mit der kostenlosen Visual Basic CCE eigene Befehlserweiterungen schreiben. Die VB CCE befindet sich übrigens auf der Buch-CD. Anschließend überschütte ich Sie mit mehr als 30 sofort einsetzbaren Programmierprojekten, die Ihnen auf Anhieb Hunderte neuer Befehle bescheren. Natürlich finden Sie auf der Buch-CD den gesamten Quellcode der Projekte. Sie können also darin herumschmökern, den Quellcode ändern oder für eigene Projekte einsetzen. Die ideale Grundlage für ganz spezielle Kundenlösungen, und die Grundgebühr ist auch schon drin: Ich erhebe keine Lizenzgebühren für die Nutzung der Quellcodes, sofern Sie den Quellcode
Vorwort
7
entweder grundlegend ändern oder zumindest eine Referenz auf dieses Buch einfügen. Klar ist natürlich, daß Sie die Quellcodes nicht für eigene Bücher verwenden dürfen.
ADSI: NT-Benutzerkonten und skriptgesteuerte Administration ADSI ist serienmäßiger Teil von Windows 2000, aber auch kostenlos für Windows NT und Windows 9x nachrüstbar. Mit ADSI bekommen Ihre Scripts mit minimalem Aufwand vollen Zugriff auf lokale und globale Benutzerkonten, Gruppen, Computerdienste und Druckerwarteschlangen. Wer mag, kann so mit einem Zehnzeiler automatisiert Hunderte von neuen Benutzerkonten anlegen oder aber checken, welche Konten seit Ewigkeiten nicht mehr im Einsatz sind. Ein wahres Eldorado für NTSystemadministratoren also. Die ADSI-Scripts sparen Stunden und bisweilen sogar Tage.
WMI – Fernwartung, Ferninstallation und die Script-Zukunft Mit WMI werden Dinge möglich, die bislang schiere Phantasterei waren. WMI verwaltet nämlich nicht nur Ihren eigenen Computer, sondern kann quer über das Netzwerk auch jeden x-beliebigen anderen Computer verwalten. Ob Sie das neueste Microsoft Office-Paket überall in der Firma ferninstallieren wollen, ohne sich dabei aus Ihrem bequemen Ledersessel zu erheben, ob Sie herausfinden wollen, welcher RAM-DAC auf der Grafikkarte des Herrn Müller um die Ecke schuftet, oder ob Sie ferngesteuert Programme auf anderen Computern starten oder beenden wollen – alles ist möglich. Und noch viel mehr: WMI kann sich an Events binden, und Ihre WMI-Scripts könnten so vollautomatisch eine tägliche Liste der Programme anlegen, die in Ihrem Netzwerk gestartet und beendet werden oder bestimmten Personen verbieten, ausgewählte Programme auszuführen. WMI findet mit spielerischer Gelassenheit die MAC-Adressen aller Netzwerkkarten in Ihrem Netzwerk heraus, liefert die Sicherheits-IDs aller Benutzerkonten und kann Systeme sogar ferngesteuert neu starten lassen oder herunterfahren. WMI ist eine neue Technik von Windows 2000, die wie ADSI auch bei Windows NT und 9x kostenlos nachrüstbar ist. Weil WMI so universell einsetzbar ist und so unglaublich viele Informationen liefert, ist es ein zweiter Schwerpunkt dieses Buches. Deshalb finden Sie im Anhang B eine ausgesprochen ausführliche Dokumentation aller WMI-Win32-Klassen. Blättern Sie doch mal hin! Alle Informationen, die Sie dort entdecken, können von Ihren Scripts potentiell erfragt werden. Daneben finden Sie zig interessante neue Befehle, zum Beispiel, um einen Computer herunterzufahren oder neue Programme zu starten.
Was Sie brauchen, um loszuskripten... Bevor Sie irgend etwas anderes tun, sollten Sie auf der Buch-CD den neuesten Scripting Host Version 2.0 (5.1) installieren. Den finden Sie im Ordner WSH als STE51DE.EXE. Nur wer Windows 2000 verwendet, hat diese neueste Version bereits.
8
Vorwort
Diese einfache Datei genügt, um jedes 32-Bit-Windows (95 OSR2.1, 98, NT 4.0) mit dem Windows Scripting Host auszustatten. Einfacher geht’s nicht!
Noch mehr Infos und mein persönliches Angebot Brauchen Sie noch mehr Infos, dann schauen Sie auch mal bei www.wininfo.de/scripting vorbei. Hier bemühe ich mich, in meiner freien Zeit aktuelle Hinweise und Zusatzinfos zu hinterlegen. Falls Sie als Firma Interesse an den neuen Scripting-Möglichkeiten bekommen, aber weder Zeit noch Lust haben, alles selbst zu erforschen: Schulungen zum Thema gibt’s ebenfalls. Wer mag, erreicht mich direkt unter [email protected]. Diesen Weg sind inzwischen schon viele Firmen gegangen, die per Script wichtige Projekte, Datenanbindungen, Administrationsprobleme und natürlich die Migration zu Windows 2000 meistern. Auch sonst freue ich mich sehr über Ihr Feedback, Anregungen und Ideen. Mailen Sie mir. Haben Sie bitte aber Verständnis dafür, daß ich nicht immer sofort antworten kann.
Blumen, Lob und wichtige Details Schließlich noch etwas in eigener Sache: Mit diesem Buch offenbare ich Ihnen mein gesamtes Know-how zu diesem Thema. Klar ist: Wir befinden uns auf Pionier-Terrain. Bestimmt wird das eine oder andere Script, die eine oder andere Befehlserweiterung noch kleine Macken enthalten. Hier sind Sie gefragt. Nehmen Sie meine Quellcodes und Beispiele als Anregungen, und wenn Sie sie weiterentwickeln, dann halten Sie mich bitte auf dem laufenden. Das gilt natürlich insbesondere für Fehler, die Sie entdecken. Apropos Fehler: Das Spionagetool Scripting Spy habe ich ursprünglich ausschließlich für meine eigene Bequemlichkeit programmiert, spontan in einer rotweinhaltigen Woche in der Provence. Dieses Tool liefert so brisante Informationen, daß ich mich entschlossen habe, es auf die Buch-CD zu geben. Es ist aber kein offizieller Teil des Buches, sondern zusammen mit seiner Beschreibung erst nachträglich ins Manuskript eingewandert. Ich sage dies deshalb so deutlich, weil das Tool nicht auf jedem System lauffähig sein wird. Da das Tool vollautomatisch die Windows-Registry analysiert und dies ein sehr komplexes Unterfangen ist, können defekte Registry-Schlüssel oder Dinge, die ich einfach während der Entwicklung nicht habe erahnen können, zum Programmabbruch führen. Falls ausgerechnet Ihnen das passiert, dann steinigen Sie mich nicht, sondern mailen Sie mir: [email protected]. Ich bin bemüht, das Tool weiterzuentwickeln, doch dazu brauche ich Ihr Feedback. Eine Garantie für die Funktionsfähigkeit des Tools gebe ich ausdrücklich nicht. Ganz zum Schluß geht mein Dank an die freie Entwicklergemeinde, die im Internet uneigennützig wertvolle Lösungen und Informationen bereitstellt. Scripts und die damit verbundenen Technologien dürfen kein Geheimwissen sein. Diese Informationen gehören auf den Tisch, damit jeder sie nutzen kann. Vor allem aus diesem Grund habe ich mich dazu entschlossen, alle Quellcodes offenzulegen und damit meinen Teil zu tun, um die freie Entwicklergemeinde zu stärken, zu der Sie – hoffentlich – auch bald gehören.
Der Scripting Host – so funktioniert er wirklich ....................................................... 27 Dinge, die Sie kennen sollten.................................................................................. 28 Ein Script starten: das passiert hinter den Kulissen .................................................. 28 WSCRIPT.EXE oder CSCRIPT.EXE? ........................................................................... 31 Internet Explorer als Script Host einsetzen .............................................................. 31 Die besonderen Funktionen des Script Hosts .......................................................... 32 Objekte bereichern Ihren Script-Wortschatz............................................................ 33 Internet Explorer als sinnvoller Script Host .............................................................. 35 Internet Explorer als unsichtbarer Script Host.......................................................... 37 Streng geheim: HTA-Dateien des Internet Explorer 5 .............................................. 37 Scripts um zusätzliche Funktionen bereichern ......................................................... 39
Scripting Spy – das müssen Sie wissen .................................................................... 41 Scripting Spy installieren......................................................................................... 42 Nachschauen, welche Objekte es auf Ihrem System gibt......................................... 42 Detailinformationen zu einem Objekt sehen ........................................................... 45 Wichtige Objekte in die Favoritenliste übernehmen ................................................ 45 Potentiell nutzlose Objekte aus der Liste verbannen................................................ 46 Röntgen-Schirm: Welche Funktionen schlummern in den Objekten?......................... 46 Wie COM-Objekte aufgebaut sind .......................................................................... 47 Nach Informationen suchen ................................................................................... 50 Wo soll gesucht werden? ........................................................................................ 50 Wonach suchen Sie eigentlich?............................................................................... 51 Wie soll gesucht werden – genau oder unscharf?.................................................... 51 Szenario 1: Nach einer ProgID suchen .................................................................... 51 Szenario 2: Nach nützlichen Befehlen suchen ......................................................... 53 Neue Scripting-Funktionen entdecken .................................................................... 53 VBScript und WSH durchleuchten........................................................................... 54 Hilfe zu individuellen Script-Befehlen bekommen.................................................... 55 Geheime Hilfedateien liefern Profi-Informationen.................................................... 56 Vollautomatisch Scripts erstellen............................................................................. 57 Szenario 1: Den Rechner scriptgesteuert herunterfahren ......................................... 57 Szenario 2: Den Inhalt eines Ordners auflisten ........................................................ 60 Fremde Programme per Script fernsteuern ............................................................. 63 Winwords Rechtschreibprüfung für eigene Zwecke nutzen ..................................... 64 Wichtige Dinge, an die Sie denken sollten .............................................................. 66 Noch mehr Automation: Automatisch Texte korrigieren ......................................... 66
Informationen über den Scripting Host................................................................... 69 Das Application-Objekt........................................................................................... 69 Die Version des WSH ermitteln ............................................................................... 70 Pfadnamen und geheime Antworten ...................................................................... 70 Informationen über das Script bekommen .............................................................. 72 Begleitinformation aus dem Scriptordner öffnen..................................................... 72 Logbuch-Datei: Wann und wie oft wird ein Script benutzt? .................................... 73 Drag&Drop: Argumente ans Script übergeben ....................................................... 74 Argumente an Scripts verfüttern ............................................................................. 74 Scripts als DOS-Befehle einsetzen ........................................................................... 75 Mit den DOS-Streams Ein- und Ausgaben ins DOS-Fenster machen........................ 76 Piping – Ergebnisse von anderen Befehlen verfeinern.............................................. 78 Mit Echo: Ergebnisse direkt ans DOS-Fenster .......................................................... 80 Mit Events arbeiten................................................................................................. 81 CreateObject: Geheimtür zu fremden Objekten...................................................... 81 ConnectObject: Eventüberwachung einschalten ..................................................... 83 DisconnectObject: Eventüberwachung ausknipsen ................................................ 83 GetObject: In bestehende Objekte einklinken ......................................................... 84 Scripts anhalten und sofort beenden ...................................................................... 85 Interactive: Alle Benutzerausgaben unterdrücken.................................................... 86 Sleep: Script eine zeitlang anhalten ........................................................................ 86 Quit: Script sofort beenden .................................................................................... 86 Timeout: Script mit eingebauter Notbremse ........................................................... 86
Die Visual Basic CCE startklar machen................................................................... 181 Die VB CCE kennenlernen..................................................................................... 182 Der Project Explorer – Ihr Inhaltsverzeichnis.......................................................... 183 Ihr neues COM-Objekt mit Leben füllen ............................................................... 185 Ihr COM-Objekt testen: Kompilieren .................................................................... 186 Der erste Versuch: Ihren neuen Befehl von Scripts aus ansprechen........................ 187 Die Vorteile neuer COM-Objekte .......................................................................... 188 Die Windows-API verwenden: CD-ROM-Schublade öffnen und schließen ............. 188 Ein neues Projekt starten....................................................................................... 189 Die CD-ROM-Schublade fernsteuern..................................................................... 189 Eigene Dialogfenster entwerfen ............................................................................ 190 Ein Dialogfenster gestalten ................................................................................... 191 Der Test: Ihr eigenes Dialogfenster im Einsatz testen............................................. 197 Wichtige Rahmen-Kosmetik .................................................................................. 198 Ihre neuen COM-Objekte an andere weitergeben................................................. 198 COM-Objekte direkt weitergeben......................................................................... 199 Eigene Setup-Pakete schnüren .............................................................................. 199 Empfehlungen aus der Praxis ................................................................................ 200
Befehlserweiterungen zum Leben erwecken.......................................................... 201 VBP-Projektdateien mit der VB CCE verknüpfen .................................................... 201 Anwendungen zuverlässig in den Vordergrund schalten ....................................... 202 Umschaltsperre abschalten ................................................................................... 202 Bildschirmfotos schießen ...................................................................................... 203 Die Zwischenablage lesen und ändern.................................................................. 205 Echte Laufwerksgrößen – ohne 2 GB Bug! ............................................................ 205 Auswahldialog für Ordner..................................................................................... 206 Flags verwenden – und sogar Dateien aussuchen! ................................................ 207 Virtuelle Ordner – Ihr Dialogfenster spielt mit ....................................................... 208 Icons verwalten – das Icon-Dialogfenster .............................................................. 210 Nach Icons suchen ............................................................................................... 211 Icon-Liste anlegen................................................................................................. 212 Icons konvertieren und verändern......................................................................... 213 System-Icons verändern........................................................................................ 215 Noch ein undokumentiertes Fenster: Disk-Formatierung....................................... 217 Ganz eigene Dialogfenster entwerfen ................................................................... 218 Internet-Zugang automatisieren ........................................................................... 219 Internetverbindungen herstellen und abbauen ..................................................... 220 Zugriff auf FTP-Verzeichnisse ................................................................................ 221 Dateien per FTP herunterladen ............................................................................. 221 Lokale Webseiten auf den Webserver hochladen................................................... 222 Art des Internetzugangs ermitteln......................................................................... 226 Winsock: Hostnamen und IP-Adressen .................................................................. 227 Listen anzeigen mit dem ListView-Tool ................................................................. 228 Listen anlegen und sortieren................................................................................. 228 Listen sortieren, ohne Dialogfenster anzuzeigen ................................................... 230 Multimediageräte fernsteuern............................................................................... 230 Multimediageräte aussuchen ................................................................................ 231 Herausfinden, was das CD-ROM gerade tut .......................................................... 233 Typ der eingelegten CD bestimmen ..................................................................... 233 Details über Musik-CDs erfahren........................................................................... 235 Musik-CDs sekundengenau anspielen ................................................................... 236 MIDI-Dateien spielen ............................................................................................ 237 Video-Dateien anschauen ..................................................................................... 237 Automatisch CD-Tracks in WAV-Dateien verwandeln ............................................ 238 Speicherhaushalt genau beobachten .................................................................... 239 Verschiedene nützliche Systeminformationen ....................................................... 240 Liste der installierten Schriften .............................................................................. 241 Echte unabhängige Dialogfenster generieren........................................................ 241 Dialogfenster mit Fortschrittsanzeige .................................................................... 242 NT-Service-Dienste verwalten ............................................................................... 244 Zustandsbericht aller Dienste................................................................................ 244 Windows herunterfahren – auch remote............................................................... 245 Den eigenen Computer neu starten...................................................................... 245
Ein System ferngesteuert herunterfahren .............................................................. 246 NT-Benutzerkonten verwalten .............................................................................. 246 Benutzerkonten eines Rechners listen.................................................................... 247 Benutzerkonten filtern .......................................................................................... 247 Neue Benutzerkonten anlegen.............................................................................. 248 Benutzerkonten löschen ....................................................................................... 249 Kennworte ändern................................................................................................ 249 Globale Gruppen auflisten .................................................................................... 249 In welchen Gruppen bin ich Mitglied? .................................................................. 250 Konten in eine Gruppe einfügen........................................................................... 250 Primären Domänencontroller finden..................................................................... 250 Informationen über Ihr Betriebssystem ................................................................. 251 Windows-Version ermitteln................................................................................... 251 Werden bestimmte DLLs bei mir unterstützt? ....................................................... 252 Programme steuern und beenden ........................................................................ 252 Programme starten: der herkömmliche Weg......................................................... 252 Programme per API fernsteuern ............................................................................ 253 Programme per API starten................................................................................... 253 Prüfen, ob ein Programm noch läuft ..................................................................... 255 Warten, bis ein Programm beendet wird .............................................................. 255 Fremde Programme schließen .............................................................................. 255 Eigenschaften-Seiten anzeigen.............................................................................. 256 Eigenschaften von Laufwerken, Dateien, Druckern................................................ 257 Zugriff auf die Registry.......................................................................................... 257 Unterschlüssel auflisten......................................................................................... 258 Einträge in einem Registry-Schlüssel listen ............................................................ 258 Versionsunabhängige Scripts schreiben ................................................................ 259 Variablentyp von Registry-Einträgen herausfinden................................................. 260 Binärdaten lesen und schreiben ............................................................................ 260 Registry-Daten löschen ......................................................................................... 260 Herausfinden, ob es einen bestimmten Schlüssel gibt ........................................... 261 Bildschirmauflösung und Farbtiefe ändern ............................................................ 261 Alle verfügbaren Grafikkarten-Einstellungen sehen ................................................ 262 Aktuelle Grafikkarten-Einstellungen sichtbar machen ............................................ 262 Beste Bildwiederholrate ermitteln ......................................................................... 262 Eine andere Bildwiederholfrequenz einstellen........................................................ 263 Bildschirmauflösung ändern ................................................................................. 263 Dateien kopieren und löschen .............................................................................. 263 TEMP-Dateien in den Papierkorb löschen.............................................................. 264 Papierkorb löschen ............................................................................................... 265 Backups anlegen................................................................................................... 265 Icons im Gerätefeld der Taskleiste anzeigen .......................................................... 267 Scripts per Taskleisten-Icon steuern....................................................................... 267 Versionsinformationen über Dateien erhalten ....................................................... 268 Informationen über Dateien herausfinden............................................................. 268 Eigene HTML-Dialogfenster verwenden ............................................................... 269
Wie kommt man an ADO DB heran? .................................................................... 279 ADO DB Versionsdschungel: So blicken Sie durch................................................. 281 ADO DB-Version bestimmen: die Zweite............................................................... 282 Informationen aus einer Datenbank auslesen ........................................................ 282 Den Inhalt einer Datenbank auflisten .................................................................... 283 Eigene Daten in die Datenbank einfügen .............................................................. 284 Daten aus der Datenbank löschen ........................................................................ 285 Wie’s funktioniert: ADO DB auf die Finger geschaut ............................................. 286 Eine Datenbankverbindung herstellen................................................................... 286 Mit SQL die Datenbank »bedienen« ..................................................................... 287 SELECT: Daten auswählen..................................................................................... 287 Nur ganz bestimmte Datensätze herausfischen..................................................... 287 Datenbank-Ergebnis sortieren ............................................................................... 288 Wichtige Fallen rund um SELECT .......................................................................... 288 INSERT INTO: Neue Daten in die Datenbank schreiben ........................................ 288 Tücken rund um INSERT INTO ............................................................................. 289 DELETE – Informationen aus der Datenbank streichen .......................................... 290 Die innere Struktur einer Datenbank aufdecken .................................................... 290 Feldnamen sichtbar machen................................................................................. 290 Variablentypen der Felder entschlüsseln................................................................ 291 Alle Tabellen in der Datenbank auflisten ............................................................... 292 Das Schema: So kommen Sie an Infos heran......................................................... 293 Na also: Systemtabellen von normalen Tabellen unterscheiden ............................ 294 Eigene Tabellen anlegen ....................................................................................... 296 Alle Tabellen in einer Datenbank löschen.............................................................. 296 Eigene neue Datenbank-Tabellen anlegen ............................................................ 297 Das steckt dahinter: Variablentypen auflisten ........................................................ 300 Die innere Struktur Ihrer Datenbankzugriffe.......................................................... 301 System-DSN: Datenbanken systemweit administrieren ......................................... 303 Eine neue System-Datenbank anlegen .................................................................. 303 Auf eine DSN-Datenbank zugreifen ...................................................................... 305
10 ADSI: Netzwerk und Benutzerkonten verwalten ............................................ 307 10.1 10.1.1 10.2 10.2.1 10.3
ADSI – die Geheimtür in die Netzwerkwelt aufstoßen ........................................... 307 Welche Datenquellen kann ADSI sichtbar machen? .............................................. 308 WinNT: Computerverwaltung par excellence........................................................ 308 Alle Computer auflisten, die momentan online sind.............................................. 309 Spionage: Welche Informationen liefert ein Objekt eigentlich?.............................. 310
Domänen-Informationen ausfragen ...................................................................... 312 Standardeigenschaften der Domäne ändern ......................................................... 313 Das Schema: »Bedienungsanleitung« eines Objekts .............................................. 314 Welche Objekte gibt es eigentlich? ....................................................................... 316 Den Typ eines beliebigen Objekts herausfinden .................................................... 317 Objekte und deren Inhalt managen ...................................................................... 318 ADSI-Fehler: Wissen, was schiefläuft...................................................................... 318 Wichtige ADSI-Fehler abfangen ............................................................................ 318 Fehlerursachen direkt erfragen: eigene Befehlserweiterung ................................... 321 Informationen über Computer erfragen................................................................ 324 Alle Computer sehen, die gerade online sind ........................................................ 324 Details über Computer erfragen ........................................................................... 324 Hardware-Inventurliste erstellen............................................................................ 325 Alle Drucker im Netzwerk auflisten ....................................................................... 326 Benutzerkonten verwalten .................................................................................... 327 Alle Benutzerkonten eines Computers auflisten ..................................................... 327 Ein neues Benutzerkonto anlegen ......................................................................... 329 Benutzerkonten wieder entfernen ......................................................................... 330 Kennwörter ändern .............................................................................................. 331 Spezielle Einstellungen des Benutzerkontos setzen ................................................ 334 Wie lange ist ein Kennwort bereits in Benutzung?................................................. 336 Wann hat ein Benutzer sich das letzte Mal eingeloggt?......................................... 338 Details der Benutzerkonten selbst festlegen .......................................................... 339 Benutzer-Flags des Kontos setzen ......................................................................... 340 Ein Konto sperren ................................................................................................. 341 Beim nächsten Einloggen Kennwortänderung erzwingen ..................................... 344 Kennwortänderungen verbieten ........................................................................... 344 Gruppen-Verwaltung............................................................................................ 345 Welche Gruppen gibt es überhaupt? .................................................................... 345 Welche Eigenschaften bieten Gruppen-Objekte? .................................................. 346 In welchen Gruppen ist ein Benutzer Mitglied?..................................................... 347 Eine neue Benutzergruppe anlegen ...................................................................... 349 Benutzerkonten in die neue Gruppe einfügen....................................................... 350 Benutzer aus einer Gruppe entfernen.................................................................... 352 Benutzergruppen löschen ..................................................................................... 352 Services – Windows-Dienste verwalten.................................................................. 352 Welche Dienste laufen gerade? ............................................................................. 353 Welche Eigenschaften bieten Dienste? .................................................................. 353 Zustandsbericht über alle Dienste erstellen ........................................................... 354 Einen Dienst starten oder beenden ....................................................................... 360 Das Startverhalten von Diensten ändern ............................................................... 361 Freigegebene Ordner verwalten............................................................................ 362 Alle freigegebenen Ordner auflisten...................................................................... 362 Einen neuen freigegebenen Ordner anlegen......................................................... 365 Eine Freigabe rückgängig machen ........................................................................ 366 Schauen, wer welche Freigaben zur Zeit nutzt ...................................................... 366
Netzwerkdrucker – Druckaufträge managen ......................................................... 368 Welche Drucker stehen im Netzwerk zur Verfügung?............................................ 369 Die Eigenschaften der Drucker-Warteschlangen .................................................... 369 Wie geht es meinem Drucker? Ein Statusreport..................................................... 371 Die Aufträge eines Druckers sichtbar machen ....................................................... 372 Druckerwarteschlange komplett löschen............................................................... 374 Priorität einzelner Druckaufträge ändern............................................................... 374
WMI und WBEM: Ihre ultimative Allzweckwaffe .................................................... 377 So geht’s: Mit WMI fremde Computer untersuchen.............................................. 377 WMI startklar machen: So läuft die Sache rund..................................................... 379 Der Fahrplan: So werden Sie zum WMI-Profi......................................................... 380 WMI nachrüsten ................................................................................................... 380 Der erste Test: Funktioniert WMI?......................................................................... 381 Ferngesteuert auf WMI zugreifen .......................................................................... 382 Windows 95/98 – WMI total trotz eingebauter Sperren ........................................ 383 Wichtige Details, die Sie kenen sollten .................................................................. 385 Grundlagen: So kommen Sie an WMI-Informationen............................................ 385 Weitere Möglichkeiten, um an WMI-Informationen zu gelangen .......................... 386 Netzwerkzugriffe: WMI ferngesteuert ................................................................... 386 Informationen mit SQL abfragen .......................................................................... 387 Endlich verständlich: Einsatz von Monikern........................................................... 388 Mit dem WMI-Dienst verbinden – lokal und remote ............................................. 388 WMI-Namespace festlegen ................................................................................... 388 Direkt mit WMI-Geräteklassen verbinden .............................................................. 389 Bestimmte Geräte und Klassen direkt ansprechen ................................................. 390 Spezialoperationen: Sonderrechte aktivieren......................................................... 391 Impersonation: Herausfinden, wer die WMI-Aktion verantwortet .......................... 392 Welche Informationen hat WMI auf Lager? ........................................................... 393 Liste erstellen: Diese Klassen unterstützt WMI ....................................................... 393 Alle Informationen über eine Klasse finden............................................................ 394
Woher kommt die »Intelligenz« und Macht Ihrer Scripts? Wer bestimmt, was Sie mit Scripts tun können – und was nicht? Wie erweitern Sie Macht und Einfluß Ihrer Scripts und fügen genau die Funktionen hinzu, die Sie gerade brauchen? Lesen Sie in diesem Kapitel, was wirklich hinter Scripts steckt und wie Sie in nur wenigen Minuten Ihren Scripts jede noch so exotische Windows-Funktion beibringen – oder einfach nur die CD-ROM-Schublade auf- und zuklappen.
1.1
Der Scripting Host – so funktioniert er wirklich
Am besten schauen Sie sich einfach in Zeitlupe an, was passiert, wenn Sie ein Script auf Ihrem Computer ausführen. So wird sofort klar, wer alles daran beteiligt ist – und welche enormen Erweiterungsmöglichkeiten sich dadurch bieten!
Bild 1.1: Scripts sind ganz normale Textdateien
Dafür benötigen Sie zuerst als Versuchskaninchen ein einfaches Script: 1. Starten Sie den Texteditor: im Startmenü wählen Sie Ausführen und geben ein: NOTEPAD [Enter]. 2. Geben Sie nun das folgende Beispielscript ein: MsgBox WScript.ScriptFullName
3. Speichern Sie dieses Script: wählen Sie im Datei-Menü Speichern unter, stellen Sie oben in der Ausklappliste Speichern in ein: Desktop, und speichern Sie das Script als test.vbs [Enter]. Ganz wichtig: hängen Sie an den Dateinamen die Extension .vbs an! 4. Schließen Sie dann den Editor. Fertig. Auf Ihrem Desktop liegt nun ein Beispielscript.
28
Kapitel 1: Sprachschatz Ihrer Scripts erweitern
Bild 1.2: Textdateien mit der Extension VBS verwandeln sich in ausführbare Scripts
1.1.1
Dinge, die Sie kennen sollten...
Und was, wenn das Beispiel nicht auf Anhieb klappen sollte? Hier die wichtigsten Lösungen aus der Praxis: • Liegt auf Ihrem Desktop nur eine ganz normale Textdatei, die nicht das typische Script-Icon trägt? Dann ist auf Ihrem System der Scripting Host noch nicht installiert. Holen Sie das kurz nach, und starten Sie dazu auf der Buch-CD im Verzeichnis WSH das Programm STE51DE. EXE. Der Scripting Host wird installiert, und spätestens nach einem Neustart funktionieren Ihre Scripts wie geplant. • Sie haben sich vertippt und wollen den Inhalt des Scripts nachträglich verändern? Dann klicken Sie mit der rechten Maustaste auf die Scriptdatei und wählen Bearbeiten. Schon wird Ihnen der Script-Text zur Bearbeitung vorgelegt. Speichern Sie Änderungen im Datei-Menü mit Speichern. • Sie wollen genauer wissen, wo Fehler in Ihrem Script liegen? Dann installieren Sie den ScriptDebugger. Den finden Sie auf der Buch-CD im Ordner WSH als DEBUGGER9x.EXE (für Windows 95 und 98) und DEBUGGERNT.EXE (für Windows NT und 2000). Tip: WSH auf neuestem Stand – das ist wichtig! Auch wenn bei Ihnen bereits der WSH installiert ist, sollten Sie trotzdem STE51DE.EXE installieren. Diese Datei enthält nämlich den neuesten WSH 2.0, der nicht nur um wesentliche Fehler bereinigt ist, sondern außerdem schneller läuft und viele neue Befehle mitbringt. Eine ausführliche Einführung in die generelle Scripterstellung und den Umgang mit dem Debugger finden Sie im Vorgängerband »Franzis: Professional Series Scripting Host Praxisbuch«.
1.1.2
Ein Script starten: das passiert hinter den Kulissen
Öffnen Sie nun Ihr Beispielscript! Wenn auf Ihrem System der Windows Scripting Host installiert ist, dann wird das Script gestartet und präsentiert in einem kleinen Dialogfenster seinen Namen. Öffnet sich dagegen nur der Editor und zeigt den Script-Text, dann ist der WSH bei Ihnen noch nicht installiert. Installieren Sie ihn so wie gerade beschrieben rasch nach. Sobald Sie (irgendeine) Datei öffnen, schaut sich Windows die Dateiextension an. Im Beispiel entdeckt es die Extension .VBS. Daraufhin schaut es in seiner internen Registrierungsdatenbank nach, was es mit solchen Dateien machen soll. Sie können ebenfalls nachschauen:
1.1
Der Scripting Host – so funktioniert er wirklich
29
1. Wählen Sie im Startmenü Ausführen und geben Sie ein: REGEDIT [Enter]. Der Registrierungseditor startet. 2. Doppelklicken Sie in der linken Spalte auf HKEY_CLASSES_ROOT, und suchen Sie den Unterschlüssel .vbs. Wenn der WSH installiert ist, finden Sie ihn und sehen in der rechten Spalte den Eintrag VBSFile. 3. Suchen Sie nun den Schlüssel, der so heißt wie der Begriff in der rechten Spalte, also den Schlüssel VBSFile. Jetzt sind Sie am Ziel. Der Unterschlüssel ScriptEngine legt zum Beispiel fest, welche »Sprache« in vbs-Scripts gesprochen wird, und über shell – open – command entdecken Sie auch gleich das Programm, mit dem vbs-Scripts hinter den Kulissen geöffnet werden: WSCRIPT.EXE – der Scripting Host.
Bild 1.3: In der Registry ist vermerkt, wer Ihre Scriptdateien ausführt
Windows findet also über seine Registry heraus, wer für vbs-Dateien zuständig ist, und verfüttert das Script anschließend an den Scripting Host, nämlich an das Programm WSCRIPT.EXE. Bevor ich Ihnen gleich zeige, wie der Scripting Host das Script eigentlich ganz genau verspeist, möchte ich den Scripting Host etwas aus seinem dunklen Versteck zerren. Sie können ihn nämlich auch direkt aufrufen, ganz ohne Script: 1. Wählen Sie im Startmenü Ausführen, und geben Sie ein: WSCRIPT.EXE [Enter]. 2. Schwupp, schon meldet er sich zu Wort: mit einem Dialogfenster. Darin legen Sie Grundeinstellungen fest, die für alle Scripts gelten. Wenn Sie wollen, können Sie zum Beispiel ein Timeout festlegen. Scripts, die länger als diese Zeit brauchen, werden kurzerhand abgebrochen. Wählen Sie diese Option nicht! Sie würde sonst für alle Scripts gelten, und später könnte es leicht passieren, daß umfangreiche Scripts nicht bis zu Ende ausgeführt werden. Besser ist, ein Timeout maßgeschneidert für das jeweilige Script festzulegen. Dazu klicken Sie Ihre Scriptdatei mit der rechten Maustaste an, wählen Eigenschaften und klicken auf das Register Script. Jetzt sehen Sie dieselben Einstellmöglichkeiten, die diesmal aber nur für dieses Script allein gelten – schon wesentlich besser.
30
Kapitel 1: Sprachschatz Ihrer Scripts erweitern
Bild 1.4: In diesem Dialog werden die generellen WSH-Eigenschaften definiert
Bild 1.5: Besser: Eigenschaften nur für ein bestimmtes Script setzen
Die allermeisten Feineinstellungen regelt der Scripting Host gar nicht in seinem Dialogfenster. Machen Sie das nächste Experiment: 1. Wählen Sie im Startmenü Ausführen, und geben Sie ein: WSCRIPT.EXE /? [Enter]. 2. Schon besser: der Scripting Host präsentiert nun all seine Geheimoptionen, und die können ausgesprochen nützlich werden. Mehr dazu in einem Moment.
1.1
1.1.3
Der Scripting Host – so funktioniert er wirklich
31
WSCRIPT.EXE oder CSCRIPT.EXE?
Den Scripting Host gibt es gleich zweimal: einmal als Windows-Programm und ein zweites Mal als DOS-Programm. Wobei das etwas gelogen ist: auch die DOS-Version des Scripting Host läuft nur unter Windows. Allerdings öffnet diese Version ein DOS-Fenster und macht es sich darin gemütlich. Wollen Sie ein Script testweise mit der DOS-Version ausführen? Dann klicken Sie Ihr Script mit der rechten Maustaste an und wählen anstelle von Öffnen den Befehl Mit Eingabeaufforderung öffnen. Sollen Scripts grundsätzlich mit CSCRIPT.EXE (und nicht wie in der Voreinstellung mit WSCRIPT.EXE) ausgeführt werden, dann verwenden Sie diesen Befehl: WSCRIPT.EXE //H:CScript [Enter]. Um wieder WSCRIPT.EXE zur Voreinstellung zu machen, verwenden Sie das Gegengift: WSCRIPT.EXE //H:WScript [Enter].
1.1.4
Internet Explorer als Script Host einsetzen
Gerade haben Sie entdeckt, daß einfache Scriptdateien vom Windows Scripting Host ausgeführt werden. Entweder WSCRIPT.EXE oder CSCRIPT.EXE liest Ihren Scriptcode und verfüttert ihn dann an Windows. Das ist die Voraussetzung, damit Ihr Script nützliche Dinge anstellen kann. Allerdings ist der Windows Scripting Host nicht der einzige Script Host. Es gibt viele weitere Programme, die Scriptcode lesen und ausführen können. Der Internet Explorer ist nur ein Beispiel. Er führt ebenso wie der Windows Scripting Host kreuzbrav Scripts aus, die Sie in Webseiten einbetten. Machen Sie dazu den folgenden Test: 1. Wählen Sie im Startmenü Ausführen, und geben Sie ein: NOTEPAD [Enter]. Der Texteditor startet. Nun geben Sie Ihr Script ein, das diesmal in ein rudimentäres HTML-Rahmenwerk eingebunden ist: <script language = "VBScript"> MsgBox "Hallo Welt!"
2. Speichern Sie diesen Code: Wählen Sie im Datei-Menü Speichern unter, stellen Sie oben in der Liste Speichern in ein: Desktop, und klicken Sie dann in die Zeile Dateiname. Speichern Sie Ihre Testdatei als SCRIPT.HTM [Enter]. Auf dem Desktop liegt nun eine Webseite. Die Dateiextension HTM hat aus dem einfachen Text eine HTML-Datei gemacht, und wenn Sie sie öffnen, dann startet der Internet Explorer – oder jeder andere Browser, der auf Ihrem System für HTML-Dateien zuständig ist. Allerdings wird Ihr Script nur dann ausgeführt, wenn Sie den Internet Explorer verwenden. Andere Browser unterstützen die Scriptsprache VBScript nicht und beschränken sich auf JavaScript. Verwenden Sie den Internet Explorer als Standardbrowser, dann erscheint tatsächlich ein Dialogfenster und begrüßt Sie.
32 1.1.5
Kapitel 1: Sprachschatz Ihrer Scripts erweitern
Die besonderen Funktionen des Script Hosts
Zusätzlich zu den normalen Scriptbefehlen, die in allen Script Hosts gleich sind, blendet der jeweils gewählte Script Host sich selbst als Objekt ein. Das klingt ungeheuer technisch, ist aber eigentlich ganz banal: Wenn Sie Ihr Script als VBS- oder JS-Datei im Windows Scripting Host ausführen, dann blendet der Windows Scripting Host unerkannt hinter den Kulissen sich selbst als WScript-Objekt ein. Über dieses Objekt bekommen Sie also Zugriff auf die persönlichen Befehle des Windows Scripting Hosts. Diese Befehle stehen Ihnen immer zur Verfügung, ganz gleich, welche Scriptsprache Sie im WSH einsetzen, und oben hatten Sie bereits gesehen, wie Sie WScript.ScriptFullName dazu einsetzen, den Namen der Scriptdatei herauszufinden. Führen Sie dagegen ein Script im Internet Explorer aus, dann gibt es kein WScript-Objekt. WScript.ScriptFullName ist also in einem Script, das eingebettet in einer Webseite abläuft, nicht vorhanden – und auch gar nicht sinnvoll. Schließlich gibt es in diesem Fall gar keine eigenständige Scriptdatei, deren Namen man verkünden könnte. Statt dessen blendet der Internet Explorer ein anderes Objekt ein: document. Es entspricht dem HTML-Dokument, in das Ihr Script eingebettet ist, und dieses Objekt bringt ähnlich wie WScript eine ganze Reihe persönlicher Funktionen mit. Wiederum stehen Ihnen diese Funktionen in allen Scripts Ihrer Webseite zur Verfügung, ganz gleich, ob Sie VBScript, JavaScript oder irgendeine andere Scriptsprache einsetzen. Probieren Sie zum Beispiel das folgende Beispiel aus: <script language = "VBScript"> MsgBox TypeName(document) document.write "Hello!" document.parentWindow.alert "Hello!"
Speichern Sie es im Texteditor als TEST2.HTM, und öffnen Sie dann die Datei! Diesmal passiert eine Menge mehr: Zuerst gibt Ihr Script den Objekttyp aus, der sich hinter document verbirgt: HTMLDocument. Anschließend verwendet das Script die write-Methode des document-Objekts, um einen Text ins Internet Explorer-Fenster auszugeben. Danach erfragt das Script via parentWindow das Fensterobjekt, in dem das HTML-Dokument angezeigt wird, und kann über die alert-Methode dieses Fensterobjektes ein Dialogfenster auf den Bildschirm zaubern. Sie könnten den Code auch etwas anders schreiben: <script language = "VBScript"> MsgBox TypeName(document) document.write "Hello!" set fenster = document.parentWindow
1.1
Der Scripting Host – so funktioniert er wirklich
33
fenster.alert "Hello!" MsgBox TypeName(fenster)
Speichern Sie die Datei als TEST3.HTM. Hier wird das Fensterobjekt zuerst in einer eigenen Variablen gespeichert: fenster. TypeName verrät Ihnen den offiziellen Namen des Fensterobjekts: HTMLWindow (oder bei moderneren Internet Explorern HTMLWindow2).
1.1.6
Objekte bereichern Ihren Script-Wortschatz
Eben haben Sie bereits gesehen, wie Sie den eingeschränkten Wortschatz Ihrer Scripts kräftig aufstocken können. Das Geheimnis sind Objekte. Dahinter verbergen sich »Black Boxes«, deren Innenleben Ihnen herzlich egal sein kann. Haben Sie erst einen Weg gefunden, auf ein Objekt zuzugreifen, dann stehen Ihren Scripts anschließend alle Funktionen zur Verfügung, die dieses Objekt anzubieten hat. Einige Objekte – wie WScript oder document – werden von Anfang an vom jeweiligen Script Host zur Verfügung gestellt. Andere Dokumente – wie HTMLWindow – werden von Objektfunktionen zurückgeliefert. parentWindow ist solch eine Funktion, und wenn Sie das Objekt unter einem eigenen Namen speichern wollen, dann verwenden Sie dazu wie im letzten Beispiel den Set-Befehl. Tip: Set – bei fremden Objekten ungeheuer wichtig! VBScript braucht den Set-Befehl nie, Sie hingegen schon! Set ist ungeheuer wichtig, wenn Sie mit Objekten arbeiten. Objekte sind nämlich keine normalen Variablen, sondern hinter Objekten steckt eine Referenz auf das Objekt. Deshalb dürfen solche Referenzen nur mit Set an eine Variable übergeben werden.
Die allermeisten Objekte allerdings dümpeln unbenutzt und unerkannt in den weiten Tiefen Ihres Windows-Systems umher. Solche Objekte sprechen Sie mit den VBScript-Befehlen CreateObject und GetObject an. Ein ganz besonders wichtiges Objekt heißt Scripting.FileSystemObject. Es stellt Ihnen alle nur denkbaren Befehle rund um Ihr Dateisystem zur Verfügung. Schauen Sie mal: ’ 1-1.vbs set filesystem = CreateObject("Scripting.FileSystemObject") ’ Auf einen Ordner zugreifen: set ordner = filesystem.GetFolder("C:\") ’ Alle Dateien auflisten liste = "" for each datei in ordner.files liste = liste & datei.name & ", " next ’ anzeigen MsgBox liste
34
Kapitel 1: Sprachschatz Ihrer Scripts erweitern
Hier verschafft sich das Script zuerst mit CreateObject Zugriff auf das Scripting.FileSystemObject und speichert mit Hilfe von Set eine Referenz darauf in der Variablen filesystem. Danach kann es alle Befehle einsetzen, die dieses Objekt zu bieten hat. Zuerst verwendet das Script GetFolders und läßt sich ein Ordnerobjekt zurückliefern. Es wird mit Set der Variablen ordner zugewiesen. Danach kann eine Schleife alle Dateien heraussuchen, die in diesem Ordner gelagert werden. Dazu verwendet die Schleife die Funktion files des Ordner-Objekts. Das Resultat: ein Dialogfenster listet fein säuberlich alle Dateinamen auf. Prima. Es kann höchstens sein, daß das Dialogfenster nicht groß genug ist, um wirklich alle Dateinamen anzuzeigen, aber das ist momentan verschmerzbar. Sicher wird sich spätestens jetzt eine zweifelnde Frage einschleichen: Wo um alles in der Welt erfährt man die nötigen Details über Objekte und ihre Funktionen? Wer verrät, welche Funktionen in Scripting.FileSystemObject schlummern und wie man sie einsetzt? Keine Sorge, diese Frage beantwortet sich in einem Moment ganz von selbst! Zuerst muß sich der Bogen schließen: Was passiert, wenn man das Scripting.FileSystemObject nicht im WSH verwendet, sondern zum Beispiel in einem eingebetteten Script im Internet Explorer? Ausprobieren: <script language = "VBScript"> set fs = CreateObject("Scripting.FileSystemObject") ’ Auf einen Ordner zugreifen: set ordner = fs.GetFolder("C:\") ’ Alle Dateien auflisten liste = "" for each datei in ordner.files liste = liste & datei.name & ", " next ’ anzeigen MsgBox liste
Wenn Sie diesen Code als TEST4.HTM speichern und dann die HTML-Datei öffnen, dann können vier Dinge passieren:
Es öffnet sich kein Internet Explorer, sondern ein anderer Browser. Sonst passiert nichts. Das ist normal, nur der Internet Explorer versteht VBScript. Für andere Browser ist das Script unsichtbar und müßte in JavaScript geschrieben sein.
Es öffnet sich der Internet Explorer, aber sonst passiert gar nichts. In diesem Fall verbieten die Sicherheitseinstellungen, daß »unsichere« ActiveX-Komponenten ausgeführt werden.
1.2
Internet Explorer als sinnvoller Script Host
35
Der Internet Explorer öffnet ein Dialogfenster und fragt nach, ob »potentiell unsichere ActiveX-Komponenten« gestartet werden sollen. Wenn Sie auf Ja klicken, wird das Script ausgeführt und listet die Dateinamen auf.
Der Internet Explorer öffnet sich und führt Ihr Script sofort aus.
Bild 1.6: Der Internet Explorer führt Scripts unter Umständen nicht sofort aus
Was sind »unsichere« ActiveX-Komponenten? Jedes Objekt, das Ihr Script via CreateObject oder GetObject öffnet, ist eine ActiveX-Komponente. Enthält dieses Objekt Befehle, die gefährlich sein könnten, dann gilt es als »unsicher«. Das Scripting.FileSystemObject-Objekt zum Beispiel ist potentiell gefährlich: Es lassen sich damit nicht nur Inhalte auf Ihrer Festplatte auskundschaften. Über den Delete-Befehl könnten damit sogar Dateien gelöscht werden. Damit gilt dieses Objekt zu Recht als »möglicherweise unsicher« – solch ein Objekt sollte auf keinen Fall als Teil einer Webseite gestartet werden können, denn sonst wären all Ihre Daten in Gefahr.
1.2
Internet Explorer als sinnvoller Script Host
Der Internet Explorer kann nur dann als sicherer Script Host verwendet werden, wenn einerseits sichergestellt ist, daß Sie sich beim Surfen im Internet keine gefährlichen ActiveX-Komponenten einfangen, andererseits aber lokale HTML-Dateien auf Ihrem System ohne Hemmnisse und Einschränkungen ausgeführt werden. Wie geht so was? Die Sicherheitseinstellungen des Internet Explorers sind die Lösung. Für alle »Außenbereiche« muß die Ausführung von potentiell gefährlichen Scripts streng verboten sein. Für HTML-Dateien, die Sie von Ihrer lokalen Festplatte aus öffnen, sollen dagegen alle Scriptbefehle aktiviert sein. Leider versteckt der Internet Explorer die wichtigen Sicherheitseinstellungen für die lokalen HTML-Dateien in seinem Dialogfenster. Lernen Sie deshalb gleich bei dieser Gelegenheit die »Macht« Ihrer Scripts kennen. Das nächste Script ist Ihr universeller Internet Explorer Generalschlüssel. Dieses Script schaltet auf Wunsch lokale Scripts frei und verbietet gleichzeitig in allen »externen« Zonen – wie zum Beispiel dem Internet – die Ausführung potentiell gefährlicher ActiveX-Komponenten. Damit sichern Sie Ihren Internet Explorer gegen viele Internet-Gefahren und gewinnen gleichzeitig einen neuen Scripting Host hinzu.
36
Kapitel 1: Sprachschatz Ihrer Scripts erweitern
’ 1-2.vbs ' die nötigen Funktionen für den Registry-Zugriff bekommen ' WScript.Shell stellt sie zur Verfügung set wshshell = CreateObject("WScript.Shell") ' Hier lagern die Sicherheitseinstellungen des Internet Explorers key1 = "HKEY_CURRENT_USER\Software\Microsoft\Windows" _ & "\CurrentVersion\Internet Settings\Zones\" ' dieser Eintrag ist für potentiell unsichere ' ActiveX Komponenten zuständig key2 = "\1201" ' ActiveX-Komponenten in den Zonen 1 bis 5 verbieten for x = 1 to 5 wshshell.RegWrite key1 & x & key2, 2, "REG_DWORD" next ' ActiveX-Komponenten in der Zone 0 (lokale Dateien) wahlweise ' nur auf Nachfrage oder sofort ausführen curstat = wshshell.RegRead(key1 & "0" & key2) select case curstat case 1: status = "Bei ActiveX Objekten wird nachgefragt." _ & " Wollen Sie Objekte direkt ausführen lassen?" action = 0 case 2: status = "ActiveX Objekte werden nicht ausgeführt." _ & " Wollen Sie Objekte direkt ausführen lassen?" action = 0 case 0: status = "ActiveX Objekte werden ausgeführt. " _ & "Wollen Sie lieber nachfragen lassen?" action = 1 case else: MsgBox "Unbekannte Einstellung." WScript.Quit end select ' Nachfragen, was gewünscht ist: answer = MsgBox(status, vbYesNo+vbQuestion) if answer = vbYes then wshshell.RegWrite key1 & "0" & key2, action, "REG_DWORD" MsgBox "Einstellungen geändert!", vbInformation end if
Tip: Internet Explorer als »Hilfs-Scripting-Host«! Natürlich brauchen Sie das obige Script nicht unbedingt. Sie können auch von Hand den Registrierungseditor REGEDIT.EXE öffnen und dann im angegebenen Schlüssel die Veränderungen manuell eintragen. HKCU steht dabei für HKEY_CURRENT_USER. Das kann praktisch sein: Vielleicht wollen Sie Scripts auf zahlreichen Rechnern im Netzwerk einsetzen, haben aber keine Lust, dort überall den WSH zu installieren. Sofern mindestens der IE4 auf den Computern installiert ist und sofern Sie die Registry-Änderungen von oben auf diesen Rechnern durchführen, kann also auch der Internet Explorer als sofort einsetzbarer Windows Script Host verwendet werden.
1.2
1.2.1
Internet Explorer als sinnvoller Script Host
37
Internet Explorer als unsichtbarer Script Host
Damit der Internet Explorer als vernünftiger Script Host eingesetzt werden kann, muß ein Weg gefunden werden, um das Internet Explorer-Fenster zu verstecken. Schließlich ist es wenig elegant, wenn ständig ein leeres IE-Fenster Ihre Scriptaktionen begleitet. Mit dem folgenden Rahmenwerk können Sie jedes beliebige VBScript-Script vom Internet Explorer ausführen lassen, ohne daß sein Fenster dabei störend zutage tritt. Speichern Sie es als TEST5.HTM. <script language = "VBScript"> document.parentWindow.resizeTo 0,0 ’ ...hier folgt der Scriptcode MsgBox "Script läuft ohne IE-Fenster!" ' ...hier könnte weiterer Scriptcode stehen
Eingebettet in dieses Rahmenwerk führt Ihr Internet Explorer nun jedes beliebige VBScript-Script aus, ohne daß auf dem Computer der Windows Scripting Host installiert zu sein braucht. Es geht also auch ohne. Allerdings sollten Sie beachten, daß der WSH als Teil seiner Installation eine Reihe von zusätzlichen Komponenten mitinstalliert. Das Scripting.FileSystemObject gehört zum Beispiel dazu, und so kann es durchaus sein, daß auf einem WSH-losen System zwar der Internet Explorer einwandfrei Ihre Scripts ausführt, aber wichtige Zusatzobjekte fehlen. Tip: Scripting.FileSystemObject – wo kommt es eigentlich her? Schauen Sie sich das Problem stellvertretend am wichtigen Scripting.FileSystemObject an: nur mit diesem Objekt ist es möglich, per Script das Dateisystem zu verwenden. Der WSH bringt das Objekt mit, aber der ist nicht der einzige: Wenn Sie auf dem Computer den Internet Information Server oder den Personal Web Server installieren, wird ebenfalls das Scripting.FileSystemObject installiert. Sie können das Objekt sogar separat installieren – völlig losgelöst vom WSH. Dazu kopieren Sie die Datei SCRRUN.DLL in den Windows-Systemordner und registrieren die Datei: Im Startmenü wählen Sie Ausführen und geben ein: REGSVR32.EXE SCRRUN.DLL [Enter].
1.2.2
Streng geheim: HTA-Dateien des Internet Explorer 5
Das Malheur mit Sicherheitsbeschränkungen und lokalen Scripts hat Microsoft natürlich erkannt und reagiert. Bei Windows 2000 können Sie deshalb ab sofort Webseiten als universelle Bedienflächen für Ihre Scripts einsetzen, ohne daß Sie sich um die ActiveX-Sicherheitseinstellungen zu kümmern brauchen. Das Geheimnis sind HTA-Dateien. Solche Dateien werden im IE 5 geöffnet, und die meisten Scripting-Objekte stehen in HTA-Dateien unabhängig von den Sicherheitseinstellungen zur Verfügung. Das ist möglich, weil HTA-Dateien nur
38
Kapitel 1: Sprachschatz Ihrer Scripts erweitern
lokal ausführbar sind, nicht über das Web. Zugleich spart sich das Internet Explorer-Fenster seine üblichen Symbolleisten und Menüs und konzentriert sich nur auf die Darstellung Ihrer Scripts. Allerdings sind nur solche Befehle erlaubt, die im IE-Fenster ablaufen. Der MsgBox-Befehl ist tabu, und deshalb müßten Sie das vorangegangene Beispielscript nur etwas umwandeln. Speichern Sie es als TEST6.HTA. <script language = "VBScript"> set fs = CreateObject("Scripting.FileSystemObject") ’ Auf einen Ordner zugreifen: set ordner = fs.GetFolder("C:\") ’ Alle Dateien auflisten liste = "" for each datei in ordner.files liste = liste & datei.name & ", " next ’ anzeigen MsgBox liste
Denken Sie bitte daran: HTA-Dateien funktionieren nur bei Windows 2000. HTA-Dateien besitzen kein eigenes Icon und werden deshalb immer mit dem Windows-Standard-Icon für unbekannte Dateien ausgerüstet.
Bild 1.7: Webseiten mit HTA-Extension werden als lokale Management Console geöffnet
1.3
1.3
Scripts um zusätzliche Funktionen bereichern
39
Scripts um zusätzliche Funktionen bereichern
Eins ist klar: In diesem Buch geht es nicht um die reine Scripterstellung. Wie Sie VBScript verwenden und damit nützliche Scripts schreiben, habe ich bereits in meinem ersten Buch zum Windows Scripting Host in allen Details beschrieben: Franzis Professional Series Windows Scripting Host Praxisbuch. In diesem Buch geht es darum, wie Sie Ihren Scripts neue und bessere Befehle beibringen. Befehle, mit denen Sie zum Beispiel Windows NT/2000 Benutzerkonten verwalten, CD-Schubladen ausfahren oder fremde Programme fernsteuern. Jede Scripterweiterung geht dabei denselben Weg: über CreateObject oder GetObject greift Ihr Script auf zusätzliche Objekte zu, die die nötigen neuen Funktionen zur Verfügung stellen. Doch gibt es ganz unterschiedliche Wege, an Objekte heranzukommen:
Im Kapitel 2 lernen Sie ein wertvolles Tool kennen, das ich für Sie programmiert habe und das Sie auf der Buch-CD finden. Dieses Tool analysiert vollautomatisch Ihr System und verrät, welche Objekte es eigentlich auf Ihrem System gibt, wie ihr Innenleben aussieht und welche Funktionen und Befehle darin schlummern. Dieses Spionage-Tool schreibt Ihnen auf Wunsch sogar das komplette Grundgerüst für Ihre Scripts. Allein mit diesem Tool und dem Wissen, das es bereitstellt, gewinnen Sie Hunderte neuer Funktionen hinzu.
Im Kapitel 3 verrate ich Ihnen, wann GetObject sinnvoll eingesetzt wird. Ich zeige Ihnen, wie Sie sich per GetObject ins ADSI (Active Directory Service Interface) einklinken und so Windows NT/2000-Benutzerkonten verwalten, Ordner im Netzwerk freigeben und BetriebssystemDienste starten und beenden.
Im Kapitel 4 stelle ich Ihnen die kostenlose Visual Basic Control Creation Edition vor. Sie erlaubt Ihnen, ganz eigene Objekte zu schreiben. Das ist weit weniger schwierig, als Sie glauben, und mit der VB CCE stehen Ihren Scripts plötzlich Tausende neuer Funktionen zur Verfügung.
41
2
Mit dem Scripting Spy geheime Systemobjekte ausspionieren
Auf Ihrem System schlummern Hunderte von ActiveX-Objekten mit Tausenden von nützlichen Funktionen, nur verrät Ihnen das niemand! All diese Funktionen könnten Sie sofort und ohne weitere Kosten in eigenen Scripts einsetzen. Wenn Sie wüßten, wo diese verborgenen Objekte schlummern, wie sie angesprochen werden und welche Funktionen darin versteckt sind. Rätseln Sie nicht länger! Ich habe für Sie ein universelles Spionagetool entwickelt. Es befindet sich auf der Buch-CD und braucht nur noch installiert zu werden. Dieses Spionagetool verrät Ihnen alles, was Sie wissen müssen, um auch die verstecktesten Systemfunktionen in Ihren Scripts zu nutzen. Lernen Sie auf den nächsten Seiten die verblüffenden Möglichkeiten des Scripting Spy genau kennen! Ganz nebenbei werden Sie dabei nicht nur eine interessante Reise durch Ihr System machen, sondern sehr viel »Expertenwissen« über COM-Objekte hinzugewinnen. Und zwar gänzlich schmerzfrei, denn der Scripting Spy enthüllt den Aufbau von COM-Objekten und macht das Innenleben wie mit einem Röntgen-Apparat sichtbar und transparent. Wer sofort loslegen will, kann natürlich auch gleich zu Kapitel 2 springen. Clever ist das aber nicht, denn nur mit den Infos der folgenden Seiten behalten Sie den Überblick und können alles souverän meistern.
2.1
Scripting Spy – das müssen Sie wissen
Der Scripting Spy ist eine kostenlose Beigabe zu diesem Buch, und einem geschenkten Gaul schaut man nicht ins Maul. So oder ähnlich könnte man die Sache formulieren, denn der Scripting Spy ist mein persönliches Objekt-Röntgen-Gerät, mit dem ich zahlreiche Geheimnisse in diesem Buch enträtseln konnte. Dieses Tool ist in einer Rotwein-reichen Woche in der Provence entstanden und war nie für den kommerziellen Markt bestimmt. Ich kann deshalb keinerlei Garantien über die Funktionstüchtigkeit dieses Tools geben. Trotzdem bin ich für jegliches Feedback an [email protected] dankbar und verspreche natürlich, das Tool weiterzuentwickeln. Der kritischste Moment ist der Programmstart selbst: Hier analysiert der Scripting Spy alle Objekte auf Ihrem Computer, und das funktioniert auch in aller Regel wunderbar. Dumm nur, wenn in Ihrer Registry Inkonsistenzen entdeckt werden: Der Scripting Spy kann sich bei unlogischen RegistrySchlüsseln durchaus verabschieden, weil mir die Zeit fehlte, jedwede Fehlerbedingung abzufangen.
42
Kapitel 2: Mit dem Scripting Spy geheime Systemobjekte ausspionieren
Falls Sie übrigens ein Hardcore-C-Programmierer sind und zufällig mit dem Gedanken spielen, das Tool zusammen mir mir zu perfektionieren, dann melden Sie sich bitte.
2.1.1
Scripting Spy installieren
Um Ihr Spionagetool zu installieren, starten Sie auf der Buch-CD im Verzeichnis SCRIPTING SPY das Programm SETUP.EXE. Klicken Sie dann auf OK und anschließend auf die große Schaltfläche mit dem Installations-Symbol. Das Programm wird installiert, und Sie finden den Scripting Spy anschließend in Ihrem Programme-Menü. Tip: Probleme bei der Installation? Sollte die Installation nicht klappen, dann sind dafür vermutlich Versionskonflikte verantwortlich – das alte Windows-Problem, auch »DLL HELL« genannt. Kontrollieren Sie, ob im Software-Modul der Systemsteuerung möglicherweise schon ein früher installierter Scripting Spy gemeldet wird, und deinstallieren Sie ihn dort. Hilft alles nichts, dann mailen Sie mir: [email protected].
2.1.2
Nachschauen, welche Objekte es auf Ihrem System gibt
Starten Sie den Scripting Spy in Ihrem Programme-Menü. Ein Dialogfenster erscheint und bittet um etwas Geduld, während das Tool Ihr System unter die Lupe nimmt. Dies ist der kritischste Moment, weil hierbei die Registry untersucht wird. Fehleinträge in der Registry können den Scripting Spy verwirren und zur Aufgabe zwingen. Wie lange der Suchprozeß dauert, hängt von zwei Dingen ab: der Geschwindigkeit Ihres Rechners und natürlich der Anzahl der Programme, die auf Ihrem Computer installiert sind.
Bild 2.1: Der Scripting Spy untersucht automatisch Ihr gesamtes System
2.1
Scripting Spy – das müssen Sie wissen
43
Tip: Scripting Spy benötigt den Scripting Host! Weil der Scripting Spy ein Tool für die Scriptprogrammierung ist, muß der WSH auf Ihrem System installiert sein. Andernfalls quittiert der Scripting Spy den Dienst. Wie Sie den WSH blitzschnell auf Ihrem System installieren, wenn er noch fehlt, lesen Sie in Kapitel 1 – oder Sie sparen sich das Blättern und installieren die Datei STE51DE.EXE von der Buch-CD.
Anschließend können Sie per Klick auf Info die Version Ihres WSH kontrollieren und mit Akzeptiert die Spionagearbeit aufnehmen:
Bild 2.2: Der Scripting Spy meldet Version des Scripting Host und der Sprach-Engines
Im Register Modul aussuchen sehen Sie eine lange Liste mit Namen. Vielleicht kommen Ihnen diese Namen bekannt vor (siehe Bild 2.3). In der Voreinstellung listet der Scripting Spy alle Programm-IDs auf, die sogenannten ProgIDs. Die kennen Sie schon, denn die ProgIDs sind die offiziellen Namen der Objekte. Mit diesen ProgID-Namen locken Sie Objekte hervor und können sie anschließend in eigenen Scripts nutzen. Die Liste zeigt allerdings der Übersicht wegen nicht sofort die ganze ProgID. Weil ProgIDs immer aus zwei Teilen bestehen, die durch einen Punkt getrennt sind, zeigt die Liste zuerst nur den ersten Teil. Doppelklicken Sie auf solch einen Eintrag, dann sehen Sie in den Untereinträgen alle ProgIDs, die den ersten Teil im Namen gemeinsam teilen. Probieren Sie’s einfach aus: Oben hatten Sie bereits das Scripting.FileSystemObject kennengelernt, mit dessen Hilfe Sie das gesamte Dateisystem im Griff haben. Suchen Sie in der Liste nach dem Begriff Scripting, und doppelklicken Sie dann darauf! Drei Untereinträge erscheinen: • Scripting.Dictionary • Scripting.FileSystemObject • Scripting.Encoder
44
Kapitel 2: Mit dem Scripting Spy geheime Systemobjekte ausspionieren
Sie sehen also auf einen Blick: Das Scripting-Modul enthält gleich drei Objekte, und das Scripting.FileSystemObject Objekt ist nur eins davon.
Bild 2.3: Aha, der Scripting Spy listet alle Objekte auf, die es bei Ihnen gibt!
Der Scripting Spy kann aber noch viel mehr Infos liefern. Klicken Sie auf das Register Beschreibung, dann listet der Scripting Spy die Objekte geordnet nach ihrer Beschreibung. Das Scripting.FileSystemObject würden Sie nun unter dem Eintrag FileSystem Object finden.
Bild 2.4: Auf Wunsch auch anders: COM-Objekte nach Hersteller sortiert
2.1
Scripting Spy – das müssen Sie wissen
45
Die Beschreibung-Ansicht ist vor allem dann wichtig, wenn Sie selbst auf die Pirsch gehen möchten und nicht genau wissen, wo sich Nachschauen lohnt. Die Beschreibung Steuerelement für Kodak-Bildbearbeitung ist einfach aussagekräftiger als die ProgID, die dahinter steckt: imaging.editctrl. Wollen Sie die Objekte dagegen nach Herkunft sortieren, dann klicken Sie auf das Register Hersteller. Jetzt sehen Sie alle Hersteller, die ActiveX-Objekte auf Ihrem Computer installiert haben. Der Eintrag »n/a« faßt alle Objekte zusammen, bei denen kein Hersteller angegeben ist.
2.1.3
Detailinformationen zu einem Objekt sehen
Ganz gleich, ob Sie sich für die Ansicht ProgID, Beschreibung oder Hersteller entschieden haben: Sobald Sie einen Oberbegriff der Liste per Doppelklick öffnen und dann einen Untereintrag anklicken, sehen Sie rechts alle wichtigen Detailinformationen zu diesem Objekt. Wählen Sie zum Beispiel das Register ProgID, und suchen Sie den Eintrag Scripting. Doppelklicken Sie darauf, und klicken Sie auf den Untereintrag Scripting.FileSystemObject. Rechts sehen Sie nun Detailinformationen über das Objekt. Sie sehen zum Beispiel, daß dieses Objekt ein »In-Process Server« ist und in der Datei SCRRUN.DLL lebt. Tip: In-Process und Out-of-Process – das steckt dahinter... Die meisten ActiveX-Objekte sind In-Process-Objekte. In-Process heißt: das Objekt kann nicht als eigenständiges Programm laufen, sondern muß in den Adreßraum eines anderen Programms eingeklinkt werden. Greift Ihr Script auf ein In-Process-Objekt zu, dann klinkt sich das Objekt in den Adreßraum des Script Hosts ein. Für Sie hat das alles nur eine praktische Konsequenz: auf In-Process-Objekte muß Ihr Script warten. Solange das In-Process-Objekt eine Aufgabe erledigt, ist die weitere Script-Abarbeitung angehalten. Bei Out-of-Process-Objekten kann Ihr Script dagegen weiterarbeiten, während das Objekt seine Arbeit erledigt.
2.1.4
Wichtige Objekte in die Favoritenliste übernehmen
Sehr viele ActiveX-Objekte, die der Scripting Spy auflistet, sind entweder nur für interne Zwecke gedacht oder interessieren Sie schlichtweg nicht. Damit Sie sich nicht immer wieder durch die lange Gesamtliste klicken müssen, können Sie interessante Objekte in Ihre persönliche Hit-Liste übernehmen. Suchen Sie einfach ein Objekt heraus, das Sie interessiert. Das wichtige Scripting.FileSystemObject sollte zum Beispiel dazugehören. Tip: So klappt’s am besten Am besten picken Sie sich für den Anfang genau ein interessantes Objekt heraus, zum Beispiel Scripting.FileSystemObject, und fügen es zu Ihren Favoriten hinzu. Anschließend erforschen Sie dieses Objekt so wie unten beschrieben. Haben Sie es anschließend genauestens kennengelernt, dann können Sie optimal entscheiden, ob es weiterhin als nützliches Objekt in der Favoritenliste bleiben soll oder lieber wieder herausfliegt.
46
Kapitel 2: Mit dem Scripting Spy geheime Systemobjekte ausspionieren
Anschließend knöpfen Sie sich das nächste unbekannte Objekt aus der Gesamtliste vor und machen weiter, bis Sie entweder keine Lust mehr oder alle Objekte analysiert haben. In Ihrer Favoritenliste finden Sie dann stets alle wichtigen Objekte, die Ihren Scripts nützliche Zusatzfunktionen bescheren.
In der rechten Spalte klicken Sie dann auf die Schaltfläche Scripting.FileSystemObject zu Favoriten hinzufügen. Mit derselben Schaltfläche entfernen Sie das Objekt auch wieder aus der Liste. Sobald Sie mindestens ein Objekt zum »Favoriten« erklärt haben, wacht die Option »nur Favoriten« auf. Wählen Sie diese Option, dann schrumpft die Objektliste und zeigt nur noch die von Ihnen handverlesenen Objekte an – praktisch!
2.1.5
Potentiell nutzlose Objekte aus der Liste verbannen
Auf Ihrem System können Hunderte von ActiveX-Objekten installiert sein. Welche sind interessant für einen Scripter? Natürlich könnten Sie alle Objekte der Reihe nach untersuchen, aber das wäre ein zeitraubendes Unterfangen. Deshalb hilft Ihnen der Scripting Spy auf Wunsch! Wählen Sie die Option vorselektiert, dann entfernt der Scripting Spy alle Objekte aus der Liste, die vermutlich keine interessanten Script-Befehle enthalten. Aber auch in der Gesamtliste (Option alle zeigen) bekommen Sie Hinweise: Symbol
Bedeutung Interessantes Objekt, enthält mindestens eine Funktion Vermutlich uninteressant: enthält keine Funktionen, nur Informationen und Subs Dieses Objekt wurde zu den Favoriten hinzugefügt Vorsicht: keine TypeLibrary für dieses Objekt gefunden. Wenn Sie es trotzdem auswählen, sucht der Scripting Spy ausführlicher nach einer TypeLibrary, kann aber nicht garantieren, daß es wirklich eine gibt
Tab. 2.1: Info-Symbole zeigen, wie interessant ein unbekanntes COM-Objekt ist
2.2
Röntgen-Schirm: Welche Funktionen schlummern in den Objekten?
Die Namen der auf Ihrem System versammelten Objekte kennen Sie jetzt. Nur nützen Ihnen die natürlich herzlich wenig, wenn Sie nicht auch wissen, welche Funktionen darin überhaupt zur Verfügung gestellt werden. Deshalb hat der Scripting Spy einen eingebauten Röntgenschirm, der auf Wunsch jedes Objekt genau durchleuchtet und alle geheimen Informationen preisgibt. Suchen Sie sich dazu auf dem Register Modul aussuchen zuerst das Objekt heraus, in das Sie hineinschauen wollen. Wählen Sie zum Beispiel das Scripting.FileSystemObject. Anschließend klicken Sie unten auf die Schaltfläche Details oder doppelklicken auf den Eintrag.
2.2
Röntgen-Schirm: Welche Funktionen schlummern in den Objekten?
47
Schwupp, sofort analysiert der Scripting Spy das ausgewählte Objekt und schaltet um auf das Register Röntgen. Ganz oben finden Sie ein Textfeld namens Typelib Datei. Es enthält den Namen der Type Library, die für dieses Objekt zuständig ist. Darunter listet der Scripting Spy alle Einzelteile auf, die es im Objekt finden konnte. Außerdem markiert er automatisch die »Klasse«, die für das ausgewählte Objekt zuständig ist. Im Falle des Scripting.FileSystemObject wird also die Klasse FileSystemObject aufgeklappt und darin das Interface IFileSystem3 markiert. In der Liste rechts daneben verrät der Scripting Spy, wie Ihr Script an das markierte Interface herankommt. Ganz korrekt meldet es in diesem Beispiel, IFileSystem3 sei direkt durch Scripting.FileSystemObject ansprechbar. Stimmt.
Bild 2.5: Röntgenschirm: Liefert automatisch die Geheiminfos aus unbekannten Objekten
In der Liste darunter schließlich sehen Sie alle Funktionen und Befehle, die Ihnen über Scripting.FileSystemObject zur Verfügung stehen. Heureka!
2.2.1
Wie COM-Objekte aufgebaut sind
Eigentlich brauchen Sie sich keine grauen Haare wachsen zu lassen, denn wenn Sie keine Lust auf technische Details haben, dann ignorieren Sie diesen Abschnitt einfach höflich. Der Scripting Spy stellt Ihnen auch ohne dieses Detailwissen zuvorkommend die Funktionen und Befehle unbekannter Objekte zur Verfügung.
48
Kapitel 2: Mit dem Scripting Spy geheime Systemobjekte ausspionieren
Allerdings ist es höchst spannend und interessant, sich den internen Aufbau von COM-Objekten näher anzusehen. Das Wissen, das Sie hier gewinnen, hilft Ihnen sehr dabei, die Zusammenhänge optimal zu verstehen. Schauen Sie sich dazu noch einmal die Liste oben links an: noch ist hier wahrscheinlich das IFileSystem3-Objekt markiert. Scrollen Sie testweise durch die Liste, und schauen Sie sich an, was sonst noch darin zu sehen ist. Jedes COM-Objekt enthält sogenannte CoClasses. Das sind eigenständige Objekte, die bestimmte Befehle anbieten. Die Liste zeigt Ihnen alle CoClasses, also alle Objekte, die in der betreffenden ActiveX-Komponente enthalten sind. Wie Sie von oben wissen, wohnt das Scripting.FileSystemObject in der Datei SCRRUN.DLL. Diese Datei enthält sehr viel mehr Intelligenz als nur das Scripting.FileSystemObject. Fünf CoClasses meldet Ihnen der Scripting Spy. Alle CoClasses, die über ProgIDs direkt von Ihren Scripts aus ansprechbar sind, werden mit diesem Symbol markiert: . Alle CoClasses, an die Ihr Script nicht direkt herankommt, erhalten dieses Symbol: . Klicken Sie in der Liste nacheinander auf die verschiedenen CoClasses! Im Feld rechts daneben sehen Sie sofort, wie Ihr Script an dieses Objekt herankommt: CoClass
So kommen Sie heran:
Dictionary Encoder Files FileSystemObject Folders
Scripting.Dictionary Scripting.Encoder Files in Modul Folder Scripting.FileSystemObject Subfolders in Modul Folder
Tab. 2.2: Die CoClasses des Scripting.FileSystemObject
Aha! Die Befehle des FileSystemObject können Sie also direkt über CreateObject (»Scripting.FileSystemObject«) ansprechen! An ein Files-Objekt kommen Sie dagegen nicht direkt heran. Trotzdem geht es, denn der Scripting Host kennt die internen Zusammenhänge: Der Befehl Files aus dem Modul Folder liefert Ihnen ein Files-Objekt! Nur: Wo bekommt man ein Folder-Modul her? Dazu gleich mehr, denn für solch knifflige Fragen hat der Scripting Spy eine eingebaute Automatik. Alle CoClasses enthalten sogenannte Standard-Interfaces. Das bedeutet bloß, das die CoClass intern aus weiteren Einzelteilen besteht. Doppelklicken Sie zum Beispiel auf die CoClass FileSystemObject: Sofort sehen Sie, daß das Standard-Interface IFileSystem3 heißt. Das Standard-Interface wird mit diesem Symbol markiert: . Einige CoClasses enthalten zusätzlich ein Event-Interface. Mehr zu Events lesen Sie in Kapitel 3.4. Event-Interfaces werden mit diesem Symbol markiert: . Möchten Sie noch tiefer in die Materie einsteigen, dann doppelklicken Sie auf das Standardinterface, also zum Beispiel auf IFileSystem3. Jetzt sehen Sie zwei weitere Unterpunkte: Input und Output.
2.2
Röntgen-Schirm: Welche Funktionen schlummern in den Objekten?
49
Input listet alle Zusatzinfos auf, die Sie kennen müssen, wenn Sie die Funktionen und Befehle dieses Interface aufrufen wollen. Doppelklicken Sie auf Input! Nun sehen Sie zum Beispiel den Eintrag SpecialFolderConst, und wenn Sie darauf klicken, sehen Sie unten die besonderen Konstanten, mit denen das FileSystemObject spezielle Ordner bezeichnet. Output listet übersichtlich alle Objekte auf, die Sie von den Funktionen dieses Interface zurückgeliefert bekommen können. Input und Output können Sie für den Augenblick getrost ignorieren. Diese Informationen werden später aber wichtige Hilfestellung leisten. Nicht umsonst organisiert der Scripting Spy die Liste der CoClasses und Interfaces baumartig. Weil der Scripting Host automatisch die Verwandtschaftsbeziehungen der einzelnen Module berücksichtigt, sehen Sie sofort, daß IFileSystem3 das Standardinterface von FileSystemObject ist, die beiden also zusammengehören. Ohne diese Zuordnung wäre es wesentlich schwieriger, die vielen einzelnen Objekte vernünftig zuzuordnen. Dennoch können Sie auch eine »flache« Ansicht auf den Inhalt der ActiveX-Komponente bekommen. Dazu öffnen Sie den Eintrag TypeLib, der mit diesem Symbol markiert ist: .
Bild 2.6: Wichtig: der Scripting Host verrät die Zahlenwerte interner Konstanten
Nun sehen Sie – nach Kategorien sortiert – die Einzelteile des ActiveX-Objekts: Kategorie
Beschreibung
Alias
Entspricht eigentlich einem anderen Objekt und sorgt dafür, daß dieses andere Objekt unter einem anderen (und meist freundlicheren) Namen angesprochen werden kann. Funktioniert also sozusagen wie eine Verknüpfung. Aufzählung; enthält meist Konstanten und Zusatzinformationen Die »Klassen«, also die Objekte, die im ActiveX-Modul schlummern Interface einer Klasse
Enum CoClass DispInterface
50
Kapitel 2: Mit dem Scripting Spy geheime Systemobjekte ausspionieren
Kategorie
Beschreibung
Interface Record Union
Interface einer Klasse Zusatzinformation; zum Beispiel benutzerdefinierte Variablentypen Bei Visual Basic nicht verwendet
Tab. 2.3: Die Klassen einer TypeLibrary
Tip: Konstanten – hier stehen die Werte! Ganz besonders wichtig ist der Eintrag Enum! Darin finden Sie alle Konstanten und deren Werte. Das ist enorm nützlich, denn viele Befehle erwarten bestimmte Zahlenwerte, und die Informationen aus Enum verraten Ihnen, welche Zahlenwerte richtig sind.
2.3
Nach Informationen suchen
Der Scripting Spy enthält eine komfortable Suchfunktion, die Ihnen wertvolle Dienste leistet, wenn Sie bestimmte Informationen dringend benötigen oder auf der Pirsch nach Funktionen sind, die Sie für ein Projekt gebrauchen könnten. Alle Suchfunktionen erreichen Sie über das Register Suchen.
2.3.1
Wo soll gesucht werden?
Jede Suche besteht aus drei Schritten. Im ersten Schritt legen Sie fest, wo gesucht werden soll: Wo suchen?
Beschreibung
Aktuelles Objekt
Wenn Sie sich bereits ein Objekt herausgepickt und mit dem Röntgenschirm untersucht haben, dann sucht der Scripting Spy in diesem Objekt. Das ist ideal, wenn Sie sich mit einem einzelnen Objekt beschäftigen und zum Beispiel nach Objekten, Befehlen oder Konstanten suchen. Haben Sie bereits Objekte in Ihre Favoritenliste eingefügt, dann sucht diese Option in allen Favoriten-Objekten. Das ist ideal, um Informationen zu finden, von denen Sie nicht genau wissen, welches Objekt sie eigentlich bereitstellt. Suchen Sie so zum Beispiel nach Befehlen, die Sie nachschlagen wollen. Diese Option sucht in allen ActiveX-Objekten, die auf Ihrem System installiert sind. Weil das sehr viele sind, kann die Suche enorm lange dauern. Einige Minuten sollten Sie schon einplanen. Diese Option ist ideal, wenn Sie einfach mal schauen wollen, ob es einen Befehl zum Thema »Battery« gibt, oder wenn Sie recherchieren möchten.
Favoriten
Überall
Tab. 2.4: Legen Sie fest, an welchen Orten gesucht werden soll
2.3
2.3.2
Nach Informationen suchen
51
Wonach suchen Sie eigentlich?
Der zweite Schritt legt fest, wonach Sie eigentlich suchen. Sind Sie auf der Suche nach einem bestimmten Befehl, oder fahnden Sie nach einem Objekt? Auch nach ProgIDs kann gesucht werden. Option
Beschreibung
Befehle Module ProgIDs
Findet Funktionen, Befehle und Eigenschaften Findet Module wie zum Beispiel das FileSystemObject oder das Folder-Modul Findet ProgIDs wie zum Beispiel Shell.Application oder Wscript.Shell
Tab. 2.5: Art der gesuchten Information festlegen
2.3.3
Wie soll gesucht werden – genau oder unscharf?
Als letzten Schritt legen Sie fest, wie gesucht werden soll. Kennen Sie den gesuchten Befehlsnamen ganz genau, dann wählen Sie wörtlich. Wollen Sie dagegen unscharf suchen, dann wählen Sie enthaltend. Jetzt werden alle Befehle gefunden, die irgendwo im Namen den Suchbegriff enthalten. Beginnend mit listet alle Befehle auf, die mit dem Suchwort beginnen. Option
Beschreibung
Wörtlich Beginnend mit Enthaltend
Suchwort wird exakt gesucht. Groß- und Kleinschreibung spielt aber keine Rolle Findet alles, was mit dem Suchwort beginnt Findet alles, was das Suchwort irgendwo im Namen enthält
Tab. 2.6: Wie genau soll gesucht werden?
2.3.4
Szenario 1: Nach einer ProgID suchen
Stellen Sie sich das folgende Beispiel vor: Sie haben in einer Zeitschrift ein Beispielscript entdeckt, das das Wscript.Network-Objekt einsetzt. Klingt interessant! Welche Möglichkeiten schlummern wohl sonst noch in diesem Objekt? Wie könnte man das Beispiel aus der Zeitschrift erweitern und ergänzen? Suchen Sie doch einfach! 1. Klicken Sie auf das Register Suchen, und wählen Sie die Option Überall. 2. Wählen Sie dann die Option ProgIDs, und wählen Sie die Option Wörtlich. 3. Geben Sie als Suchbegriff ein: Wscript.Network. Dann drücken Sie [Enter]. Voilà! Die ProgID wird gefunden, und wenn Sie den Eintrag in der Ergebnisliste anklicken, schaltet der Scripting Spy automatisch in den Röntgenschirm um, durchleuchtet das Objekt und listet Ihnen alle Funktionen auf, die das Objekt zu bieten hat. Einfach, oder?
52
Kapitel 2: Mit dem Scripting Spy geheime Systemobjekte ausspionieren
Tip: Und was, wenn das Objekt nicht gefunden wurde? Sollte Ihre Suche keinen Erfolg gehabt haben, dann ist auch das eine nützliche Information: Sie wissen so nämlich, daß dieses Objekt auf Ihrem Computer gar nicht installiert ist. Hat ein Zeitschriftenartikel zum Beispiel das Shell.Application-Objekt verwendet, so kann dieses Objekt bei Ihnen durchaus fehlen. Es wird nur vom Internet Explorer 4 mitgeliefert (nicht IE5) und steht ansonsten nur bei Windows 98 und Windows 2000 zur Verfügung.
Bild 2.7: Nach einem interessanten COM-Objekt suchen
Vielleicht sind Sie jetzt neugierig geworden und wundern sich, ob vielleicht noch ganz andere Objekte hinter Wscript. stecken. So finden Sie es heraus: 1. Klicken Sie auf das Register Suchen, und wählen Sie die Option Überall. 2. Wählen Sie die Option ProgIDs und dann die Option enthaltend. 3. Geben Sie den Suchbegriff ein: Wscript. [Enter] (Punkt nicht vergessen!) Tatsächlich: Sofort sehen Sie, daß es zusätzlich das Wscript.Shell-Objekt gibt, und per Klick sehen Sie auch dessen Funktionsvielfalt. Ziel dieser ProgID-Suche ist also, Informationen, die Ihnen durch Zeitschriftenartikel und Internetbeiträge in die Hände fallen, sofort als Saatkorn für eigene Recherchen zu nutzen.
2.4
Neue Scripting-Funktionen entdecken
53
Bild 2.8: Verwandte Objekte finden
2.3.5
Szenario 2: Nach nützlichen Befehlen suchen
Auch für die alltägliche Recherche ist die Suchen-Funktion ideal. Stellen Sie sich vor, Sie würden gern wissen, wie man den Akku-Ladestand des Notebooks ermitteln kann. Akkus heißen bei den Amerikanern vereinfachend »Battery«, also lohnt sich eine Suche nach diesem Begriff. 1. Klicken Sie auf das Register Suchen, und wählen Sie die Option Überall. 2. Wählen Sie die Option Befehle und dann die Option enthaltend. 3. Geben Sie als Suchwort ein: Battery [Enter]. Nun beginnt eine Suche quer durch alle installierten ActiveX-Komponenten. Die kann etliche Minuten dauern, läßt sich aber jederzeit abbrechen. Das ist ratsam, sobald die Suchfunktion fündig geworden ist. Und tatsächlich: Sofern Sie Windows 2000 einsetzen, wird wirklich eine Batterie-Funktion gefunden. Sie stammt aus dem Objekt SysInfo.SysInfo und heißt BatteryStatus. Ein Klick auf diesen Eintrag in der Ergebnisliste führt Sie direkt ins Röntgen-Register, und Sie sehen die genaue Befehlssyntax.
2.4
Neue Scripting-Funktionen entdecken
Vielleicht sind Sie ein alter Scripting-Hase und kennen schon die Standardbefehle der wichtigsten ActiveX-Objekte. Auch dann hat der Scripting Spy für Sie etwas zu bieten! Auf Wunsch listet er
54
Kapitel 2: Mit dem Scripting Spy geheime Systemobjekte ausspionieren
nämlich bereitwillig alle geheimen Neuerungen auf, die es seit der ersten Ausgabe eines COMObjekts gegeben hat. Dazu suchen Sie sich zunächst wie gewohnt ein ActiveX-Objekt heraus, zum Beispiel Scripting.FileSystemObject. Anschließend klicken Sie auf das Register Neue Funktionen. In der linken Liste sehen Sie jetzt alle Module, die seit der Erstausgabe dieses COM-Objekts hinzugekommen sind. Im Falle des Scripting.FileSystemObjects zeigt die Liste zum Beispiel dieses erweiterte Modul: IFileSystemObject.
Bild 2.9: Automatisch neue Funktionen eines Objekts markieren lassen
Klicken Sie darauf! Sofort zeigt die zweite Liste alle Funktionen, die im Objekt schlummern, und markiert alle neu hinzugekommenen Befehle mit »Neu«. Auf einen Blick können Sie sich so auf die wesentlichen Neuerungen konzentrieren und finden sofort heraus, daß diese Befehle beim WSH 2.0 hinzugefügt wurden: GetFileVersion GetStandardStream
2.5
VBScript und WSH durchleuchten
Das Röntgen-Register kann mehr als nur ActiveX-Objekte durchleuchten. Sie können damit jede beliebige Type Library sichtbar machen.
2.6
Hilfe zu individuellen Script-Befehlen bekommen
55
Vielleicht fragen Sie sich, wo eigentlich die VBScript-Befehle herkommen, oder Sie sind an den Befehlen interessiert, die der Windows Scripting Host mitbringt. Klicken Sie einfach auf das Röntgen-Register und dann ins Textfeld TypeLib Datei. Dann geben Sie den Dateinamen an, in dem Sie Informationen vermuten. Liegt die Datei in einem der Systemordner, dann brauchen Sie noch nicht einmal den Pfadnamen anzugeben. Hier einige gute Startpunkte: Datei
Das steckt dahinter...
Wscript.exe
Befehle des Scripting Hosts. Diese Befehle stehen Ihnen in WSH-Scripts über die Objekte Wscript oder Wsh zur Verfügung Alle Befehle der VBScript Scriptengine Alle Befehle der JScript Scriptengine
VBScript.dll Jscript.dll
Tab. 2.7: Wichtige Bibliotheken für WSH-Befehle
Bild 2.10: Aha: Direkt in WSCRIPT.EXE einklinken und die WSH-Spezialbefehle sehen
2.6
Hilfe zu individuellen Script-Befehlen bekommen
Das Röntgen-Register ist bereits eine wertvolle Hilfe: Hier listet der Scripting Spy alle Funktionen und Eigenschaften auf, die Ihr Script verwenden kann. Doch es gibt noch viel mehr Hilfestellung!
56
Kapitel 2: Mit dem Scripting Spy geheime Systemobjekte ausspionieren
Viele Objekte bringen eigens kurze Befehlsbeschreibungen mit. Sind solche Befehlsbeschreibungen verfügbar, dann blendet sie der Scripting Spy am unteren Bildschirmrand ein.
2.6.1
Geheime Hilfedateien liefern Profi-Informationen
Einige Hersteller liefern sogar ausführliche Hilfedateien mit, die haarklein die Funktion der Objekte beschreiben. Dummerweise schlummern diese Hilfedateien meist völlig vergessen irgendwo in den Weiten Ihrer Festplatte, und selbst wenn Sie durch Zufall auf eine dieser Hilfedateien stoßen würden, wäre es ein zeitraubendes Unterfangen, darin die Seite zu finden, die den gerade herausgepickten Befehl beschreibt. Der Scripting Spy macht das Leben leichter: Gibt es eine Hilfedatei zu dem Objekt, das Sie gerade untersuchen, dann blendet der Scripting Spy unten rechts die Schaltfläche Hilfe ein. Klicken Sie auf diese Schaltfläche, dann öffnet der Scripting Spy nicht nur die passende Hilfedatei, sondern blättert auch sofort vollautomatisch zu der Seite, die den ausgewählten Befehl beschreibt.
Bild 2.11: Ein Klick auf Hilfe schaltet automatisch in die Hersteller-Hilfe des Objekts
2.7
2.7
Vollautomatisch Scripts erstellen
57
Vollautomatisch Scripts erstellen
Wußten Sie eigentlich, daß der Scripting Spy sogar vollautomatisch fix und fertige Scripts für Sie schreiben kann? Sie brauchen die Scripts anschließend höchstens noch etwas feinjustieren. Zum Beispiel kann es Ihnen der Scripting Spy natürlich nicht abnehmen, die Funktionen mit den passenden Argumenten zu füttern, aber er nimmt Ihnen sämtliche Arbeit ab, um das Rahmengerüst zu gestalten. Der Scripting Spy kümmert sich auch automatisch um die richtigen Objekt-Zugehörigkeiten. Wenn Sie sich also einen Befehl aus einem Objekt aussuchen, das nicht direkt über eine ProgID und CreateObject generiert werden kann, dann schlägt der Scripting Spy zahlreiche Script-Alternativen vor, in die es alle Befehle einbaut, die nötig sind, um an das betreffende Objekt indirekt heranzukommen.
2.7.1
Szenario 1: Den Rechner scriptgesteuert herunterfahren
Schauen Sie sich einfach mal an, wie leicht so was geht. Das erste Beispiel nutzt eine Funktion aus dem Shell.Application-Objekt. Dieses Objekt gibt es bei Windows 98 und bei Windows 2000. Auf anderen Windows-Versionen fehlt es, kann aber über den Internet Explorer 4 nachgerüstet werden. Wer den Internet Explorer 5 verwendet, muß darauf verzichten. So fährt Ihr Script den Rechner herunter: 1. Starten Sie den Scripting Spy, wenn er noch nicht läuft. Ich verrate Ihnen zwar bereits, daß die gesuchte Funktion vom Objekt Shell.Application bereitgestellt wird, aber in diesem Beispiel wird keinerlei Geheimwissen vorausgesetzt. Deshalb klicken Sie auf das Register Suchen. 2. Wählen Sie die Optionen Überall, Befehl und enthaltend. Dann geben Sie als Suchwort etwas ein, das mit Herunterfahren zu tun hat und englisch ist – also Shutdown. Drücken Sie [Eingabe]. 3. Nun sucht der Scripting Spy in allen installierten Komponenten. Das kann eine Weile dauern. Gönnen Sie sich einen leckeren Capucchino, während Sie den Scripting Spy schuften lassen. 4. Nachdem die Analyse beendet ist, zeigt die Ergebnisliste eine ganze Reihe von Befehlen rund ums Thema Shutdown. Schauen Sie sich das Ergebnis genau an! Wenn bei Ihnen das Shell.Application-Objekt vorhanden ist, dann finden Sie in der Liste auch den Befehl ShutdownWindows! Der hört sich gut an – klicken Sie darauf. 5. Sofort schaltet der Scripting Spy in den Röntgenschirm um und markiert den Befehl. Unten in der Beschreibungsleiste steht: Exit Windows. Nicht übel.
58
Kapitel 2: Mit dem Scripting Spy geheime Systemobjekte ausspionieren
Bild 2.12: Suchen Sie sich heraus, welche Funktionen Ihr Windows herunterfahren
Bild 2.13: Da ist er: der Befehl zum Herunterfahren
2.7
Vollautomatisch Scripts erstellen
59
6. Nun lassen Sie den Scripting Spy ein Beispielscript schreiben. Dazu klicken Sie unten rechts auf die Schaltfläche Beispiel. Tatsächlich: der Scripting Spy schreibt Ihnen vollautomatisch ein Script.
Bild 2.14: Der Scripting Spy schreibt automatisch das passende Script für Sie
7. Klicken Sie auf Speichern, um das Script abzuspeichern. Im Speichern-unter-Fenster stellen Sie zum Beispiel oben ein: Desktop. Dann geben Sie Ihrem neuen Script einen passenden Namen, zum Beispiel Feierabend, und klicken auf Speichern. 8. Im Scripting-Spy-Fenster klicken Sie auf nächstes. Da es keine weiteren Script-Alternativen gibt, kehrt der Scripting Spy wieder in seinen Röntgenschirm zurück. Knipsen Sie den Scripting Spy aus, oder minimieren Sie sein Fenster! 9. Auf dem Desktop liegt nun Ihr Script feierabend.vbs. Ob es Windows tatsächlich herunterfährt? Starten Sie das Script! Tatsächlich: Der Bildschirm verdunkelt sich, und Windows stellt Ihnen seine Abschaltvarianten zur Verfügung. Tip: Abschalten ganz ohne Klick: geht das? Ganz vollautomatisch funktioniert das Windows-Beenden noch nicht. Der Befehl ShutdownWindows bringt nur das Beenden-Dialogfenster hervor. Wenn Sie ohne Klick sofort herunterfahren wollen, dann finden Sie weitere Lösungen in Kapitel 8.18. Und in Kapitel 12.1 zeige ich Ihnen sogar, wie Sie ferngesteuert über das Netzwerk fremde Computer herunterfahren und neu starten.
Shell.Application hat noch eine ganze Reihe weiterer Befehle zu bieten. Eine ausführliche Beschreibung finden Sie in Kapitel 5.
60
Kapitel 2: Mit dem Scripting Spy geheime Systemobjekte ausspionieren
2.7.2
Szenario 2: Den Inhalt eines Ordners auflisten
Schauen Sie sich als nächstes an, wie der Scripting Spy sogar komplexe Scripts für Sie verfaßt. Angenommen, Sie möchten die Namen aller Dateien in einem bestimmten Ordner auflisten. Aus den ersten Kapiteln wissen Sie bereits, daß für alle Datei-Operationen das Scripting.FileSystemObject zuständig ist. So gehen Sie vor: 1. Starten Sie den Scripting Spy, wenn er noch nicht läuft, und klicken Sie auf das Register Modul aussuchen. Dann klicken Sie auf das Unterregister ProgID. 2. Suchen Sie den Eintrag Scripting, doppelklicken Sie darauf, und doppelklicken Sie dann auf den Untereintrag Scripting.FileSystemObject. Vollautomatisch schaltet der Scripting Spy in den Röntgenschirm um. 3. Weil Sie Dateien auflisten wollen und weil Dateien auf englisch Files heißen, suchen Sie nach dem passenden Befehl. Dazu klicken Sie auf das Register Suchen und wählen die Optionen Aktuelles Objekt, Befehle, enthaltend. Dann geben Sie als Suchwort ein: Files [Enter]. 4. Tatsächlich: Es gibt einen Befehl namens Files. Klicken Sie ihn an! Der Scripting Host bringt Sie wieder sicher in den Röntgenschirm und markiert den Files-Befehl. Unten in der Beschreibungsleiste steht: Get files collection – schnapp dir die Sammlung der Dateien. 5. Nur: Welches Objekt bietet eigentlich den Files-Befehl an? Oben rechts in der Liste sehen Sie sofort, der Files-Befehl wird diesmal nicht direkt über ein Objekt angeboten, das Sie per ProgID und CreateObject erschaffen könnten. Statt dessen wird der Files-Befehl von einer Vielzahl anderer Funktionen bereitgestellt. 6. Bevor Sie sich nun graue Haare wachsen lassen und die Objektzusammenhänge verstehen müssten, klicken Sie einfach galant auf die Schaltfläche Beispiel, rechts unten. Voilà! Schon bastelt der Scripting Spy die erste Scriptvariation: ’ VBS Windows Script Host File ’ automatisch generiert von Scripting Spy V1.0 set FileSystemObject = CreateObject("Scripting.FileSystemObject") set Folder = FileSystemObject.CreateFolder(ByVal Path As String) set obj = Folder.Files ’ ' ' '
"files" ist vom Typ "Property " Zurückgelieferter Wert ist vom Typ: Beschreibung von "files" Get files collection
"IFileCollection"
7. Dieses Script ist zwar technisch in Ordnung, aber reichlich sinnlos. Es verschafft sich zuerst Zugang zum Scripting.FileSystemObject, legt dann mit CreateFolder einen neuen Ordner an und liest danach die Dateinamen in diesem Ordner. Ziemlich dumm, aber echte menschliche Intelligenz hat der Scripting Spy nicht zu bieten. Er ist Bürokrat. Klicken Sie deshalb auf nächstes, um sich einen neuen Vorschlag unterbreiten zu lassen. 8. Dieser Vorschlag ist schon wesentlich sinnvoller. Diesmal wird kein neuer Ordner angelegt, sondern das Script greift via GetFolder auf einen bestehenden Ordner zu. Sehr gut, genau das wollen Sie!
2.7
Vollautomatisch Scripts erstellen
61
’ VBS Windows Script Host File ’ automatisch generiert von Scripting Spy V1.0 set FileSystemObject = CreateObject("Scripting.FileSystemObject") set Folder = FileSystemObject.GetFolder(ByVal FolderPath As String) set obj = Folder.Files ’ ' ' '
"files" ist vom Typ "Property " Zurückgelieferter Wert ist vom Typ: Beschreibung von "files" Get files collection
"IFileCollection"
9. Noch ist das Script aber nicht vollständig, denn es ist nicht geklärt, welchen Ordner Sie überhaupt anschauen wollen. Hinter GetFolder steht: ByVal FolderPath As String. Strings sind Texte, hier gehört also der Pfadname des gesuchten Ordners hinein. Ersetzen Sie die Vorgabe durch einen Pfadnamen, zum Beispiel so: ’ VBS Windows Script Host File ’ automatisch generiert von Scripting Spy V1.0 set FileSystemObject = CreateObject("Scripting.FileSystemObject") set Folder = FileSystemObject.GetFolder("C:\") set obj = Folder.Files ’ ' ' '
"files" ist vom Typ "Property " Zurückgelieferter Wert ist vom Typ: Beschreibung von "files" Get files collection
"IFileCollection"
10. Speichern Sie das Script wieder ab! Wenn Sie es allerdings ausführen, wird nicht allzu viel passieren. Das ist klar: das Script verschafft sich zwar Zugriff auf einen Ordner und liefert eine »IFileCollection« zurück (das verrät das Beispielscript im unteren Teil), aber mehr passiert nicht. Damit Ihr Script sinnvoll wird, brauchen Sie aber kaum noch etwas zu tun. Lediglich wenige Erweiterungen sind nötig, und das machen Sie so: 1. Klicken Sie Ihr abgespeichertes Script mit der rechten Maustaste an, und wählen Sie Bearbeiten. Schon wird das Script-Innenleben wieder im Editor vor Ihnen ausgebreitet, und Sie können Änderungen vornehmen. 2. Wann immer Sie nicht genau wissen, was Sie mit dem Resultat eines Befehls eigentlich anfangen, lassen Sie sich den Typ des Resultats verraten. Dazu fügen Sie eine weitere Zeile hinzu: ’ VBS Windows Script Host File ’ automatisch generiert von Scripting Spy V1.0 set FileSystemObject = CreateObject("Scripting.FileSystemObject") set Folder = FileSystemObject.GetFolder("C:\") set obj = Folder.Files MsgBox TypeName(obj) ’ "files" ist vom Typ "Property " ' Zurückgelieferter Wert ist vom Typ:
"IFileCollection"
62
Kapitel 2: Mit dem Scripting Spy geheime Systemobjekte ausspionieren ’ Beschreibung von "files" ’ Get files collection
3. Speichern Sie das geänderte Script: Datei -> Speichern. Anschließend führen Sie es aus! Diesmal meldet das Script, das Ergebnis sei vom Typ Files. Aha! Schon besser! 4. Wechseln Sie zurück in den Scripting Spy. Dort ist nach wie vor das Script-Beispiel zu sehen. Klicken Sie auf Abbrechen. Klicken Sie dann auf das Register Suchen, und wählen Sie Aktuelles Objekt, Module, wörtlich. Dann suchen Sie nach files [Enter]. 5. Das Objekt wird gefunden. Es enthält nur zwei Befehle: Count und Item. Objekte, die Count und Item kennen und ansonsten nicht viele Extras zu bieten haben, sind in aller Regel Aufzählungen. Aufzählungen sind Sammelbecken, und genau das stimmt ja auch: Sie wollten die Dateien in einem Ordner sehen, und deshalb haben Sie eine Aufzählung zurückbekommen. 6. Allein mit Count könnten Sie schon eine Menge anfangen und zum Beispiel herausfinden, wie viel Dateien in einem Ordner liegen. So lassen sich auch leere Ordner identifizieren: ’ VBS Windows Script Host File ’ automatisch generiert von Scripting Spy V1.0 set FileSystemObject = CreateObject("Scripting.FileSystemObject") set Folder = FileSystemObject.GetFolder("C:\") set obj = Folder.Files MsgBox "Im Ordner befinden sich " & obj.count & " Dateien." ’ ' ' '
"files" ist vom Typ "Property " Zurückgelieferter Wert ist vom Typ: Beschreibung von "files" Get files collection
"IFileCollection"
7. Allerdings kommen Sie noch nicht an die Dateinamen heran. Dabei hilft Ihnen auch Item nicht weiter, denn Item verlangt als Argument genau den verflixten Dateinamen, den Sie ja gern herausbekommen wollen. Was nun hilft – was bei allen Aufzählungen hilft – ist der Befehl for each...next. Er listet der Reihe nach alle Elemente einer Aufzählung auf. Um also an Ihre Dateiliste heranzukommen, brauchen Sie nur zu schreiben: ’ VBS Windows Script Host File ’ automatisch generiert von Scripting Spy V1.0 set FileSystemObject = CreateObject("Scripting.FileSystemObject") set Folder = FileSystemObject.GetFolder("C:\") set obj = Folder.Files MsgBox "Im Ordner befinden sich " & obj.count & " Dateien." liste = "" For each datei in obj liste = liste & datei & vbCr Next
2.8
Fremde Programme per Script fernsteuern
63
MsgBox liste ’ ' ' '
"files" ist vom Typ "Property " Zurückgelieferter Wert ist vom Typ: Beschreibung von "files" Get files collection
"IFileCollection"
Wie flexibel Scripts sind, können Sie sofort selbst ausprobieren! Sie haben eben das Grundgerüst gebastelt, um jedwede Aufzählung sichtbar zu machen. Anstelle von Dateilisten könnten Sie sich nun auch die Unterordner oder Laufwerke Ihres Systems auflisten lassen. Ersetzen Sie einfach Set obj = Folder.Files durch Set obj = Folder.Subfolders, und schon sehen Sie alle Unterordner. Schlagen Sie anschließend Subfolders im Scripting Spy nach. Und wenn Sie die Laufwerke sehen wollen, die es auf Ihrem Computer gibt, dann ersetzen Sie die Zeile durch Set obj = FileSystemObject.Drives. Viele weitere Hintergründe und Beispielscripte zum Dateisystem und dem Scripting.FileSystemObject finden Sie im Vorgängerband: Franzis: Professional Series Scripting Praxis Buch. Tip: Aufpassen mit Count – Bug-Gefahr! Wer noch den alten WSH 1.0 verwendet, darf die Count-Eigenschaft nicht verwenden! Die liefert bei der alten WSH-Version nämlich einen Fehler und gibt nicht die Anzahl der Dateien an.
2.8
Fremde Programme per Script fernsteuern
Viele kommerzielle Programme, die Sie nachträglich installiert haben, sind ebenfalls voll scriptsteuerbar. Microsoft Word zum Beispiel bietet all seine vielfältigen Funktionen auch separat an, so daß Sie Word als universellen Server verwenden können, um zum Beispiel die Rechtschreibprüfung für eigene Projekte »auszuborgen«. Der Scripting Spy listet alle potentiell scriptfähig Programme in seinem Register Programme für Sie auf. Schauen Sie doch mal rein! Wie so etwas funktioniert und wie Sie den Scripting Spy elegant dazu einsetzen, die versteckten Funktionen installierter Programme zu nutzen, zeigt das nächste Beispiel. Es greift auf die Rechtschreibkataloge von Winword zu. Dieses Beispiel funktioniert allerdings nur, wenn Sie auch tatsächlich Winword auf Ihrem System installiert haben. Tip: TypeLibraries – lebenswichtig! Wenn Sie Programme aussuchen, dann kann es passieren, daß der Scripting Host die passende TypeLibrary zuerst suchen muß. Das liegt daran, daß die Programmhersteller ihre TypeLibraries gern verstecken und nicht in der Registry eintragen. In den meisten Fällen findet der Scripting Spy die TypeLibrary aber. Nur wenn das Programm keine TypeLibrary auf Ihrem System installiert hat, gehen Sie leer aus.
64 2.8.1
Kapitel 2: Mit dem Scripting Spy geheime Systemobjekte ausspionieren
Winwords Rechtschreibprüfung für eigene Zwecke nutzen
Sie verwenden Microsoft Word? Dann wissen Sie, daß dieses Textverarbeitungsprogramm eine eingebaute Rechtschreibprüfung besitzt. Nur: wie kommt man an die per Script heran? Der Scripting Spy hilft Ihnen! 1. Starten Sie den Scripting Spy, und klicken Sie dann auf das Register Programme. Jetzt sehen Sie die ProgIDs aller Programme, die per Script steuerbar sind. 2. Schauen Sie nach, ob in der Liste Word.Application zu sehen ist. Falls ja, ist Winword bei Ihnen installiert. Klicken Sie auf den Eintrag Word.Application. 3. Sofort schaltet der Scripting Spy in sein Röntgen-Register um und analysiert die Funktionen, die dieses Programm zu bieten hat. Weil Winword sehr viele Funktionen enthält, kann diese Analyse einige Minuten dauern. Tip: Word – und keine TypeLibrary? Dieser Schritt klappt nur, wenn auf Ihrem System auch die Word-TypeLibrary gefunden werden konnte. Fehlt sie, dann kommt auch der Scripting Spy nicht ans Innenleben von Word heran – leider. Die Beispielscripte funktionieren allerdings trotzdem.
4. Da Sie vermutlich keine Lust haben, sich durch die vielen Module durchzutasten, klicken Sie als nächstes auf das Suchen-Register. Wählen Sie dort die Optionen Aktuelles Objekt, Befehle und enthaltend. Dann geben Sie als Suchwort den englischen Begriff für Rechtschreibung ein: Spelling [Enter]. 5. Es werden zahlreiche Befehle rund um die Rechtschreibung für Sie herausgesucht. Darunter ist auch GetSpellingSuggestion. Dieser Befehl wird sowohl vom _Application-Objekt als auch vom _Global-Objekt angeboten. Wählen Sie den Befehl, den das _Application-Objekt anbietet. Tip: _Global – das steckt dahinter _Global-Objekte sind Objekte, die die Anwendung global zur Verfügung stellt. Für Scripts sind solche Objekte nicht zu gebrauchen. Versuchen Sie wann immer möglich, dieselbe Funktion aus einem anderen Objekt einzusetzen.
6. Der Scripting Spy schaltet zurück in sein Röntgen-Register und stellt die Funktion GetSpellingSuggestion dar. Klicken Sie unten rechts auf die Schaltfläche Beispiel, um ein Beispielscript zu bekommen. 7. Speichern Sie das Script mit Speichern, und legen Sie es zum Beispiel auf Ihrem Desktop als word ab. Danach minimieren Sie den Bildschirm und klicken Ihr neues Script mit der rechten Maustaste an. Wählen Sie im Kontextmenü Bearbeiten, denn Ihr Script braucht noch etwas Finetuning. 8. Der Editor öffnet sich. Verwenden Sie das automatisch generierte Script nun als Grundlage, und wandeln Sie es folgendermaßen um:
2.8
Fremde Programme per Script fernsteuern
65
’ 2-1.VBS set Application = CreateObject("Word.Application") ' ein Blankodokument hinzufügen Application.documents.Add ' nach dem Wort fragen, das korrigiert werden soll suchwort = InputBox("Geben Sie ein Wort ein!") ' Korrekturvorschläge holen set obj = Application.GetSpellingSuggestions(suchwort) ' Ergebnisse auflisten if obj.count=0 then ' keine Vorschläge! MsgBox "Ihr Wort scheint richtig geschrieben zu sein! Ich habe keine Vorschläge." else ' es gibt Vorschläge liste = "Sie haben eingegeben: " & suchwort & vbCr liste = liste & "Verbesserungsvorschläge:" & vbCr for each korrektur in obj liste = liste & korrektur & vbCr next MsgBox liste end if ' ganz wichtig: Winword nach Gebrauch wieder schließen! Application.Quit
9. Speichern Sie die Änderungen mit Datei -> Speichern. Dann schließen Sie den Editor. Sie sind fertig! Wenn Sie Ihr Script starten, fragt es nach einem beliebigen Wort. Anschließend prüft es das Wort und liefert Korrekturvorschläge. Geben Sie zum Beispiel Banhof ein, dann meldet das Script korrekt den Vorschlag: Bahnhof.
Bild 2.15: Vollautomatisch die Rechtschreibprüfung von Winword ausborgen
66
Kapitel 2: Mit dem Scripting Spy geheime Systemobjekte ausspionieren
2.8.2
Wichtige Dinge, an die Sie denken sollten
Zugegeben: Das Script erfordert noch eine ganze Reihe von Änderungen, damit es wie gewünscht läuft. Allerdings sind diese Änderungen stets gleicher Natur, so daß Sie lediglich ein paar Hintergründe zu kennen brauchen:
Bevor Sie die Funktionen eines fremden Programms nutzen können, muß es in vielen Fällen zuerst ein Dokument laden. Ohne Dokument geht das Programm davon aus, daß Sie seine Funktionen einfach nur kidnappen. Das stimmt ja eigentlich auch, und deshalb ist es wichtig, das Programm mit einem Dummy-Dokument in dem Glauben zu lassen, seine Funktionen würden intern verwendet. Bei Word legen Sie ein neues Dokument mit Application.Documents.Add an.
Häufig werden Ergebnisse als sogenannte Collection zurückgeliefert. Collections sind Sammlungen von einzelnen Objekten oder Informationen. Das Beispielscript prüft zum Beispiel mit Count, ob die zurückgelieferte Collection überhaupt Elemente enthält. Wenn nicht, kann es davon ausgehen, daß keine Korrekturvorschläge existieren. Andernfalls setzt es for each...next ein, um die einzelnen Elemente der Collection auszulesen.
Machen Sie sich immer bewußt, daß Ihr Script ein vollwertiges Programm gestartet hat. Das Programm ist zwar unsichtbar, existiert aber. Deshalb ist es unbedingt nötig, daß Ihr Script dieses Programm nach Gebrauch auch wieder schließt. Andernfalls würde das Programm weiter im Speicher bleiben und so lange Ressourcen fressen, bis der Computer neu gestartet wird. Deshalb beendet das Script Winword zum Schluß mit Quit. Tip: Mit GetObject direkt auf Dokumente zugreifen In Kapitel 3.4.4 lernen Sie den GetObject-Befehl kennen. Mit dessen Hilfe verschaffen Sie sich direkten Zugriff auf ein bestimmtes Dokument und könnten so zum Beispiel auf direktem Wege ein WordDokument öffnen. Das ist sinnvoll, wenn Sie die Word-Funktionen nicht losgelöst von einem Dokument verwenden, sondern auf ein bestimmtes Dokument anwenden möchten.
2.8.3
Noch mehr Automation: Automatisch Texte korrigieren
Eben haben Sie die Rechtschreibprüfung kennengelernt und konnten einzelne Wörter einfüttern. Als Test ist das ausreichend, aber in der Praxis viel interessanter sind Scripts, die zum Beispiel Textdateien vollautomatisch korrigieren. Das nächste Script liest ein beliebiges Textdokument ein und korrigiert seinen gesamten Inhalt. Fehler, die einmal korrigiert wurden, werden vom Script automatisch erneut korrigiert, sollten sie noch einmal auftreten. Das Script zeigt das Grundprinzip, ist aber noch nicht besonders komfortabel. Es liest die Beispieldatei C:\BEISPIEL.TXT ein und prüft dann Wort für Wort den Text darin. Bei falschgeschriebenen Wörtern zeigt das Script die Auswahl an Korrekturvorschlägen an, die vom Anwender allerdings noch von Hand eingegeben werden müssen.
2.8
Fremde Programme per Script fernsteuern
67
Immerhin brauchen Fehler nur ein einziges Mal korrigiert zu werden. Das Script merkt sich Korrekturen in einem Scripting.Dictionary-Objekt und korrigiert mehrfach auftretende Fehler anschließend automatisch. Die korrigierte Version des Textes speichert das Script in der Datei C:\BEISPIEL2.TXT. Bevor Sie dieses Script ausprobieren, legen Sie mit dem Texteditor Notepad eine Datei mit falschgeschriebenen Wörtern an und speichern sie als C:\BEISPIEL1.TXT. ’ 2-2.VBS set fs = CreateObject("Scripting.FileSystemObject") set dict = CreateObject("Scripting.Dictionary") set Application = CreateObject("Word.Application") Application.documents.Add ’ file = Originaldatei mit Fehlern ’ file2 = korrigierter Text set file = fs.OpenTextFile("c:\beispiel.txt") set file2 = fs.CreateTextFile("C:\beispiel2.txt", true) do until file.atEndOfStream wort = GetWord(file, bindung) ’ wurde das Wort schon korrigiert? if dict.exists(wort) then ’ ja, also vorhandene Korrektur verwenden wort = dict(wort) else ' nein, also Vorschläge holen sugg = GetSuggestions(wort) ' gibt es Vorschläge? if not sugg = "" then ' ja, also Benutzer fragen, welcher Vorschlag ' verwendet werden soll newwort = InputBox("Sie haben eingegeben: " & _ vbCr & wort & vbCr & "Vorschläge:" _ & vbCr & sugg,,wort) dict.Add wort, newwort wort = newwort end if end if ' korrigiertes Wort in neue Datei schreiben file2.Write wort & bindung loop file.close file2.close ' ganz wichtig: Winword nach Gebrauch wieder schließen! Application.Quit
68
Kapitel 2: Mit dem Scripting Spy geheime Systemobjekte ausspionieren
function GetWord(obj, zeichen) ’ liest aus der Textdatei genau ein Wort ' liefert das Wort zurück und meldet in zeichen das ' Zeichen, das dem Wort folgt do until obj.atEndOfStream zeichen = obj.Read(1) if (zeichen=" " or zeichen=vbCr or zeichen=vbLf) then exit do else GetWord = GetWord & zeichen end if loop end function function GetSuggestions(wort) ' liefert alle Korrekturvorschläge für ein Wort zurück set obj = Application.GetSpellingSuggestions(wort) if obj.count=0 then exit function else for each korrektur in obj GetSuggestions = GetSuggestions & korrektur & vbCr next end if end function
Bild 2.16: Automatische und lernfähige Rechtschreibkontrolle
69
3
Die eingebauten WSH-Befehle: Wscript-Objekt
Der Windows Scripting Host bringt – völlig unabhängig von der Scriptsprache, die Sie einsetzen – eine ganze Reihe von nützlichen Befehlen mit. Diese Befehle können über die Objekte Wscript oder Wsh angesprochen werden. Weil beide Objekte nur zur Verfügung stehen, wenn Ihr Script über den Scripting Host ausgeführt wird, können die Funktionen in diesem Kapitel nicht innerhalb von HTML-Scripts eingesetzt werden.
3.1
Informationen über den Scripting Host
Arbeiten Sie mit der aktuellsten WSH-Version? Wo genau ist WSCRIPT.EXE gespeichert? Wird Ihr Script gerade mit der Windows-Version oder der DOS-Version des WSH ausgeführt? All diese Fragen beantwortet das Wscript-Objekt: Befehl
Beschreibung
Application BuildVersion FullName Name Path Version
Referenz auf den WSH; entspricht den vordefinierten Objekten Wscript und Wsh Interne Versionsnummer Pfadname des Scripting Host Executables Klartextname (Beschreibung) des WSH Pfad zum Ordner, in dem der WSH gespeichert ist Versionsnummer des WSH
Tab. 3.1: Die internen Befehle des Scripting Host
3.1.1
Das Application-Objekt
Application liefert eine Instanz des WSH-Objekts selbst zurück. Dieser Befehl ist deshalb eigentlich völlig sinnlos, denn der WSH blendet sich selbst sowieso über die Standardobjekte Wscript und Wsh ein. Daß alle drei Objekte in Wirklichkeit ein und dasselbe Objekt sind, beweist das folgende Script: ’ 3-1.vbs set obj = wscript.application MsgBox TypeName(obj) MsgBox obj is wsh MsgBox obj is Wscript
70 3.1.2
Kapitel 3: Die eingebauten WSH-Befehle: Wscript-Objekt
Die Version des WSH ermitteln
Der Scripting Host wird ständig weiterentwickelt, und oben hatten Sie bereits gesehen, wie Sie mit dem Scripting Spy neu hinzugekommene Funktionen entdecken. Falls Sie in Ihren Scripts solche neuen Funktionen einsetzen und sichergehen wollen, daß es auf Computern mit älterem WSH keine Probleme gibt, dann bestimmen Sie einfach die Version: ’ 3-2.VBS bv = "Build-Version: " & WScript.BuildVersion v = "Version: " & WScript.Version MsgBox v & vbCr & bv
Wundern Sie sich nicht, daß der WSH 2.0 als Versionsnummer 5.1 zurückliefert. Die interne Version hat nichts mit der offiziellen Release-Version zu tun.
3.1.3
Pfadnamen und geheime Antworten
Die Eigenschaften Name, FullName und Path sind auf den ersten Blick wenig hilfreich, verraten sie doch nur, wo der WSH wohnt: ’ 3-3.vbs n = "Name: " & wscript.name fn = "FullName: " & wscript.fullname p = "Path: " & wscript.path msg = n & vbCr & fn & vbCr & p MsgBox msg, vbInformation
Auf den zweiten Blick wird die Sache allerdings immens wichtig. Wie Sie inzwischen wissen, gibt es zwei Versionen des WSH: WSCRIPT.EXE und CSCRIPT.EXE. WSCRIPT.EXE führt Ihr Script als Windows-Programm aus, während CSCRIPT.EXE dazu ein DOS-Fenster öffnet.
Bild 3.1: Herausfinden, wo der Kern des Scripting Host eigentlich gespeichert ist
Vor allem wenn Sie planen, ein DOS-Fenster für die Ein- und Ausgabe zu nutzen, brauchen Sie einen Weg, um festzustellen, ob das Script mit WSCRIPT.EXE oder CSCRIPT.EXE ausgeführt wird. Diese Information liefert FullName: ’ 3-4.VBS fn = wscript.fullname engine = mid(fn, InstrRev(fn, "\")+1) MsgBox "Dieses Script wird ausgeführt von: " & engine
3.1
Informationen über den Scripting Host
71
Starten Sie dieses Script normal, dann meldet es Wscript.exe als Ausführungsorgan. Klicken Sie dagegen das Script mit der rechten Maustaste an und wählen Mit Eingabeaufforderung öffnen, dann meldet es korrekt Cscript.exe.
Bild 3.2: Herausfinden, ob Scripts in der DOS-Box laufen
Falls Sie also ein Script unbedingt in einem DOS-Fenster ausführen wollen, aber nicht darauf vertrauen können, daß der Anwender von selbst den richtigen Startbefehl gibt, dann wäre dies eine Lösung: ’ 3-5.VBS ' läuft das Script mit CSCRIPT.EXE? if not isDOS then ' NEIN, also an CSCRIPT.EXE verfüttern und diese Instanz ' beenden: set wshshell = CreateObject("WScript.Shell") wshshell.Run "CSCRIPT.EXE """ & wscript.ScriptFullName & """" wscript.quit end if ' dieser Teil wird IMMER von CSCRIPT ausgeführt ' hier können also gefahrlos Streams verwendet werden set instream = WScript.StdIn set outstream = WScript.StdOut outstream.WriteLine "Huhu, geben Sie etwas ein!" outstream.WriteLine "quit beendet den Test." outstream.Write time & "> " do lies = instream.ReadLine ' abbrechen, wenn der Benutzer "quit" eingibt if lcase(lies)="quit" then exit do ' dieses Script verwandelt die Eingabe nur in Großbuchstaben ' hier könnten auch sinnvollere Dinge passieren outstream.WriteLine ucase(lies) outstream.Write time & "> " loop MsgBox "Tschau!" function isDOS fn = wscript.fullname engine = lcase(mid(fn, InstrRev(fn, "\")+1)) if engine = "wscript.exe" then
72
Kapitel 3: Die eingebauten WSH-Befehle: Wscript-Objekt
isDOS = false else isDOS = true end if end function
Bild 3.3: Automatisch ein Script im DOS-Fenster mit interaktiven Eingaben erstellen
3.2
Informationen über das Script bekommen
Der WSH liefert auf Wunsch detaillierte Informationen über das Script, das gerade ausgeführt wird: Befehl
Beschreibung
ScriptFullName ScriptName
Pfadname des Scripts Name des Scripts
Tab. 3.2: Informationen über den Speicherort eines Scripts
3.2.1
Begleitinformation aus dem Scriptordner öffnen
ScriptFullName und ScriptName liefern zunächst nur Namen bzw. Pfadnamen des gerade ausgeführten Scripts. Dies allein ist nicht sehr spannend: ’ 3-6.VBS sn = "ScriptName: " & wscript.ScriptName sfn = "ScriptFullName: " & wscript.ScriptFullName MsgBox sn & vbCr & sfn
3.2
Informationen über das Script bekommen
73
In diesen Informationen stecken jedoch Juwelen: ScriptFullName enthält den Ordner, in dem das aktuelle Script gespeichert ist. Wenn Sie also Begleitinformationen in diesem Ordner speichern möchten, dann filtern Sie einfach den Ordnernamen aus dem Pfadnamen des Scripts heraus.
Bild 3.4: Herausfinden, wo ein Script gelagert wird
3.2.2
Logbuch-Datei: Wann und wie oft wird ein Script benutzt?
Das nächste Beispiel unterhält in demselben Ordner, in dem es gespeichert wird, eine Logbuchdatei, die darüber Buch führt, wie oft und wann das Script aufgerufen wird. Klar ist, daß dies nicht funktioniert, solange das Script auf einer schreibgeschützten CD untergebracht ist. ’ 3-7.VBS ’ Script notieren LogMe ' hier könnten weitere Aufgaben erledigt werden sub LogMe ' in welchem Pfad liegt dieses Script? sfn = wscript.ScriptFullName pfad = left(sfn, InstrRev(sfn, "\")) ' Logbuchdatei anlegen logfilename = pfad & "logbuch.txt" set fs = CreateObject("Scripting.FileSystemObject") set file = fs.OpenTextFile(logfilename, 8, true) ' Logbuch-Eintrag hineinschreiben: file.WriteLine "Script " & wscript.scriptname _ & " gestartet: " & now file.close end sub
Bild 3.5: Protokollieren, wann Scripts ausgeführt wurden
74
Kapitel 3: Die eingebauten WSH-Befehle: Wscript-Objekt
3.3
Drag&Drop: Argumente ans Script übergeben
Ihr Script kann externe Informationen per Drag&Drop oder per Kommandozeilen-Argument einlesen. Darüber hinaus kann der WSH 2.0 auch ein DOS-Fenster für Ein- und Ausgaben verwenden: Befehl
Beschreibung
StdErr StdIn StdOut Arguments Echo
DOS-Stream für Fehlermeldungen DOS-Stream für Texteingaben DOS-Stream für Textausgaben Ans Script übergebene Argumente Informationen in DOS-Fenster oder Dialogfenster ausgeben
Tab. 3.3: Befehle, mit denen externe Argumente gelesen und Antworten ausgegeben werden
3.3.1
Argumente an Scripts verfüttern
Ihre Scripts sind kommunikativ! Sie können zum Beispiel Dateien auf einem Script-Icon fallen lassen und dann die Dateinamen auslesen. Anschließend könnte Ihr Script mit den Dateien tun, was es gerade mag. Neben dem schicken Drag&Drop sind aber auch die klassischen Befehlszeilen-Optionen möglich. Die sind besonders für Scripts wichtig, die in einem DOS-Fenster ausgeführt werden. Sie funktionieren wie die Befehlszeilenargumente bei normalen DOS-Befehlen. Praktisch dabei: Beide Varianten funktionieren intern genau gleich. Ihr Script akzeptiert also Argumente sowohl über die Kommandozeile als auch per Drag&Drop. Wichtige Fallen: Drag&Drop ist erst ab dem WSH 2.0 möglich, und die Gesamtlänge der Argumente darf die maximale Pfadnamen-Länge von 260 Zeichen nicht überschreiten. Hier eine Kostprobe: ’ 3-8.VBS ’ Argumente auslesen set args = wscript.Arguments ' wieviel Argumente wurden übergeben? if args.Count=0 then ' gar keine! MsgBox "Keine Argumente übergeben!" else liste = "" for each argument in args cc=cc+1 liste = liste & cc & ". Argument: " & argument & vbCrLf next WScript.Echo liste end if
3.3
Drag&Drop: Argumente ans Script übergeben
75
Sie können nun entweder Dateien auf Ihr Script-Icon ziehen. Jeder Dateiname wird als eigenständiges Argument gelesen.
Bild 3.6: Argumente per Drag&Drop oder als Kommandozeilenargument übergeben
Oder Sie nutzen Kommandozeilen-Argumente: 1. Wählen Sie im Startmenü Ausführen, und geben Sie ein: WSCRIPT.EXE. Fügen Sie ein Leerzeichen hinzu, und ziehen Sie dann Ihr Script in die Befehlszeile. Windows schreibt den Pfadnamen dahinter. 2. Fügen Sie noch ein Leerzeichen und dann Ihre Argumente an. Dann drücken Sie [Enter]. Korrekt gibt das Script die Argumente wieder aus. Die einzelnen Argumente werden dabei durch die Leerzeichen voneinander getrennt. Wollen Sie Leerzeichen im Argument, dann setzen Sie das Argument in Anführungszeichen.
3.3.2
Scripts als DOS-Befehle einsetzen
Natürlich ist die Befehlszeilen-Variante reichlich unbequem: wer hat schon Lust, umständlich Wscript.exe voranzustellen und dann auch noch den ganzen langen Pfadnamen des Scripts einzugeben? Als echte Ergänzung zu DOS-Befehlen eignen sich Scripts nur auf Windows 2000-Systemen, dort dafür aber hervorragend. Windows 2000 ist nämlich schlau genug, WSH-Scripts auch ohne vorangestelltes WSCRIPT.EXE auszuführen. Selbst die Endung .vbs kann weggelassen werden. Und wenn Sie Ihre Scripts in einem Systemordner speichern, der Teil des allgemeinen Pfades ist, dann brauchen Sie noch nicht einmal den Pfadnamen anzugeben – ideal. Das Beispielscript von oben würde also bei Windows 2000 wie im folgenden Bild verwendet werden können. Tip: Ausgaben ins DOS-Fenster schreiben Damit sich Ihr Script tatsächlich wie ein echter DOS-Befehl benimmt, müssen Sie nur die Scriptengine auf CSCRIPT umstellen. Wählen Sie im Startmenü Ausführen, und geben Sie ein: WSCRIPT //H:CSCRIPT [Enter]. Mit WSCRIPT //H:WSCRIPT [Enter] schalten Sie zurück in den Windows-Modus. WScript.Echo sorgt dafür, daß die Ausgabe im CSCRIPT-Modus ins DOS-Fenster geschrieben wird.
76
Kapitel 3: Die eingebauten WSH-Befehle: Wscript-Objekt
Bild 3.7: Windows 2000 akzeptiert Scriptnamen als »DOS-Befehle«
3.3.3
Mit den DOS-Streams Ein- und Ausgaben ins DOS-Fenster machen
Scripts lassen sich nicht nur bequem von DOS aus mit Argumenten füttern (jedenfalls bei Windows 2000), sie können sich auch sonst wie DOS-Befehle benehmen. Ihre Scripts könnten also eigene Ergebnisse ins DOS-Fenster schreiben und von dort Eingaben empfangen. Sogar das Piping wird unterstützt: Scripts können Eingaben nahtlos von anderen Scripts oder echten DOS-Befehlen empfangen. Über StdErr, StdIn und StdOut klinken sich Ihre Scripts in die DOS-Streams ein: Stream
Bedeutung
StdErr StdIn
Fehlermeldungen des DOS-Fensters an das Script Eingaben an Ihr Script, die entweder interaktiv vom Anwender angegeben werden oder per Piping von einem anderen Script übergeben werden Ausgaben, die das Script ins DOS-Fenster schreibt
StdOut
Tab. 3.4: Die Kommunikationskanäle zum DOS-Fenster
Voraussetzung dafür ist, daß es überhaupt ein DOS-Fenster gibt. Führen Sie ein Script mit Wscript.exe aus, dann kassieren Sie einen Fehler, sobald Sie versuchen, einen der DOS-Streams anzusprechen. Deshalb müssen Sie entweder darauf vertrauen, daß der Scriptanwender das Script aus einem DOS-Fenster aus aufruft, oder Sie wenden den Trick von Script 3-5.VBS, der sicherstellt, daß CSCRIPT.EXE zum Zuge kommt. Das folgende Script ist das Grundgerüst für einen Pseudo-DOS-Befehl. Das Script akzeptiert zwei Kommandozeilen-Optionen: /test: und /?. ’ 3-9.VBS ' sicherstellen, daß Script im DOS-Fenster läuft DOSonly
3.3
Drag&Drop: Argumente ans Script übergeben
77
' ab hier läuft das Script IMMER im DOS-Fenster, ' deshalb können jetzt die DOS-Streams gefahrlos eingesetzt ' werden: set instream = WScript.StdIn set outstream = WScript.StdOut ' Argumente auslesen set args = wscript.Arguments if args.count = 0 then outstream.WriteLine "Es wurden keine Argumente angegeben!" WScript.Quit end if ' Argumente auswerten for each arg in args if arg="/?" then outstream.WriteLine "Dies ist ein Testprogramm" outstream.WriteLine "/test:text gibt Text in " _ & "Großbuchstaben aus" outstream.WriteLine "/? zeigt diese Hilfe" WScript.Quit elseif left(lcase(arg),6)="/test:" then outstream.WriteLine ucase(mid(arg,7)) else outstream.WriteLine "Unbekanntes Argument: " & arg end if next sub DOSonly fn = wscript.fullname engine = lcase(mid(fn, InstrRev(fn, "\")+1)) if engine = "wscript.exe" then set wshshell = CreateObject("WScript.Shell") ' Argumente mit übergeben arglist = "" for each arg in wscript.Arguments arglist = arglist & """" & arg & """ " next wshshell.Run "%COMSPEC% /K CSCRIPT.EXE """ _ & wscript.ScriptFullName & """ " & arglist wscript.quit end if end sub
Wenn Sie dieses Script aufrufen, schaltet es automatisch in ein DOS-Fenster. Erreicht wird dies, weil sich das Script im Bedarfsfall selbst aufruft, dabei CSCRIPT.EXE verwendet und CSCRIPT.EXE in einem eigens geöffneten DOS-Fenster anzeigt. Dazu lädt es mit %COMSPEC% zuerst den DOS-Kommandozeilen-Interpreter und sorgt mit der Option /K dafür, daß das Fenster offen bleibt, nachdem das Script seine Arbeit getan hat.
78
Kapitel 3: Die eingebauten WSH-Befehle: Wscript-Objekt
Machen Sie den Test: 1. Starten Sie das Script. Ein DOS-Fenster öffnet sich, und das Script meldet darin, daß keine Argumente übergeben wurden. Das stimmt. 2. Rufen Sie das Script aus dem DOS-Fenster erneut auf, und verwenden Sie dabei das Argument /?. Diesmal zeigt das Script Hilfe-Informationen an. 3. Verwenden Sie dann das Argument /test:text. Diesmal gibt das Script den Text hinter dem Schalter /test: in Großbuchstaben aus. Enthält der Text Leerzeichen, dann muß er in Anführungszeichen gesetzt werden. Allerdings bleibt ein Manko: Jedesmal, wenn Sie das Script von neuem aufrufen, wird auch ein neues DOS-Fenster geöffnet. Das ist verständlich, denn als Vorgabe verfüttert der WSH jedes Script zuerst an Wscript.exe, ganz gleich, ob Sie das Script per Maus oder vom DOS-Fenster aus öffnen. Wollen Sie hauptsächlich mit der Kommandozeile arbeiten, dann gibt es einen wesentlich einfacheren Weg: Weisen Sie den WSH an, künftig alle Scripts von vornherein direkt mit CSCRIPT.EXE zu starten: Befehl
Bedeutung
Wscript.exe //H:Cscript Wscript.exe //H:Wscript
Alle Scripts werden mit CSCRIPT.EXE geladen Alle Scripts werden mit WSCRIPT.EXE geladen (Voreinstellung)
Tab. 3.5: Umschaltung zwischen DOS- und Windows-Scripting Host
3.3.4
Piping – Ergebnisse von anderen Befehlen verfeinern
Wie Sie mit StdIn Eingaben vom Scriptbenutzer erfragen, hat bereits Script 3-5.VBS gezeigt. Ebenfalls interessant ist Piping. Piping ist das Verketten mehrerer Befehle und bei DOS schon lange üblich. Wenn Sie zum Beispiel mit dem DOS-Befehl DIR ein langes Ordnerlisting ausgeben und verhindern wollen, daß das Listing nur so an Ihnen vorbeirauscht, dann könnten Sie das Ergebnis an den DOS-Befehl MORE weiterleiten. MORE hält dann die Ausgabeflut jeweils bildschirmweise an und wartet auf einen Tastendruck. Probieren Sie’s einfach aus: 1. Öffnen Sie zunächst ein DOS-Fenster: Wählen Sie im Startmenü Ausführen, und geben Sie ein: %COMSPEC% [Enter]. 2. Geben Sie dann ins Fenster ein: DIR C:\ [Enter]. Das DOS-Listing saust vorbei. 3. Nun setzen Sie Piping ein. Geben Sie dazu ein: DIR C:\ | MORE [Enter]. Diesmal wird das Listing nach jeder Seite angehalten.
3.3
Drag&Drop: Argumente ans Script übergeben
79
Tip: DIRCMD – vorgefertigte DIR-Optionen Wenn DIR bei Ihnen nicht die normale vorbeisausende Ausgabe erzeugt, dann sind wahrscheinlich erweiterte Optionen angegeben worden. Die werden in der Umgebungsvariablen DIRCMD gespeichert. Mit SET DIRCMD= [Enter] löschen Sie solche Optionen.
Das Piping-Zeichen ist also das |-Zeichen, das Sie über [AltGr]+[<] erhalten. Dieses Zeichen verkettet mehrere Befehle miteinander, und das funktioniert auch bei Scripts. ’ 3-10.VBS ' sicherstellen, daß Script im DOS-Fenster läuft DOSonly ' ab hier läuft das Script IMMER im DOS-Fenster, ' deshalb können jetzt die DOS-Streams gefahrlos eingesetzt ' werden: set instream = WScript.StdIn set outstream = WScript.StdOut do until instream.atEndOfStream outstream.WriteLine ucase(instream.ReadLine) loop outstream.WriteLine "Fertig." sub DOSonly fn = wscript.fullname engine = lcase(mid(fn, InstrRev(fn, "\")+1)) if engine = "wscript.exe" then set wshshell = CreateObject("WScript.Shell") path = left(wscript.scriptfullname, _ InstrRev(wscript.ScriptFullName, "\")) wshshell.Run "%comspec% /k cd " & path MsgBox "Starten Sie Script mit CSCRIPT.EXE!", _ vbSystemModal wscript.quit end if end sub
Dieses Script demonstriert Piping. Wenn Sie das Script per Mausklick starten und nicht CSCRIPT.EXE als Standard-Engine verwenden, dann öffnet es ein DOS-Fenster und stellt als Pfad den Ordner ein, in dem das Script schlummert. Das ist ideal, weil Sie so nicht den gesamten Pfadnamen des Scripts eingeben müssen. Piping funktioniert bei Scripts nur, wenn Sie CSCRIPT.EXE explizit angeben. Probieren Sie es aus, und geben Sie im DOS-Fenster ein: CSCRIPT.EXE 3-10.VBS [Enter]. Alles, was Sie nun eingeben, wird vom Script in Großbuchstaben zurückgeliefert. Das geht so lange, bis Sie den Eingabestrom mit [Strg]+[C] abbrechen. Intern ist dafür eine do...loop-Schleife zuständig, die so lange auf Eingaben wartet, bis der Eingabestream atEndOfStream meldet.
80
Kapitel 3: Die eingebauten WSH-Befehle: Wscript-Objekt
Das ist natürlich noch kein Piping. Geben Sie deshalb als nächstes ein: DIR C:\ | cscript.exe 3-10.vbs [Enter].
Diesmal wird zuerst der DIR-Befehl ausgeführt und füttert die Eingabe direkt ins Script. Das Script wandelt die Eingabe erneut in Großbuchstaben um und gibt sie schließlich aus. Natürlich könnten Sie hier ganz andere Dinge tun. Vielleicht wollen Sie einen Filter schreiben, der bestimmte Informationen aus DOS-Befehlsergebnissen herausfiltert. So könnten Sie zum Beispiel den DOS-Befehl CHKDSK aufrufen und das Ergebnis per Piping an Ihr Script weiterleiten. Das Script könnte dann aus diesen Informationen die für Sie wichtigen Details herauspicken und anschließend in eine Datei schreiben oder ausgeben. Tip: Aufpassen: DOS-Befehle arbeiten unterschiedlich! Wenn Sie Ergebnisse von DOS-Befehlen »parsen«, also interessante Details herauspicken wollen, dann denken Sie daran: Die DOS-Befehle heißen zwar bei allen Windows-Versionen gleich, funktionieren aber ganz anders. CHKDSKs Ergebnisse sind bei Windows 95, 98 und NT vollkommen unterschiedlich aufgebaut.
3.3.5
Mit Echo: Ergebnisse direkt ans DOS-Fenster
Auch ohne Piping kann Ihr Script Ausgaben in ein DOS-Fenster machen. Hierfür ist der Befehl Echo gedacht: Läuft Ihr Script mit Wscript.exe, dann erscheint ein Dialogfenster. Wird Ihr Script dagegen mit Cscript.exe ausgeführt, dann landen Ihre Ausgaben als Text im DOS-Fenster. ’ 3-11.VBS WScript.Echo "Diese Ausgabe stammt von Echo" MsgBox "Fertig!"
Wenn Sie dieses Script öffnen, erscheint die Meldung von Echo in einem Dialogfenster. Es unterscheidet sich nur durch seinen Titelleisten-Text von der MsgBox-Meldung. Führen Sie Ihre Scripts dagegen mit Cscript.exe aus, dann schreibt Echo seine Meldung ins DOSFenster. Um das auszuprobieren, klicken Sie einfach mit der rechten Maustaste auf das Script-Icon und wählen Mit Eingabeaufforderung öffnen. Tatsächlich schreibt Echo nun ins DOS-Fenster. Echo hat zwei Einsatzbereiche:
Erstens kann es als Ausgabemethode dienen, wenn die Script-Engine keine eigene Ausgabemethode kennt. VBScript versorgt Sie mit dem MsgBox-Befehl, der wesentlich mächtiger ist als Echo. JScript dagegen kennt überhaupt keine Ausgabe-Befehle und ist deshalb allein auf Echo angewiesen.
Zweitens kann Echo dazu gebraucht werden, in selbstdefinierten Kommandozeilen-Scripts Ergebnisse direkt ins DOS-Fenster auszugeben. Im Gegensatz zu den DOS-Streams ist Echo wesentlich pflegeleichter, weil es notfalls einfach auf das Dialogfenster ausweicht, sollte kein DOS-Fenster zur Verfügung stehen.
3.4
3.4
Mit Events arbeiten
81
Mit Events arbeiten
Events sind Alarmmeldungen von externen Objekten. Über Events kann ein externes Objekt, mit dem Ihr Script gerade arbeitet, wichtige Ereignisse sofort melden. Ihr Script kann auf diese Ereignisse sofort reagieren, ganz gleich, womit das Script gerade beschäftigt war. Befehl
Beschreibung
ConnectObject CreateObject
Klinkt sich in ein bereits aktives Objekt nachträglich ein, um seine Events abzuhören Funktioniert fast wie der VBScript-Befehl CreateObject, verbindet das Script aber gleichzeitig mit den Events des Objekts Beendet die Event-Verbindung zum angegebenen Objekt Klinkt sich in ein bereits aktives Objekt nachträglich ein, um eine Referenz darauf zu erhalten und seine internen Methoden verwenden zu können
DisconnectObject GetObject
Tab. 3.6: Funktionen, um auf Events zuzugreifen
3.4.1
CreateObject: Geheimtür zu fremden Objekten
Der CreateObject-Befehl ist der wohl wichtigste VBScript-Befehl für professionelle Scripter, denn er erlaubt, fremde Objekte anzusprechen und ihre internen Befehle zu nutzen. Während der normale VBScript-Befehl CreateObject keine Events unterstützt, kann alternativ der CreateObject-Befehl von Wscript zum Zuge kommen. Der verbindet Ihr Script nicht nur mit dem Objekt, sondern stellt gleichzeitig eine Verbindung zu den Events des Objekts her. Wie so etwas in der Praxis aussieht, zeigt das nächste Script. Es öffnet eine Instanz des Internet Explorers und wartet dann darauf, daß jemand dieses Fenster schließt. Sobald dies passiert, feuert der Internet Explorer als eine seiner letzten Aktionen den Event onQuit ab, und genau den empfängt Ihr Script. ’ 3-12.VBS ' Internet Explorer öffnen und Events abhören set ie = WScript.CreateObject("InternetExplorer.Application", _ "event_") ie.Visible = true ' 20 Sekunden auf Event warten WScript.Sleep 20000 ' immer noch nicht geschlossen? Dann selbst schließen: MsgBox "Lange genug gewartet – ich schließ das Ding " _ & "jetzt selber.", vbSystemModal ie.Quit ' noch 2 Extrasekunden warten, um den Event nicht zu ' verpassen: WScript.Sleep 2000
82
Kapitel 3: Die eingebauten WSH-Befehle: Wscript-Objekt
sub event_onQuit ' wird ausgeführt, sobald onQuit gefeuert wird MsgBox "IE wird jetzt geschlossen!", vbSystemModal WScript.Quit end sub
Wenn Sie das Script starten, öffnet es ferngesteuert ein Internet Explorer-Fenster. Danach legt sich das Script via Sleep für 20 Sekunden (20.000 Millisekunden, um genau zu sein) schlafen. Aufgeweckt werden kann es in dieser Zeit nur von Events. Anstelle von Sleep könnte das Script aber ebenso gut auch weitere Aufgaben ausführen. Sleep ist keine Voraussetzung, um Events zu empfangen. Sobald der Internet Explorer geschlossen wird, empfängt das Script den onQuit-Event. Weil Wscript.CreateObject als zweites Argument einen Eventhandler angegeben hat (»event_«), wird nun die Sub-Funktion ausgeführt, die mit diesem Handler beginnt und dahinter im Namen den Namen des Events trägt. Es wird also die Sub-Prozedur event_onQuit ausgeführt. Die meldet kurz das Ereignis und beendet dann das Script. Wird der Internet Explorer während der 20sekündigen Überwachung nicht geschlossen, dann macht das Script es eben selbst und ruft die Quit-Methode des Internet Explorers auf. Auch hierbei wird ein onQuit-Event ausgelöst, den Ihr Script nur deshalb noch empfängt, weil es anschließend noch einmal zwei Sekunden auf Events hört. Ohne den zweiten Sleep-Befehl würde das Script bereits beendet sein, wenn der Event ausgelöst wird.
Bild 3.8: Der Scripting Spy informiert Sie über alle Events, die ein Objekt abfeuern kann
3.4
Mit Events arbeiten
83
Ob ein Objekt Events unterstützt – und welche das sind –, verrät wieder Ihr Scripting Spy: 1. Starten Sie den Scripting Spy, und suchen Sie sich dann im Register Modul aussuchen das Objekt InternetExplorer.Application heraus. Doppelklicken Sie darauf. 2. Sofort sehen Sie, daß das Objekt über Events verfügt, und zwar sogar über sehr viele. Klicken Sie in der oberen Liste auf das Event-Interface. Es ist mit diesem Symbol markiert: . Sie sehen: OnQuit ist nur einer von zahlreichen möglichen Events. 3. Klicken Sie nun oben in der Liste noch einmal auf das Standard-Interface. Es ist mit diesem Symbol markiert: BILD. Jetzt sehen Sie alle Funktionen und Befehle, die der Internet Explorer unterstützt. Auch hier sehen Sie sofort: Visible und Quit, die im Script oben eingesetzt wurden, sind nur zwei von vielen.
3.4.2
ConnectObject: Eventüberwachung einschalten
Falls Sie bereits eine Referenz auf ein Objekt besitzen und nachträglich auch dessen Events empfangen wollen, dann setzen Sie ConnectObject ein. Geben Sie ConnectObject die Referenz auf das Objekt und den Namen, unter dem Events an Ihre eigenen Script-Prozeduren weitergeleitet werden sollen. In der Praxis ist ConnectObject allerdings sehr beschränkt. Es funktioniert nämlich nur mit ausgewählten Objekten, zum Beispiel selbstprogrammierten Visual Basic COM-Objekten.
3.4.3
DisconnectObject: Eventüberwachung ausknipsen
Mit DisconnectObject schalten Sie eine Eventüberwachung sofort aus. Ihr Script hört nicht länger auf die Events des Objekts. Wenn Sie zum Beispiel selbst den Internet Explorer via Quit schließen, wollen Sie meist nicht mehr ein onQuit-Event empfangen. Sie wissen nun ja selbst, daß der Internet Explorer schließen wird. In solch einem Fall verwenden Sie DisconnectObject, bevor Sie den IE schließen: ’ 3-13.VBS ' Internet Explorer öffnen und Events abhören set ie = WScript.CreateObject("InternetExplorer.Application", "event_") ie.Visible = true WScript.Sleep 20000 MsgBox "Lange genug gewartet – ich schließ das Ding jetzt selber.", _ vbSystemModal ' Eventüberwachung abschalten WScript.DisconnectObject ie ie.Quit WScript.Sleep 2000 sub event_onQuit
84
Kapitel 3: Die eingebauten WSH-Befehle: Wscript-Objekt
MsgBox "IE wird jetzt geschlossen!", vbSystemModal WScript.Quit end sub
Die Eventüberwachung kann auch vorübergehend abgeschaltet werden. Mit DisconnectObject schalten Sie sie ab, und mit ConnectObject wird die Überwachung wieder eingeschaltet. Allerdings ist die nachträgliche Event-Aktivierung beim InternetExplorer.Application-Objekt gar nicht möglich. ConnectObject funktioniert nur bei relativ wenigen COM-Objekten.
3.4.4
GetObject: In bestehende Objekte einklinken
GetObject hat zwei unterschiedliche Aufgaben:
Einerseits öffnen Sie damit Dokumente von Programmen, die automatisierbar sind. Dazu gehören zum Beispiel Microsoft Word-Dokumente.
Andererseits – und sicher wesentlich wichtiger – greifen Sie über GetObject auf latent vorhandene Systemdienste zu. Das kann ADSI (Active Directory Service Interface, Kapitel 10) ebenso sein wie WMI (Windows Management Instrumentation, Kapitel 11).
Wie Sie ein Winword-Dokument so öffnen, daß Ihr Script anschließend an die Methoden der zugrundeliegenden Winword-Applikation herankommt, zeigt das nächste Script: ’ 3-14.VBS ’ eine automatisierbare Datei ansprechen set document = WScript.GetObject("c:\test.doc") ’ Typ feststellen: MsgBox TypeName(document) ’ zur zugrundeliegenden Applikation umschalten: set app = document.Application ’ Anwendungsfenster sichtbar machen app.visible = true document.Activate
Es setzt voraus, daß es bei Ihnen eine Winword-Datei namens c:\test.doc gibt – passen Sie den Dateinamen gegebenenfalls an. GetObject liefert zunächst eine Instanz des Datei-Objekts, das bei Winword Document heißt. Über die Eigenschaft Application kann die zugrundeliegende Winword-Instanz angesprochen und mit Visible sichtbar gemacht werden. Winword läßt sich hervorragend automatisieren. Wieder liefert der Scripting Spy die nötigen Informationen: 1. Klicken Sie auf das Register Modul aussuchen, und doppelklicken Sie auf den Eintrag Word. Darunter finden Sie die Automationsobjekte, so auch Word.Document. Doppelklicken Sie darauf.
3.5
Scripts anhalten und sofort beenden
85
2. Nun analysiert der Scripting Spy intensiv die vielen tausend Funktionen von Winword und schaltet dann direkt um ins Document-Objekt. Hier sehen Sie nicht nur die Application-Eigenschaft, die das Script oben verwendet hat. Sie können auch zum Application-Object umschalten und entdecken dort neben der Visible-Eigenschaft viele weitere nützliche Details. Quit beendet zum Beispiel Winword. Allerdings funktioniert das nur, wenn auf Ihrem Computer die TypeLibrary von Winword installiert ist. In den einfachen Office-Versionen ist das nicht der Fall. Tip: Out-of-Process Server können nachtragend sein! Denken Sie daran: Echte Standalone-Programme wie Winword bleiben Ihnen erhalten, selbst wenn Ihr Script längst Feierabend gemacht hat. Das gilt für Winword ebenso wie für den Internet Explorer. Sorgen Sie also dafür, daß Sie die Programmfenster zuerst mit Visible=true sichtbar machen, oder beenden Sie die Programme zum Schluß Ihres Scripts mit Quit. Andernfalls kann es passieren, daß unsichtbare Fassungen der Programme im Speicher zurückbleiben und gelangweilt Däumchen drehen und Speicher verschwenden, bis Sie irgendwann das System neu booten. Alle Standalone-Programme listet der Scripting Spy übrigens über sein Registerblatt Programme auf.
3.5
Scripts anhalten und sofort beenden
Hin und wieder ist es nötig, daß das Script eine zeitlang wartet. Vielleicht möchten Sie bestimmte Routine-Checks nur alle 5 Minuten durchführen. Hier wäre es schlecht, eine Verzögerungsschleife einzubauen, nur um den WSH mit sinnloser Arbeit zu beschäftigen, bis es wieder Zeit für echte Aufgaben ist. Was Sie brauchen, ist eine Möglichkeit, den WSH für eine vorgegebene Zeit anzuhalten. Diese Möglichkeit existiert seit WSH 2.0. Zusätzlich haben Sie die Möglichkeit, eine Notbremse einzubauen, die das Script nach zu langer Laufzeit kurzerhand abbricht und so hilft, Endlosschleifen den Schrecken zu nehmen. Befehl
Beschreibung
Interactive Sleep
Unterdrückt bei der Einstellung False alle Dialogfenster Hält die Scriptausführung für einen festgelegten Zeitraum an, ohne daß in dieser Zeit CPU-Leistung benötigt würde Beendet ein Script sofort Beendet das Script spätestens nach der angegebenen Frist, legt also die maximale Ausführungszeit für ein Script fest.
Quit Timeout
Tab. 3.7: Script-Ausführung begrenzen oder pausieren
86 3.5.1
Kapitel 3: Die eingebauten WSH-Befehle: Wscript-Objekt
Interactive: Alle Benutzerausgaben unterdrücken
Interactive ist eine sonderbare Eigenschaft: Setzen Sie sie auf true, dann werden sämtliche Dialogfenster unterdrückt. Nicht umsonst ist Interactive undokumentiert, denn sinnvoll ist diese Möglichkeit nicht. Entweder sorgen Sie von vornherein dafür, daß Ihr Script ohne Benutzereingaben auskommt. Oder eben nicht. Einfach die Ausgabe-Dialoge zu unterschlagen kann jedenfalls unerwünschte Konsequenzen haben, die Sie besser nicht riskieren. Wscript.Interactive = false
3.5.2
Sleep: Script eine zeitlang anhalten
Sleep steht ab dem WSH 2.0 zur Verfügung und hält die Scriptausführung so lange an, wie Sie wollen. Solange das Script im Winterschlaf ist, verbraucht es keine Systemressourcen mehr. Damit ist Sleep ideal, wenn Sie nur von Zeit zu Zeit Checks durchführen wollen. Auch oben bei der Eventüberwachung hat es sich bewährt: Wscript.Sleep 10000
3.5.3
’ wartet 10 Sekunden
Quit: Script sofort beenden
Normalerweise endet ein Script, wenn entweder das Ende des Programms erreicht oder das Timeout abgelaufen ist. Ein Timeout ist als Vorgabe normalerweise nicht vorhanden. Wollen Sie Ihr Script dagegen sofort beenden, weil zum Beispiel ein Test ergeben hat, daß die Ausgangsvoraussetzungen für das Script überhaupt nicht erfüllt sind, dann rufen Sie Quit auf. Beispiele haben Sie bereits in den vorangegangenen Scripts gefunden: Wscript.Quit
3.5.4
' beendet die Ausführung sofort
Timeout: Script mit eingebauter Notbremse
Scripts laufen so lange, bis alle Aufgaben abgearbeitet sind – notfalls wochenlang. Solche fleißigen Scripts arbeiten aber meist gar nicht an sinnvollen Dingen, sondern sind in aller Regel aufgrund einer tückischen Endlosschleife in sinnlosen Ehrenrunden gefangen, aus denen sich das Script nicht mehr befreien kann. Das ist schlecht, weil so enorm viel Rechenzeit vom Script bzw. dem WSH konsumiert wird. Ihr System geht dauerhaft in die Knie. Hier hilft nur, mit dem Task Manager herrenlose Wscript.exe-Tasks zu beenden oder den Rechner neu zu starten. Damit Ihnen solche Dinge künftig weniger Kopfzerbrechen bereiten, können Sie auch vorbeugend etwas unternehmen. Rüsten Sie Ihr Script mit einem Timeout aus, dann beendet der WSH die Ausführung, wenn die Zeit um ist. Klar, daß Sie das Timeout eher großzügig wählen sollten, damit nicht bei langwierigen Aufgaben die Zeitkontrolle dazwischenhaut. ’ 3-15.VBS ' Timeout – Notbremse festlegen wscript.timeout = 5
3.5
Scripts anhalten und sofort beenden
87
for x= 1 to 10 MsgBox x Next
In diesem Beispiel wird die maximale Lebensdauer des Scripts auf 5 Sekunden begrenzt. Für die Praxis sicher viel zu kurz, doch schauen Sie mal, wie weit Sie sich in diesen 5 Sekunden durchklicken können! Spätestens nach der Timeout-Frist von 5 Sekunden ist das Script beendet – entweder, weil Sie zehnmal geklickt haben, oder aufgrund des Timeouts. Schlägt das Timeout zu, dann verschwinden sofort und ohne weitere Vorwarnungen alle Fenster, die das Script möglicherweise angezeigt hatte.
89
4
Zugriff auf das Dateisystem: Scripting.FileSystemObject
Ihr gesamtes Dateisystem wird durch das Scripting.FileSystemObject transparent: Dieses Objekt liefert alle Befehle, um in Ordner zu schauen, Dateien zu kopieren, zu löschen und neu anzulegen. Das Scripting.FileSystemObject ist Teil des WSH. Es wird auch von einigen anderen Komponenten wie zum Beispiel dem Internet Information Server und dem Personal Web Server auf dem System installiert. Tip: Details und Beispiele – hier werden Sie fündig Dieses Kapitel ist als Referenz und Hintergrundinformation gedacht. Die einzelnen Befehle werden kurz und knapp beschrieben. Wenn Sie Alltagsbeispiele und komplexere Anwendungen wünschen, dann schauen Sie bitte in den Vorgängerband »Franzis’: Professional Series Scripting Host Praxisbuch«. Dem Thema Dateizugriff ist dort breiter Raum gewidmet.
4.1
Das Objekt-Modell kennenlernen
Das Scripting.FileSystemObject besteht neben der Kernkomponente aus sieben weiteren Objekten, die das folgende Diagramm aufführt. Scripts rufen immer zuerst das FileSystemObject zu Hilfe und können danach mit dessen Funktionen die übrigen Objekte erreichen. Im wesentlichen teilen sich diese Objekte in drei Bereiche:
Drives ist die Aufzählung aller Laufwerke, und Drive ist ein bestimmtes Laufwerk.
Folders ist die Aufzählung aller Ordner innerhalb eines Ordners, und Folder ist ein bestimmter Ordner.
Files ist die Aufzählung aller Dateien in einem Ordner, und File ist eine bestimmte Datei.
Daneben gibt es noch das TextStreamObject. Das entspricht einer geöffneten Datei, in die geschrieben oder aus der gelesen werden kann.
90
Kapitel 4: Zugriff auf das Dateisystem: Scripting.FileSystemObject
Bild 4.1: Die Objekthierarchie des Scripting.FileSystemObject
4.2
Allgemeine Befehle des Scripting.FileSystemObject
Neben den eigentlichen Funktionen, um Laufwerke, Ordner und Dateien zu managen, beinhaltet das Objekt eine ganze Reihe nützlicher Service-Funktionen: Funktionen
Erstellt aus Pfad und Dateiname einen gültigen Pfadnamen für die Datei Kopiert eine Datei Kopiert einen Ordner Löscht eine Datei Löscht einen Ordner Prüft, ob ein Laufwerk existiert Prüft, ob eine Datei existiert Prüft, ob ein Ordner existiert Ermittelt den reinen Ordnerpfadnamen aus einem Dateipfad Liefert nur den Dateinamen ohne Ordnerpfad und Extension Liefert den Namen eines Laufwerks Liefert die Dateiextension eines Pfadnamens Liefert den Dateinamen (WSH 2.0) Ermittelt die Version einer EXE- oder DLL-Datei Ermittelt den Namen des übergeordneten Ordners Liefert einen zufällig generierten Dateinamen Verschiebt eine Datei Verschiebt einen Ordner
Tab. 4.1: Wichtige Befehle des Scripting.FileSystemObject
4.2
4.2.1
Allgemeine Befehle des Scripting.FileSystemObject
91
BuildPath
Function BuildPath(ByVal Path As String, ByVal Name As String) As String
Erstellt einen Pfad aus der Ordner- und der Datei-Angabe: ’ 4-1.vbs set fs = CreateObject("Scripting.FileSystemObject") pfad = InputBox("Bitte Pfad angeben!",,"c:\test") datei = InputBox("Bitte Datei angeben!",,"willi.txt") MsgBox fs.BuildPath(pfad, datei)
4.2.2
CopyFile
Sub CopyFile(ByVal Source As String, ByVal Destination As String, [ByVal OverWriteFiles As BooleanWahr])
Kopiert eine Datei mit allen Attributen und überschreibt wahlweise eine schon vorhandene Datei. ’ 4-2.vbs set fs = CreateObject("Scripting.FileSystemObject") original = "C:\autoexec.bat" ziel = "C:\test.txt" fs.CopyFile original, ziel, true MsgBox "kopiert!"
Dieses Script kopiert die Datei AUTOEXEC.BAT und überschreibt dabei TEST.TXT, falls die Datei schon vorhanden ist. Ersetzen Sie true durch false, dann wird nicht überschrieben. CopyFile kann keine Dateien überschreiben, wenn das System-Attribut gesetzt ist. Solche Dateien müssen zuerst explizit mit DeleteFile gelöscht werden.
4.2.3
CopyFolder
Sub CopyFolder(ByVal Source As String, ByVal Destination As String, [ByVal OverWriteFiles As BooleanWahr])
Wie CopyFile, nur werden hier Ordner kopiert.
4.2.4
DeleteFile
Sub DeleteFile(ByVal FileSpec As String, [ByVal Force As BooleanFalsch])
Wie CopyFile, nur werden hier Dateien gelöscht. DeleteFile kann keine Dateien löschen, bei denen das System- oder Schreibgeschützt-Attribut gesetzt ist, es sei denn, Sie verwenden die Macht. Die Macht aktivieren Sie mit dem zweiten optionalen Argument. Setzen Sie es auf true, dann wird auf jeden Fall gelöscht.
92 4.2.5
Kapitel 4: Zugriff auf das Dateisystem: Scripting.FileSystemObject
DeleteFolder
Sub DeleteFolder(ByVal FolderSpec As String, [ByVal Force As BooleanFalsch])
Wie CopyFolder, nur werden Ordner gelöscht.
4.2.6
DriveExists
Function DriveExists(ByVal DriveSpec As String) As Boolean
Prüft, ob ein Laufwerk existiert: ’ 4-3.vbs set fs = CreateObject("Scripting.FileSystemObject") if fs.DriveExists("K:\") then MsgBox "Laufwerk K: existiert." else MsgBox "Laufwerk K: existiert nicht." end if
4.2.7
FileExists
Function FileExists(ByVal FileSpec As String) As Boolean
Wie DriveExists, nur wird hier auf die Existenz einer Datei geprüft. Geben Sie den vollen Pfadnamen an.
4.2.8
FolderExists
Function FolderExists(ByVal FolderSpec As String) As Boolean
Wie DriveExists, nur wird hier geprüft, ob ein Ordner existiert.
4.2.9
GetAbsolutePathName
Function GetAbsolutePathName(ByVal Path As String) As String
Fügt den aktuellen Pfadnamen an einen Dateinamen an. Der aktuelle Pfadname ist der Name des aktuell im Explorer geöffneten Ordners. In der Regel ist dies der Pfadname, in dem Ihr Script ausgeführt wird. ’ 4-4.vbs set fs = CreateObject("Scripting.FileSystemObject") pfad = InputBox("Geben Sie einen Dateinamen ein!",, _ "willi.txt") MsgBox fs.GetAbsolutePathName(pfad)
4.2
Allgemeine Befehle des Scripting.FileSystemObject
4.2.10 GetBaseName Function GetBaseName(ByVal Path As String) As String
Entfernt den Pfad- und Extensionsanteil eines Pfads und liefert den reinen Dateinamen zurück: ’ 4-5.vbs set fs = CreateObject("Scripting.FileSystemObject") pfad = InputBox("Geben Sie einen Dateinamen ein!",, _ "c:\test\willi.txt") MsgBox fs.GetBaseName(pfad)
4.2.11 GetDriveName Function GetDriveName(ByVal Path As String) As String
Liefert den Laufwerksbuchstaben aus einem komplexen Pfad zurück: ’ 4-6.vbs set fs = CreateObject("Scripting.FileSystemObject") pfad = InputBox("Geben Sie einen Dateinamen ein!",, _ "c:\test\willi.txt") MsgBox fs.GetDriveName(pfad)
4.2.12 GetExtensionName Function GetExtensionName(ByVal Path As String) As String
Liefert die Dateiextension eines Pfadnamens zurück: ’ 4-7.vbs set fs = CreateObject("Scripting.FileSystemObject") pfad = InputBox("Geben Sie einen Dateinamen ein!",, _ "c:\test\willi.txt") MsgBox fs.GetExtensionName(pfad)
4.2.13 GetFileName Function GetFileName(ByVal Path As String) As String
Liefert den Dateinamen einschließlich Extension zurück: ’ 4-8.vbs set fs = CreateObject("Scripting.FileSystemObject") pfad = InputBox("Geben Sie einen Dateinamen ein!",, _
93
94
Kapitel 4: Zugriff auf das Dateisystem: Scripting.FileSystemObject "c:\test\willi.txt")
MsgBox fs.GetFileName(pfad)
4.2.14 GetFileVersion Function GetFileVersion(ByVal FileName As String) As String
Liefert die Version einer DLL- oder EXE-Datei zurück. Ist keine Versionsinformation in der Datei enthalten, dann kommt es bei älteren WSH-Versionen zu einem Fehler. ’ 4-9.vbs set fs = CreateObject("Scripting.FileSystemObject") windir = fs.GetSpecialFolder(0).Path file = windir & "\explorer.exe" MsgBox fs.GetFileVersion(file)
4.2.15 GetParentFolderName Function GetParentFolderName(ByVal Path As String) As String
Liefert den Ordnernamen zurück, in dem eine Datei liegt: ’ 4-10.vbs set fs = CreateObject("Scripting.FileSystemObject") pfad = InputBox("Geben Sie einen Dateinamen ein!",, _ "c:\test\willi.txt") MsgBox fs.GetParentFolderName(pfad)
4.2.16 GetTempName Function GetTempName As String
Generiert einen zufälligen Dateinamen: ’ 4-11.vbs set fs = CreateObject("Scripting.FileSystemObject") for x = 1 to 10 list = list & fs.GetTempName & vbCr next MsgBox list
4.3
Laufwerke managen
95
4.2.17 MoveFile Sub MoveFile(ByVal Source As String, ByVal Destination As String)
Wie CopyFile, nur wird die Datei verschoben.
4.2.18 MoveFolder Sub MoveFolder(ByVal Source As String, ByVal Destination As String)
Wie CopyFolder, nur wird der Ordner verschoben.
4.3
Laufwerke managen
Das Drive-Objekt repräsentiert ein bestimmtes Laufwerk. Wenn Sie also Details über ein Laufwerk erfahren wollen, dann brauchen Sie das Drive-Objekt des Laufwerks. Folgende Möglichkeiten haben Sie, um ein Drive-Objekt zu erhalten:
4.3.1
GetDrive – spezifisches Laufwerk heraussuchen
Mit GetDrive picken Sie sich ein Laufwerk heraus, indem Sie den gewünschten Laufwerksbuchstaben angeben: set FileSystemObject = CreateObject("Scripting.FileSystemObject") set drive = FileSystemObject.GetDrive("C:\")
4.3.2
Drives – alle Laufwerke, die es gibt
Drives liefert ein Drives-Objekt, die Kollektion aller Drive-Objekte, die es auf Ihrem Computer gibt. Über for each...next können die einzelnen Drive-Objekte ausgelesen werden. ’ 4-12.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set drives = FileSystemObject.Drives for each drive in drives MsgBox drive next
4.3.3
Drive – das Laufwerk eines Ordners
Drive ist eine Eigenschaft des Folder-Objekts und liefert das Drive-Objekt des Laufwerks zurück, auf dem der Ordner gespeichert ist.
96
Kapitel 4: Zugriff auf das Dateisystem: Scripting.FileSystemObject
set FileSystemObject = CreateObject("Scripting.FileSystemObject") set folder = FileSystemObject.GetFolder("C:\WINDOWS") set drive = Folder.Drive
4.4
Methoden und Eigenschaften des Drive-Objekts
Haben Sie sich auf eine der oben genannten Arten ein Drive-Objekt verschafft, dann können Sie die Detailinformationen des Laufwerks auslesen: Eigenschaft
Freier Speicherplatz für den gerade angemeldeten Benutzer Freier Speicherplatz insgesamt auf dem Laufwerk Laufwerksbuchstabe Laufwerkstyp Art des Dateisystems Wahr, wenn das Laufwerk einen Datenträger enthält Pfadname Referenz auf das Folder-Objekt des Stammordners Seriennummer des Datenträgers Freigabename des Datenträgers Gesamtgröße des Datenträgers Datenträgerbezeichnung
Tab. 4.2: Befehle und Infos des Drive-Object
Tip: Vorsicht – 2 GB Bug! In den älteren Versionen des WSH – speziell auf Rechnern, die nicht Windows 2000 verwenden – sind die Größenangaben auf 2 GB begrenzt. Ist ein Laufwerk größer als 2 GB, dann werden die darüber hinausgehenden Speichermengen unterschlagen. Eine Festplatte ist aus Sicht des alten WSHs also immer maximal 2 GB groß und kann maximal 2 GB freien Speicher enthalten. Das führt zu dem kuriosen Resultat, daß ein 4 GB großes Laufwerk mit 2 GB Daten zu 100% unbelegt erscheint, weil sowohl seine Maximalgröße als auch der freie Speicherplatz mit 2 GB angegeben werden. Eine Lösung dieses Problems finden Sie in Kapitel 8.5.
4.4.1
AvailableSpace
Property AvailableSpace ’ 4-13.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set drive = FileSystemObject.GetDrive("C:\") MsgBox Drive.AvailableSpace
4.4
4.4.2
Methoden und Eigenschaften des Drive-Objekts
DriveLetter
Property DriveLetter As String ’ 4-14.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set drives = FileSystemObject.Drives for each drive in drives MsgBox drive.DriveLetter Next
CD-ROM Laufwerk Festplatte RAM-Disk Netzlaufwerk Wechselplattenlaufwerk Unbekannter Typ
Tab. 4.3: Laufwerkstypen und deren Codes ’ 4-15.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set drives = FileSystemObject.Drives for each drive in drives MsgBox drive.DriveType Next
4.4.4
FileSystem
Property FileSystem As String ’ 4-16.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set drives = FileSystemObject.Drives for each drive in drives if drive.isReady then MsgBox drive.DriveLetter & " verwendet " _ & Drive.FileSystem end if Next
97
98 4.4.5
Kapitel 4: Zugriff auf das Dateisystem: Scripting.FileSystemObject
FreeSpace
Property FreeSpace ’ 4-17.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set drive = FileSystemObject.GetDrive("C:\") MsgBox Drive.FreeSpace
4.4.6
IsReady
Property IsReady As Boolean ’ 4-18.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set drives = FileSystemObject.Drives for each drive in drives MsgBox drive.DriveLetter & " ist bereit? " & Drive.IsReady Next
4.4.7
Path
Property Path As String ’ 4-19.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set drives = FileSystemObject.Drives for each drive in drives MsgBox Drive.Path Next
4.4.8
RootFolder
Property RootFolder As IFolder ’ 4-20.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set drive = FileSystemObject.GetDrive("C:\") set folder = Drive.RootFolder MsgBox TypeName(folder)
4.4.9
SerialNumber
Property SerialNumber As Long
4.5
Ordner managen
99
’ 4-21.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set drive = FileSystemObject.GetDrive("C:\") MsgBox Drive.SerialNumber
4.4.10 ShareName Property ShareName As String ’ 4-22.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set drive = FileSystemObject.GetDrive("C:\") MsgBox Drive.ShareName
4.4.11 TotalSize Property TotalSize ’ 4-23.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set drive = FileSystemObject.GetDrive("C:\") MsgBox Drive.TotalSize
4.4.12 VolumeName Property VolumeName As String ’ 4-24.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set drive = FileSystemObject.GetDrive("C:\") newname = InputBox("Name des Laufwerks?",, Drive.VolumeName) drive.VolumeName = newname
4.5
Ordner managen
Ordner sind ganz ähnlich organisiert wie Laufwerke. Wieder gibt es eine Collection in Form des Folders-Objekts und eigene separate Ordner in Form eines Folder-Objekts. Das folgende Diagramm veranschaulicht die verwandschaftlichen Verhältnisse:
100
Kapitel 4: Zugriff auf das Dateisystem: Scripting.FileSystemObject
Bild 4.2: Der Zusammenhang zwischen Ordnern und Inhalt
Über Drives bekommen Sie ein Drives-Objekt, die Kollektion aller Laufwerke. Mit for each...next können Sie daraus Drive-Objekte abzapfen oder ein bestimmtes Drive-Objekt direkt via GetDrive ansteuern. Drive-Objekte wiederum liefern via RootFolder ein Folder-Objekt, das auch direkt über GetFolder erreichbar ist. Das Folder-Objekt liefert via Subfolders ein Folders-Objekt, in dem alle Unterordner des Ordners zusammengefaßt sind. Mit for each...next entnehmen Sie daraus einzelne Folder-Objekte, die wiederum auch direkt über GetFolder zur Verfügung stehen. Folder-Objekte ihrerseits bieten mit ihrer Drive-Eigenschaft immer eine Referenz zum zugrundeliegenden Drive-Objekt.
Bild 4.3: Der Zusammenhang zwischen Laufwerk und Ordnern
Die einzelnen Folder-Objekte hängen ihrerseits zusammen, so daß Sie sich sowohl tiefer in die Verzeichnisbäume bewegen als auch wieder aus ihnen herauskommen können. Die Unterordner eines Ordners liefert Subfolders. Über die Folders-Collection erreichen Sie so jeden Unterordner. Vom Unterordner kommen Sie über ParentFolder wieder eine Ebene höher, und mit isRootFolder können Sie jederzeit prüfen, ob Sie die »Oberfläche« wieder erreicht haben und beim Wurzelverzeichnis des Laufwerks angelangt sind. Wenn Sie sich mit einem Ordner oder seinem Inhalt beschäftigen wollen, dann brauchen Sie ein Folder-Objekt. Das bekommen Sie so:
4.5
4.5.1
Ordner managen
CreateFolder
’ 4-25.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set folder = FileSystemObject.CreateFolder("C:\MEINNEUERORDNER")
4.5.2
GetFolder
’ 4-26.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set folder = FileSystemObject.GetFolder("C:\")
4.5.3
GetSpecialFolder
’ 4-27.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set folder = FileSystemObject.GetSpecialFolder(2) MsgBox "Windows-Ordner: " & folder.path
Systemordner von Windows Temp-Ordner für zwischengespeicherte Daten Windows-Ordner
Tab. 4.4: Spezialordner und deren Codezahlen
4.5.4
RootFolder
’ 4-28.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set drive = FileSystemObject.GetDrive("C:\") set folder = Drive.RootFolder
4.5.5
ParentFolder
’ 4-29.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set file = FileSystemObject.GetFile("C:\TEST") set folder = file.ParentFolder
101
102
Kapitel 4: Zugriff auf das Dateisystem: Scripting.FileSystemObject
4.5.6
Subfolders
’ 4-30.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set folder = FileSystemObject.GetFolder("C:\") set subfolder = folder.subfolders for each subf in subfolder MsgBox TypeName(subf) & " Name: " & subf.name next
4.6
Eigenschaften des Folder-Objekts
Sobald Sie sich ein Folder-Objekt verschafft haben, können Sie die folgenden Eigenschaften abfragen und ändern: Eigenschaft
Beschreibung
SubFolders Size ShortPath ShortName Path ParentFolder Name IsRootFolder Files
Liefert ein Folders-Objekt zurück, das die Folder-Objekte aller Unterordner enthält Liefert die Gesamtgröße des Ordners einschließlich aller Unterordner zurück 8.3-Pfadname des Ordners 8.3-Name des Ordners Pfadname des Ordners Folder-Objekt des übergeordneten Ordners Name des Ordners True, wenn dieser Ordner die Wurzel eines Laufwerks repräsentiert Liefert ein Files-Objekt zurück, das die File-Objekte aller Dateien enthält, die in diesem Ordner gespeichert sind Liefert ein Drive-Objekt des zugrundeliegenden Laufwerks zurück Datum der letzten Änderung an diesem Ordner Datum des letzten Zugriffs auf diesen Ordner Erstellungsdatum des Ordners Dateiattribute des Ordners
Das Folder-Objekt beinhaltet eine Reihe von Funktionen und Prozeduren: Methode
Beschreibung
CreateTextFile Copy Delete Move
Legt im Ordner eine neue Datei an und liefert ein TextStreamObject zurück Kopiert den Ordner Löscht den Ordner Verschiebt den Ordner
Tab. 4.6: Befehle eines Folder-Objekts
4.6
4.6.1
Eigenschaften des Folder-Objekts
103
Attributes
Property Attributes As FileAttribute ’ 4-31.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set folder = FileSystemObject.GetFolder("C:\WINDOWS") MsgBox Folder.Attributes
Die Attribute sind als Bitmaske gespeichert. Hier die Werte: Wert
Attribut
1 2 4 8 16 32 64 1024 2048
Schreibgeschützt Versteckt System Laufwerk Ordner Archiv Verknüpfung Alias Komprimiert (Windows NT)
Tab. 4.7: Dateiattribute und deren Codezahlen
Wollen Sie zum Beispiel prüfen, ob das Versteckt-Attribut der Datei C:\AUTOEXEC.BAT gesetzt ist, dann machen Sie das so: ’ 4-32.vbs set fs = CreateObject("Scripting.FileSystemObject") datei = "C:\AUTOEXEC.BAT" set file = fs.GetFile(datei) attribute = file.Attributes if (attribute and 2)<>0 then MsgBox "Die Datei ist versteckt!" else MsgBox "Die Datei ist NICHT versteckt!" end if
Auch das Setzen von Attributen ist nicht besonders schwierig. Sie müssen nur darauf achten, keine schreibgeschützten Attribute zu setzen. Das würde zu einem Fehler führen. Wollen Sie also scriptgesteuert das Versteckt-Attribut der Datei AUTOEXEC.BAT setzen, dann könnte dies ein Weg sein: ’ 4-33.vbs set fs = CreateObject("Scripting.FileSystemObject") datei = "C:\AUTOEXEC.BAT"
104
Kapitel 4: Zugriff auf das Dateisystem: Scripting.FileSystemObject
set file = fs.GetFile(datei) attribute = file.Attributes file.Attributes = attribute or 2 and not 65497 MsgBox "AUTOEXEC.BAT ist jetzt auf jeden Fall versteckt!"
Dieses Script setzt das Versteckt-Attribut. Alle schreibgeschützten Bits werden mit and not 65492 ausgeblendet. Prüfen Sie den Erfolg Ihrer Aktion einfach mit Script 4-32.vbs, oder noch einfacher: Klicken Sie die Datei im Explorer mit der rechten Maustaste an, und wählen Sie Eigenschaften. Schauen Sie dann die Attribute direkt an. Und wie löscht man Attribute? Das nächste Script entfernt das Versteckt-Attribut wieder: ’ 4-34.vbs set fs = CreateObject("Scripting.FileSystemObject") datei = "C:\AUTOEXEC.BAT" set file = fs.GetFile(datei) attribute = file.Attributes file.Attributes = attribute and not 2 and not 65497 MsgBox "AUTOEXEC.BAT ist jetzt auf jeden Fall NICHT versteckt!"
4.6.2
Copy
Sub Copy(ByVal Destination As String, [ByVal OverWriteFiles As BooleanWahr]) ’ 4-35.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set folder = FileSystemObject.GetFolder("C:\TEST") Call Folder.Copy("C:\BACKUP", true)
4.6.3
CreateTextFile
Function CreateTextFile(ByVal FileName As String, [ByVal Overwrite As BooleanWahr], [ByVal Unicode As BooleanFalsch]) As ITextStream ’ 4-36.vbs set fs = CreateObject("Scripting.FileSystemObject") set obj = fs.CreateTextFile("C:\test.txt", true) obj.WriteLine "Hallo" obj.close
4.6
4.6.4
Eigenschaften des Folder-Objekts
105
DateCreated
Property DateCreated As Date ’ 4-37.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set folder = FileSystemObject.GetFolder("C:\WINDOWS") MsgBox Folder.DateCreated
Aufpassen: Alle Datumsfunktionen sind fehleranfällig. Eine Datei oder ein Ordner muß nämlich nicht über die gewünschte Information verfügen. Ist gar kein Erstellungsdatum eingetragen, dann kassiert Ihr Script einen Fehler. Schauen Sie sich die Datei oder den Ordner einfach per Rechtsklick und Eigenschaften an. Sie werden feststellen, daß die Datumsangaben häufig fehlen.
Bild 4.4: In diesem Ordner wurde kein Erstell-Datum gespeichert
Sie können das Problem relativ leicht umgehen, indem Sie auf Fehler prüfen: ’ 4-38.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set folder = FileSystemObject.GetFolder("C:\WINDOWS") on error resume next datum = Folder.DateCreated if err.number<>0 then datum = "(unbekannt)" on error goto 0 MsgBox datum
106 4.6.5
Kapitel 4: Zugriff auf das Dateisystem: Scripting.FileSystemObject
DateLastAccessed
Property DateLastAccessed As Date ’ 4-39.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set folder = FileSystemObject.GetFolder("C:\WINDOWS") MsgBox Folder.DateLastAccessed
4.6.6
DateLastModified
Property DateLastModified As Date ’ 4-40.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set folder = FileSystemObject.GetFolder("C:\WINDOWS") MsgBox Folder.DateLastModified
4.6.7
Delete
Sub Delete([ByVal Force As BooleanFalsch]) ’ 4-41.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set folder = FileSystemObject.GetFolder("C:\TEST") Call Folder.Delete(true)
4.6.8
Drive
Property Drive As IDrive ’ 4-42.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set folder = FileSystemObject.GetFolder("C:\WINDOWS") set obj = Folder.Drive MsgBox obj.DriveLetter
4.6.9
Files
Property Files As IFileCollection ’ 4-43.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set folder = FileSystemObject.GetFolder("C:\WINDOWS") set obj = Folder.Files
4.6
Eigenschaften des Folder-Objekts
for each file in obj list = list & file.name & vbCr next MsgBox list
4.6.10 IsRootFolder Property IsRootFolder As Boolean ’ 4-44.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set folder = FileSystemObject.GetFolder("C:\") MsgBox Folder.IsRootFolder
4.6.11 Move Sub Move(ByVal Destination As String) ’ 4-45.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set folder = FileSystemObject.GetFolder("C:\TEST") Call Folder.Move("C:\TESTNEU")
4.6.12 Name Property Name As String ’ 4-46.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set folder = FileSystemObject.GetFolder("C:\WINDOWS") MsgBox Folder.Name
4.6.13 ParentFolder Property ParentFolder As IFolder ’ 4-47.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set folder = FileSystemObject.GetFolder("C:\WINDOWS") set obj = Folder.ParentFolder MsgBox obj.Path
107
108
Kapitel 4: Zugriff auf das Dateisystem: Scripting.FileSystemObject
4.6.14 Path Property Path As String ’ 4-48.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set folder = FileSystemObject.GetFolder("C:\WINDOWS") MsgBox Folder.Path
4.6.15 ShortName Property ShortName As String ’ 4-49.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set folder = FileSystemObject.GetFolder("C:\LANGERNAME") MsgBox Folder.ShortName
4.6.16 ShortPath Property ShortPath As String ’ 4-50.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set folder = FileSystemObject.GetFolder("C:\LANGERNAME") MsgBox Folder.ShortPath
4.6.17 Size Property Size ’ 4-51.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set folder = FileSystemObject.GetSpecialFolder(0) MsgBox Folder.Size
Die Size-Methode berechnet den gesamten Inhalt eines Ordners einschließlich aller Unterordner. Je nach der Datenmenge kann es einige Sekunden dauern, bis die Gesamtgröße berechnet ist.
4.6.18 SubFolders Property SubFolders As IFolderCollection ’ 4-52.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject")
4.7
Dateien managen
109
set folder = FileSystemObject.GetSpecialFolder(0) set obj = Folder.SubFolders for each subfolder in obj list = list & subfolder.name & vbCr next MsgBox list
4.6.19 Type Property Type As String ’ 4-53.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set folder = FileSystemObject.GetFolder("C:\WINDOWS") MsgBox Folder.Type
4.7
Dateien managen
Auch Dateien sind in analogem Schema organisiert. Das File-Objekt entspricht einer einzelnen Datei, während das Files-Objekt eine Reihe von Dateien als Collection ihrer File-Objekte repräsentiert. Wenn Sie die Eigenschaften einer Datei untersuchen oder Dateien verschieben und kopieren wollen, dann brauchen Sie ein File-Objekt. So gelangt es in Ihre Hände:
4.7.1
GetFile
set FileSystemObject = CreateObject("Scripting.FileSystemObject") set file = FileSystemObject.GetFile("C:\TEST.TXT")
4.7.2
Files
’ 4-54.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set folder = FileSystemObject.GetFolder("C:\WINDOWS") set files = Folder.Files for each file in files list = list & file.name next MsgBox list
110 4.8
Kapitel 4: Zugriff auf das Dateisystem: Scripting.FileSystemObject
Eigenschaften und Methoden des File-Objekts
Haben Sie sich ein File-Objekt verschafft, dann können Sie die folgenden Eigenschaften und Methoden nutzen: Eigenschaften/Methoden
Beschreibung
Attributes Copy DateCreated DateLastAccessed DateLastModified Delete Drive Move Name OpenAsTextStream ParentFolder Path ShortName ShortPath Size Type
Dateiattribute Datei kopieren Erstellungsdatum der Datei Letzter Zugriff auf die Datei Datum der letzten Dateiänderung Datei löschen Liefert Drive-Objekt des Laufwerks, auf dem die Datei liegt Datei verschieben Name der Datei Dateiinhalt bearbeiten; liefert ein TextstreamObject zurück Liefert Folder-Objekt des Ordners zurück, in dem die Datei liegt Pfadname der Datei 8.3-Name der Datei 8.3-Pfadname der Datei Größe der Datei in Bytes Typ der Datei
Tab. 4.8: Eigenschaften und Befehle eines File-Objekts
4.8.1
Attributes
Property Attributes As FileAttribute ’ 4-55.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set file = FileSystemObject.GetFile("C:\TEST.TXT") MsgBox File.Attributes
Wie Sie die Zahlenwerte der Attributes-Eigenschaft in verständliche Dateiattribute umwandeln und selbst die Attribute ändern, habe ich Ihnen bereits oben bei der Attributes-Eigenschaft des FolderObjekts gezeigt.
4.8.2
Copy
Sub Copy(ByVal Destination As String, [ByVal OverWriteFiles As BooleanWahr]) ’ 4-56.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set file = FileSystemObject.GetFile("C:\TEST.TXT") Call File.Copy("C:\TEST2.TXT", true)
4.8
4.8.3
Eigenschaften und Methoden des File-Objekts
111
DateCreated
Property DateCreated As Date ’ 4-57.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set file = FileSystemObject.GetFile("C:\TEST.TXT") MsgBox File.DateCreated
Wie schon beim Folder-Objekt und seinen Datumsfunktionen gilt auch beim File-Objekt: Ist keine Datumsinformation protokolliert worden, dann können die Datumsinformationen auch nicht abgefragt werden. Wer es dennoch versucht, kassiert einen Fehler. Bei der DateCreated-Eigenschaft des Folder-Objekts hatte ich Ihnen gezeigt, wie einfach Sie solche Fehler abfangen.
4.8.4
DateLastAccessed
Property DateLastAccessed As Date ’ 4-58.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set file = FileSystemObject.GetFile("C:\TEST.TXT") MsgBox File.DateLastAccessed
4.8.5
DateLastModified
Property DateLastModified As Date ’ 4-59.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set file = FileSystemObject.GetFile("C:\TEST.TXT") MsgBox File.DateLastModified
4.8.6
Delete
Sub Delete([ByVal Force As BooleanFalsch]) ’ 4-60.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set file = FileSystemObject.GetFile("C:\TEST.TXT") Call File.Delete(true)
112 4.8.7
Kapitel 4: Zugriff auf das Dateisystem: Scripting.FileSystemObject
Drive
Property Drive As IDrive ’ 4-61.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set file = FileSystemObject.GetFile("C:\TEST.TXT") set obj = File.Drive MsgBox obj.DriveLetter
4.8.8
Move
Sub Move(ByVal Destination As String) ’ 4-62.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set file = FileSystemObject.GetFile("C:\TEST.TXT") Call File.Move("C:\TEST2.TXT")
4.8.9
Name
Property Name As String ’ 4-63.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set file = FileSystemObject.GetFile("C:\TEST.TXT") MsgBox File.Name
4.8.10 OpenAsTextStream Function OpenAsTextStream([ByVal IOMode As IOModeForReading], [ByVal Format As TristateTristateFalse]) As ITextStream ’ 4-64.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set file = FileSystemObject.GetFile("C:\TEST.TXT") set obj = File.OpenAsTextStream do until obj.atEndOfStream MsgBox obj.ReadLine Loop Obj.close
4.8
Eigenschaften und Methoden des File-Objekts
4.8.11 ParentFolder Property ParentFolder As IFolder ’ 4-65.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set file = FileSystemObject.GetFile("C:\TEST.TXT") set obj = File.ParentFolder MsgBox obj.Path
4.8.12 Path Property Path As String ’ 4-66.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set file = FileSystemObject.GetFile("C:\TEST.TXT") MsgBox File.Path
4.8.13 ShortName Property ShortName As String ’ 4-67.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set file = FileSystemObject.GetFile("C:\LANGERNAME.TXT") MsgBox File.ShortName
4.8.14 ShortPath Property ShortPath As String ’ 4-68.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set file = FileSystemObject.GetFile("C:\LANGERNAME.TXT") MsgBox File.ShortPath
4.8.15 Size Property Size ’ 4-69.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set file = FileSystemObject.GetFile("C:\TEST.TXT") MsgBox File.Size
113
114
Kapitel 4: Zugriff auf das Dateisystem: Scripting.FileSystemObject
4.8.16 Type Property Type As String ’ 4-70.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set file = FileSystemObject.GetFile("C:\TEST.TXT") MsgBox File.Type
4.9
Dateien neu anlegen, auslesen und verändern
Bislang haben Sie Ihre gespeicherten Daten nur mit Hilfe der Container Laufwerk, Ordner und Datei gemanagt. Sicher wollen Sie aber irgendwann auch direkt an die Daten herankommen, die in einer Datei gespeichert sind. Ebenso wichtig: Ihr Script soll die Möglichkeit erhalten, eigene Daten in einer Datei zu speichern.
Bild 4.5: Zugriff auf den Inhalt einer Datei
Zuständig hierfür ist das Textstream-Objekt. Dieses Objekt repräsentiert eine geöffnete Datei, aus der gelesen und in die geschrieben werden kann. Allerdings unterstützt VBScript keine Binärdaten, sondern nur Strings. Deshalb sind nur Textdateien bequem über das TextStreamObject verwaltbar. Binärdateien können zwar ebenfalls gelesen und geschrieben werden, aber dann muß zeichenweise gelesen werden.
4.9
Dateien neu anlegen, auslesen und verändern
115
Das TextStreamObject ist das unterste Objekt der Hierarchie, hier sind die realen Daten gespeichert. Das TextStreamObject kann entweder direkt über OpenTextFile oder ab der Ordnerebene vom Folder-Objekt oder File-Objekt aus angelegt werden. Das TextStreamObject spielt aber nicht nur bei echten Dateien eine Rolle. Es ist auch das universelle Objekt, mit dem Daten in den DOS-Stream hineingeschrieben und daraus gelesen werden. Der WSH tut also im Falle von DOS-Fenstern einfach so, als handele es sich dabei um eine Textdatei, aus der gelesen und in die geschrieben werden kann. Sie erhalten deshalb auch ein TextStreamObject über die Methode GetStandardStream sowie über die WSH-eigenen Methoden StdIn und StdOut (siehe Kapitel 3.3). Wichtig ist, daß alle drei Methoden einen Fehler liefern, wenn gar kein DOS-Fenster vorhanden ist. Ihr Script muß deshalb mit CSCRIPT.EXE gestartet werden, bevor Sie DOS-Streams einsetzen können. Für normale Dateioperationen ist es hingegen völlig egal, ob Ihr Script von CSCRIPT.EXE oder WSCRIPT.EXE ausgeführt wird. Wenn Sie den Inhalt einer Datei lesen oder ihn verändern wollen oder wenn Sie eine ganz neue Datei anlegen möchten, dann brauchen Sie ein TextStreamObject. So bekommen Sie es:
4.9.1
CreateTextFile
set textstream = FileSystemObject.CreateTextFile(ByVal FileName As String, [ByVal Overwrite As BooleanWahr], [ByVal Unicode As BooleanFalsch])
Setzen Sie als zweiten Parameter immer true, wenn Sie sicher gehen wollen, daß die Datei auch wirklich angelegt wird. Dabei werden gleichnamige schon existierende Dateien überschrieben. set fs = CreateObject("Scripting.FileSystemObject") set datei = fs.CreateTextFile("C:\TEST.TXT", true)
4.9.2
OpenTextFile
set textstream = FileSystemObject.OpenTextFile(ByVal FileName As String, [ByVal IOMode As IOModeForReading], [ByVal Create As BooleanFalsch], [ByVal Format As TristateTristateFalse]) set FileSystemObject = CreateObject("Scripting.FileSystemObject") set textstream = FileSystemObject.OpenTextFile("c:\test.txt", 1, true)
Besonders wichtig ist hier der Modus, in dem Sie eine Datei öffnen. Der Modus wird mit IOMode festgelegt: IOMode
Bedeutung
1 2 8
Datei zum Lesen öffnen Datei zum Schreiben öffnen Datei zum Lesen und Schreiben öffnen, neue Daten anhängen (Append)
Tab. 4.9: Zugriffsarten auf den Datei-Inhalt
116 4.9.3
Kapitel 4: Zugriff auf das Dateisystem: Scripting.FileSystemObject
OpenAsTextStream
set textstream = File.OpenAsTextStream([ByVal IOMode As IOModeForReading], [ByVal Format As TristateTristateFalse]) set FileSystemObject = CreateObject("Scripting.FileSystemObject") set file = FileSystemObject.GetFile("C:\test.txt") set textstream = File.OpenAsTextStream(1)
4.10
Eigenschaften und Methoden von TextStreamObject
Sobald Sie ein TextStreamObject in der Hand haben, können Sie damit den Dateiinhalt auslesen oder ihn neu schreiben. Ob das TextStreamObject für Leseoperationen oder für Schreiboperationen geöffnet ist, hängt von den Optionen ab, die Sie angegeben haben, als Sie das TextStreamObject erstellt haben (siehe oben). Eigenschaft/Methode
Beschreibung
AtEndOfLine AtEndOfStream Close Column Line Read ReadAll ReadLine Skip SkipLine Write WriteBlankLines WriteLine
True, wenn ein Zeilenende erreicht ist True, wenn das Dateiende erreicht ist Schließt die Datei Gibt die Spaltenzahl an (Zeichen seit dem letzten Wagenrücklauf) Gibt die Zeilenzahl an (Anzahl der bisherigen Wagenrückläufe) Liest eine festgelegte Anzahl von Zeichen Liest die gesamte Datei Liest genau eine Zeile Überspringt eine festgelegte Anzahl Zeichen Überspringt genau eine Zeile Schreibt Text Schreibt eine leere Zeile Schreibt Text und fügt einen Wagenrücklauf an (vbCrLf).
Tab. 4.10: Eigenschaften und Befehle eines TextStream-Objekts
4.10.1 AtEndOfLine Property AtEndOfLine As Boolean ’ 4-71.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set textstream = FileSystemObject.OpenTextFile("C:\test.txt", 1) do until TextStream.AtEndOfLine MsgBox TextStream.ReadLine Loop Textstream.close
4.10
Eigenschaften und Methoden von TextStreamObject
4.10.2 AtEndOfStream Property AtEndOfStream As Boolean
True, wenn das Ende der Datei erreicht wurde.
4.10.3 Close Sub Close
Schließt ein TextStream-Objekt.
4.10.4 Column Property Column As Long
Liefert die aktuelle Spaltenposition in einer geöffneten Textdatei.
4.10.5 Line Property Line As Long
Liefert die aktuelle Zeilenposition in einer geöffneten Textdatei.
4.10.6 Read Function Read(ByVal Characters As Long) As String
Liest eine beliebige Anzahl von Zeichen aus einer geöffneten Textdatei.
4.10.7 ReadAll Function ReadAll As String
Liest den gesamten Inhalt der geöffneten Textdatei.
4.10.8 ReadLine Function ReadLine As String
Liest genau eine Zeile aus einer geöffneten Textdatei.
117
118
Kapitel 4: Zugriff auf das Dateisystem: Scripting.FileSystemObject
4.10.9 Skip Sub Skip(ByVal Characters As Long)
Überspringt eine beliebige Anzahl von Zeichen.
4.10.10 SkipLine Sub SkipLine
Überspringt eine Zeile.
4.10.11 Write Sub Write(ByVal Text As String)
Schreibt Zeichen in eine geöffnete Textdatei. Die Textdatei muß entweder neu angelegt oder im Append-Modus geöffnet werden. ’ 4-72.vbs set FileSystemObject = CreateObject("Scripting.FileSystemObject") set textstream = FileSystemObject.OpenTextFile("C:\TEST.TXT", _ 8, true) Call TextStream.Write("Hallo!") TextStream.Close
Dieses Script hängt eine neue Textzeile an die Datei TEST.TXT an. Sie können den Erfolg sofort mit Script 4-71.VBS prüfen – oder die Datei einfach öffnen. Die Codezahl 8 öffnet die Datei im Append-Modus. Die übrigen Codezahlen sind oben bei OpenTextFile aufgelistet.
4.10.12 WriteBlankLines Sub WriteBlankLines(ByVal Lines As Long)
Schreibt beliebig viele leere Zeilen in eine Textdatei.
4.10.13 WriteLine Sub WriteLine([ByVal Text As String])
Schreibt Text und einen »Wagenrücklauf« in die Textdatei.
119
5
Zugriff auf die Webansicht: Shell.Application
Das Shell.Application-Objekt ist ein Allzweckobjekt, so ähnlich wie ein Schweizer Offiziersmesser. Es ist die Geheimtür, über die Ihre Scripts tief in die Interna der neuen Windows-Desktops dringen können, und nebenbei liefert das Objekt so nützliche Dinge wie Funktionen, um alle Fenster vorübergehend unsichtbar zu machen. Leider ist das Objekt aber nicht auf allen Windows-Versionen verfügbar. Von Hause aus dabei ist es nur bei Windows 98 und Windows 2000. Windows 95 und -NT-Benutzer können es zwar nachrüsten, aber sonderbarerweise kommt es ausschließlich als Teil des Internet Explorer 4. Wer den Internet Explorer 5 installiert, muß auf das Objekt verzichten.
5.1
Das Objekt-Modell kennenlernen
Das Shell.Application Objekt kann einfach oder komplex sein, je nachdem, wie tief Sie einsteigen wollen. Für den Anfang bietet es ein gutes Dutzend höchst interessanter Methoden, die ohne weiteres Nachdenken einsetzbar sind.
Bild 5.1: Das Objekt-Modell des Shell-Application-Objekts
120
Kapitel 5: Zugriff auf die Webansicht: Shell.Application
Wer mehr erreichen möchte, kann außerdem mit dem Objekt Shell.Application tief in die Windows-Webansicht einsteigen. Alle Ordner, Dateien und sogar die einzelnen Kontextmenübefehle dieser Dateien sind über das Shell.Application-Objekt erreichbar.
5.2
Die Service-Funktionen des Shell.Application-Objekts
Die folgende Tabelle listet alle Funktionen auf, die Sie mit dem Shell.Application-Objekt sofort einsetzen können, ohne sich größere Gedanken über das Objektmodell machen zu müssen. Alle nicht besonders gekennzeichneten Funktionen stehen ab SHELL32.DLL Version 4.71 zur Verfügung. Die mit (5.0) gekennzeichneten Funktionen sind erst ab SHELL32.DLL Version 5.00 verfügbar (Windows 2000). Befehl
(5.0) Wahr, wenn der angemeldete Benutzer den genannten Dienst beenden kann Stellt alle sichtbaren Fenster überlappend dar Ruft ein Modul der Systemsteuerung auf Löst den Undock-Mechanismus bei eingedockten Notebooks aus Öffnet ein Explorerfenster Öffnet das Ausführen-Dialogfenster Sucht nach Computern Sucht nach Dateien (5.0) Sucht nach Druckern (5.0) Universalbefehl, um Systeminformationen auszulesen Ruft die Windows-Hilfe auf (5.0) noch keine Funktion (5.0) True, wenn der genannte Dienst läuft Minimiert alle sichtbaren Fenster Öffnet Ordner im einspaltigen Explorer Aktualisiert den Inhalt des Startmenüs (5.0) Startet den benannten Dienst (5.0) Beendet den benannten Dienst Öffnet das Uhrzeit-Dialogfenster (5.0) Öffnet eine Datei und startet die zuständige Applikation (5.0) Zeigt eine der Standard-Browserleisten an Öffnet das Beenden-Dialogfenster Schaltet in den Standby-Modus Ordnet sichtbare Fenster nebeneinander an Ordnet sichtbare Fenster untereinander an Öffnet das Dialogfenster mit den Taskleisten-Eigenschaften Stellt alle mit MinimizeAll minimierten Fenster wieder in Originalgröße dar
Tab. 5.1: Wichtige Service-Funktionen des Shell.Application-Objekts
5.2
5.2.1
Die Service-Funktionen des Shell.Application-Objekts
121
Versionen und aktuelle Shell-Komponenten
Beinahe alle Funktionen der Windows-Shell stammen aus nur drei Dateien: COMCTL32.DLL, SHELL32.DLL und SHLWAPI.DLL. Da besonders die Windows-Shell (der Desktop und die Bedienelemente) in den letzten Jahren intensiv renoviert wurden, kursieren von diesen drei Dateien die unterschiedlichsten Versionen durch die Welt. Das ist ein kleines Problem, denn viele neue Funktionen werden erst mit aktuellsten Versionen dieser Dateien unterstützt. Aus diesem Grund habe ich für Sie den Versions-Dschungel durchleuchtet. Hier das Ergebnis: Datei/Versionsnummer
Windows 95/Windows NT 4.0 Internet Explorer 3.x Internet Explorer 4.0 Internet Explorer 4.1/Windows 98 Internet Explorer 5.0 Windows 2000 Internet Explorer 5.0 Windows 2000
Tab. 5.2: Versionen der Shell.Application-Bestandteile
Das folgende Script verrät Ihnen ohne weiteres Kopfzerbrechen, welche Versionen auf Ihrem Computer installiert sind und welches Betriebssystem bzw. welche Internet Explorer-Version sich daraus ergibt:
Bild 5.2: Ihr Script ermittelt den Versionsstand Ihres Betriebssystems ’ 5-1.VBS set fs = CreateObject("Scripting.FileSystemObject") ' Systemordner öffnen set system = fs.GetSpecialFolder(1) pfad = system.path ' Diese Dateien datei1 = pfad & datei2 = pfad & datei3 = pfad &
sind wichtig "\shell32.dll" "\shlwapi.dll" "\comctl32.dll"
Damit Sie die für Sie interessanten Funktionen sofort einsetzen können, habe ich für Sie einen Shell.Application-Werkzeugkasten gezimmert. Die Beispiele sind sofort lauffähig und können direkt in eigene Projekte übernommen werden.
5.3.1
CanStartStopService
Function CanStartStopService(ByVal ServiceName As String)
Diese Funktion ist nur bei Windows 2000 verfügbar und ermittelt, ob Sie die Berechtigung haben, einen bestimmten Dienst (wie in diesem Beispiel den DHCP-Dienst) zu steuern: ’ 5-2.vbs set IShellDispatch2 = CreateObject("Shell.Application") MsgBox "Kann P&P-Dienst gesteuert werden? " & _
Sub CascadeWindows ’ 5-3.vbs set IShellDispatch2 = CreateObject("Shell.Application") Call IShellDispatch2.CascadeWindows
5.3.3
ControlPanelItem
Sub ControlPanelItem(ByVal szDir As String)
Öffnet ein Systemsteuerungsmodul. Welche Module es bei Ihnen gibt, finden Sie leicht heraus. Starten Sie einfach im Startmenü mit Suchen und Dateien/Ordner eine festplattenweite Fahndungsaktion nach *.CPL. ’ 5-4.vbs set IShellDispatch2 = CreateObject("Shell.Application") Call IShellDispatch2.ControlPanelItem("main.cpl")
5.3.4
EjectPC
Sub EjectPC
Nur für Notebooks in Dockingstationen interessant: »undockt« den Computer so, als hätten Sie ihn aus der Dockingstation genommen. ’ 5-5.vbs set IShellDispatch2 = CreateObject("Shell.Application") Call IShellDispatch2.EjectPC
5.3.5
Explore
Sub Explore(ByVal vDir)
Öffnet einen beliebigen Ordner. Auch virtuelle Ordner sind erlaubt, zum Beispiel Codezahl 0 für den Desktop. Die vollständige Liste der Codezahlen finden Sie in Kapitel 6.2.3. ’ 5-6.vbs set IShellDispatch2 = CreateObject("Shell.Application") Call IShellDispatch2.Explore("C:\") Call IShellDispatch2.Explore(0)
124 5.3.6
Kapitel 5: Zugriff auf die Webansicht: Shell.Application
FileRun
Sub FileRun
Öffnet das Ausführen-Dialogfenster. ’ 5-7.vbs set IShellDispatch2 = CreateObject("Shell.Application") Call IShellDispatch2.FileRun
5.3.7
FindComputer
Sub FindComputer
Öffnet den Suchen-Dialog für Computer, sofern er installiert ist. ’ 5-8.vbs set IShellDispatch2 = CreateObject("Shell.Application") Call IShellDispatch2.FindComputer
5.3.8
FindFiles
Sub FindFiles
Öffnet das Suchen-Dialogfenster für Dateien/Ordner. ’ 5-9.vbs set IShellDispatch2 = CreateObject("Shell.Application") Call IShellDispatch2.FindFiles
5.3.9
FindPrinter
Sub FindPrinter(ByVal Name As String, ByVal location As String, ByVal model As String)
Öffnet das Suchen-Fenster für den Drucker-Dialog. Wird nur bei Windows 2000 unterstützt. Mit Name, location und model können Sie Vorgaben ins Dialogfenster schreiben. Alle drei Argumente sind optional und können also auch weggelassen werden. ’ 5-10.vbs set IShellDispatch2 = CreateObject("Shell.Application") Call IShellDispatch2.FindPrinter(Name, location, model)
5.3.10 GetSystemInformation Function GetSystemInformation(ByVal Name As String)
Liefert Informationen über das Betriebssystem. Verfügbar nur bei Windows 2000.
True, wenn Service verfügbar ist Doppelklickzeit in Millisekunden Art des Prozessors 3: x386 4: x486 5: Pentium 6: Pentium II 7: Pentium III Prozessorgeschwindigkeit in MHz Art des Prozessors Vorhandener RAM-Speicher in Byte
Tab. 5.3: Informationen über das Betriebssystem erfragen
5.3.11 Help Sub Help
Ruft die Windows-Hilfe auf. Falls bereits eine Instanz der Hilfe läuft, passiert gar nichts. ’ 5-13.vbs set IShellDispatch2 = CreateObject("Shell.Application") Call IShellDispatch2.Help
5.3.12 IsRestricted Function IsRestricted(ByVal Group As String, ByVal Restriction As String) As Long
Funktion, die zukünftig in dieser Form unterstützt werden soll und Rechte eines Benutzers liefert. Zur Zeit wird diese Funktion aber noch von keiner Windows-Version unterstützt. ’ 5-13.vbs set IShellDispatch2 = CreateObject("Shell.Application") MsgBox IShellDispatch2.IsRestricted(ByVal Group As String, ByVal Restriction As String)
126
Kapitel 5: Zugriff auf die Webansicht: Shell.Application
5.3.13 IsServiceRunning Function IsServiceRunning(ByVal ServiceName As String)
Prüft, ob ein bestimmter Dienst zur Zeit läuft. Verfügbar nur bei Windows 2000. ’ 5-14.vbs set shell = CreateObject("Shell.Application") MsgBox "Läuft DHCP? " & shell.IsServiceRunning("DHCP")
5.3.14 MinimizeAll Sub MinimizeAll
Minimiert alle Fenster und macht den Blick auf den Desktop frei. Nur liegengebliebene Dialogfenster bleiben sichtbar. ' 5-15.vbs set IShellDispatch2 = CreateObject("Shell.Application") Call IShellDispatch2.MinimizeAll
5.3.15 Open Sub Open(ByVal vDir)
Öffnet einen beliebigen Ordner oder virtuellen Ordner im einspaltigen einfachen Explorer. Siehe auch Explorer. ’ 5-16.vbs set IShellDispatch2 = CreateObject("Shell.Application") Call IShellDispatch2.Open("C:\") Call IShellDispatch2.Open(3) ’Systemsteuerung
5.3.16 RefreshMenu Sub RefreshMenu
Aktualisiert das Startmenü. ’ 5-17.vbs set IShellDispatch2 = CreateObject("Shell.Application") Call IShellDispatch2.RefreshMenu
5.3.17 ServiceStart Function ServiceStart(ByVal ServiceName As String, ByVal Persistent)
5.3
Beispielscripts für Shell.Application
127
Startet einen Dienst vorübergehend oder als ständige Einstellung. Verfügbar nur bei Windows 2000. set IShellDispatch2 = CreateObject("Shell.Application") MsgBox IShellDispatch2.ServiceStart(ByVal ServiceName As String, ByVal Persistent)
5.3.18 ServiceStop Function ServiceStop(ByVal ServiceName As String, ByVal Persistent)
Beendet einen Dienst vorübergehend oder als ständige Einstellung. Verfügbar nur bei Windows 2000. set IShellDispatch2 = CreateObject("Shell.Application") MsgBox IShellDispatch2.ServiceStop(ByVal ServiceName As String, ByVal Persistent)
5.3.19 SetTime Sub SetTime
Ruft das Dialogfenster auf, mit dem die Uhrzeit und das Datum eingestellt werden. ’ 5-18.vbs set IShellDispatch2 = CreateObject("Shell.Application") Call IShellDispatch2.SetTime
5.3.20 ShellExecute Sub ShellExecute(ByVal File As String, [ByVal vArgs], [ByVal vDir], [ByVal vOperation], [ByVal vShow])
Ruft Befehle einer Datei auf, die diese Datei in ihrem Kontextmenü anbietet. Damit können Dateien mit dem Standardprogramm geöffnet werden. Verfügbar nur bei Windows 2000. Das nächste Script öffnet die Datei C:\TEST.TXT mit dem Programm, das für TXT-Dateien zuständig ist. Die Datei öffnet sich in einem maximierten Fenster: ’ 5-19.vbs set IShellDispatch2 = CreateObject("Shell.Application") Call IShellDispatch2.ShellExecute("C:\TEST.TXT",,,,3)
Argument
Beschreibung
File vArgs
Name der Datei Argumente, die an die Datei geliefert werden sollen. Sinnvoll nur, wenn Sie als File ein Programm angeben
128
Kapitel 5: Zugriff auf die Webansicht: Shell.Application
Argument
Beschreibung
vDir
Verzeichnis, in dem File liegt (falls Sie bei File keinen vollständigen Pfadnamen angegeben haben) vOperation Befehl aus dem Kontextmenü, den das Script ausführen soll. Wird kein Befehl angegeben, dann wird der Standardbefehl gewählt. Das ist in der Regel der Befehl Öffnen. Sie könnten ebenso gut auch Standardbefehlsnamen angeben, zum Beispiel print, um die Datei auszudrucken. vShow Art des Fensters: 0: unsichtbar ausführen 1: normale Größe 2: Minimiert 3: Maximiert 4: Letzte Fenstereinstellung 5: Wiederherstellen 7: Minimiert. Aktives Fenster bleibt aktiv 10: Vorgabe der Datei/des Programms übernehmen Tab. 5.4: Argumente, mit denen Sie den Befehl füttern können
5.3.21 ShowBrowserBar Function ShowBrowserBar(ByVal bstrClsid As String, ByVal bShow)
Kann von Scripts aus nicht angesprochen werden.
5.3.22 ShutdownWindows Sub ShutdownWindows
Aktiviert den Windows-Beenden-Dialog. ’ 5-20.vbs set IShellDispatch2 = CreateObject("Shell.Application") Call IShellDispatch2.ShutdownWindows
5.3.23 Suspend Sub Suspend
Aktiviert den Standby-Modus, sofern aktiviert, und ohne weitere Rückfragen. ’ 5-21.vbs set IShellDispatch2 = CreateObject("Shell.Application") Call IShellDispatch2.Suspend
5.3
Beispielscripts für Shell.Application
5.3.24 TileHorizontally Sub TileHorizontally
Ordnet die Fenster nebeneinander an. ’ 5-22.vbs set IShellDispatch2 = CreateObject("Shell.Application") Call IShellDispatch2.TileHorizontally
5.3.25 TileVertically Sub TileVertically
Ordnet die Fenster untereinander an. ’ 5-23.vbs set IShellDispatch2 = CreateObject("Shell.Application") Call IShellDispatch2.TileVertically
5.3.26 TrayProperties Sub TrayProperties
Öffnet die Eigenschaften-Dialogseite der Taskleiste. set IShellDispatch2 = CreateObject("Shell.Application") Call IShellDispatch2.TrayProperties
5.3.27 UndoMinimizeALL Sub UndoMinimizeALL
Macht alle mit MinimzeAll unsichtbar gemachten Fenster wieder sichtbar. ’ 5-25.vbs set IShellDispatch2 = CreateObject("Shell.Application") Call IShellDispatch2.MinimizeALL MsgBox "Wir machen den Weg frei..." Call IShellDispatch2.UndoMinimizeALL
129
131
6
Zugriff auf die Webansicht: Shell.Application
Das Shell.Application-Objekt kann weitaus mehr, als nur die Service-Funktionen aus dem vorangegangenen Kapitel bereitzustellen. Es ist Ihre Geheimtür in die versteckte Welt der Ordner und Dateien aus Sicht des Explorers. Ihre Scripts haben also zwei ganz unterschiedliche Optionen, um mit Dateien und Ordnern zu hantieren:
Entweder greifen Sie auf die Funktionen des Scripting.FileSystemObject zu. Dieses Objekt haben Sie bereits in Kapitel 4 kennengelernt. Seine Funktionen sind speziell für Scripts geschaffen worden, und dieses Objekt ist standardmäßig immer vorhanden, wenn Sie den WSH installiert haben.
Oder aber Sie machen es wie Windows selbst und verwenden das Shell.Application-Objekt. Durch dieses Objekt stehen Ihnen alle Funktionen zur Verfügung, die auch der normale Explorer nutzt. Die Möglichkeiten dieses Objekts gehen in vielen Bereichen weit über die des Scripting.FileSystemObject hinaus. Allerdings ist das Shell.Application-Objekt nur bei Windows 98 und bei Windows 2000 vorhanden. Tip: Shell.Application-Objekt nachrüsten Das Shell.Application-Objekt kann auch nachgerüstet werden: Bei Windows 95 und NT 4.0 genügt es, den Internet Explorer 4 zu installieren. Der Internet Explorer 5 dagegen bringt das Shell.Application-Objekt nicht mit.
6.1
Auf Ordner zugreifen: das Folder-Objekt
Kernstück des Shell.Application-Objekts ist das Folder-Objekt. Es repräsentiert einen beliebigen Ordner. Bei diesem Ordner muß es sich – im Gegensatz zum Scripting.FileSystemObject – nicht um einen regulären Dateiordner handeln. Auch virtuelle Ordner wie die Systemsteuerung oder das Schriftarten-Fenster werden unterstützt. Wie Sie virtuelle Ordner ansprechen, ist Thema in Kapitel 6.2.3.
132
Kapitel 6: Zugriff auf die Webansicht: Shell.Application
Bild 6.1: Mit Shell.Application auf Ordner und Objekte zugreifen
Die wichtigste Frage ist also: Wie erhält man überhaupt ein Folder-Objekt? Viele Wege führen ans Ziel:
Verwenden Sie die Funktionen BrowseForFolder oder NameSpace, um einen beliebigen Ordner anzusprechen und ein Folder-Objekt zu bekommen. Beispielscripte finden Sie in Kapitel 6.1.1.
Klinken Sie sich in einen bereits geöffneten Explorer ein, und »stehlen« Sie dessen FolderObjekt. Sie können so in laufende Explorer eingreifen.
Öffnen Sie scriptgesteuert selbst einen Explorer, stellen Sie darin den gewünschten Ordner ein, und greifen Sie auf das Folder-Objekt des Explorers zu. Beispiele erwarten Sie in Kapitel 6.2.4.
6.1.1
Auf ein unsichtbares Folder-Objekt zugreifen
NameSpace liefert auf Wunsch das Folder-Objekt eines beliebigen Ordners zurück. So einfach listen Sie damit den Inhalt eines Ordners auf: ’ 6-1.vbs set shell = CreateObject("Shell.Application") ’ auf Ordner C: zugreifen set folder = shell.NameSpace("C:\") ’ Inhalt des Ordners erfragen set folderitems = folder.items ’ Alle Inhalte auflisten
6.1
Auf Ordner zugreifen: das Folder-Objekt
133
for each folderitem in folderitems liste = liste & folderitem.path & vbCr next MsgBox liste
Sie können den Ordner auch bequem per Dialogfenster aussuchen. Dafür ist BrowseForFolder zuständig:
Bild 6.2: Bequem per Dialogfenster Ordner aussuchen ’ 6-2.vbs set shell = CreateObject("Shell.Application") ’ auf Ordner zugreifen set folder = shell.BrowseForFolder(0,"Ordner aussuchen!",0,"C:\") ’ Inhalt des Ordners erfragen set folderitems = folder.items ’ Alle Inhalte auflisten for each folderitem in folderitems liste = liste & folderitem.path & vbCr next MsgBox liste
Zusätzlich zu den beiden Funktionen BrowseForFolder und NameSpace können Sie außerdem auch auf das Folder-Objekt zugreifen, das in einem sichtbaren Explorerfenster angezeigt wird. Diese Variante stelle ich Ihnen etwas weiter unten in Kapitel 6.2.4 vor. Konzentrieren Sie sich zunächst auf das Folder-Objekt selbst: Was kann man damit bewerkstelligen?
134 6.2
Kapitel 6: Zugriff auf die Webansicht: Shell.Application
Der Inhalt eines Ordners: das FolderItem-Objekt
Allein für sich nützt Ihnen das Folder-Objekt nur wenig. Es ist nur ein Container, und wirklich interessant sind die Objekte darin. Alles, was der Ordner enthält, wird durch FolderItem-Objekte repräsentiert. Dieses Objekt enthält die wirklich wichtigen Informationen. Wie Sie alle FolderItem-Objekte eines Ordners auflisten, haben Sie gerade gesehen: Die Items-Eigenschaft des Folder-Objekts liefert eine FolderItems-Sammlung zurück. Die können Sie anschließend mit for each...next durchlaufen und nacheinander alle FolderItem-Objekte herauspicken.
6.2.1
Direkt ein FolderItem-Objekt ansprechen
Viel häufiger jedoch wollen Sie wahrscheinlich direkt ein FolderItem-Objekt ansprechen: eine bestimmte Datei zum Beispiel, oder einen Ordner. Genau das ist möglich: Verbinden Sie sich zuerst über NameSpace mit dem Ordner, in dem das Objekt liegt, und greifen Sie dann über ParseName auf das FolderItem-Objekt zu. Das nächste Script liefert eine universelle Funktion, die das erledigt. Stellen Sie nur sicher, daß es die Dateien und Ordner auch wirklich gibt, auf die das Script zugreifen will: ’ 6-3.vbs MsgBox GetItem("C:\").Name MsgBox GetItem("C:\WINDOWS").Name MsgBox GetItem("C:\MSDOS.SYS").Name function GetItem(pfad) ’ pfadname und dateiname trennen, falls möglich if not right(pfad,1)="\" then dateiname = mid(pfad, InstrRev(pfad, "\")+1) if Instr(dateiname, ".")=0 then pfadname = pfad dateiname = "" else pfadname = left(pfad, InstrRev(pfad, "\")) end if else pfadname = pfad end if set shell = CreateObject("Shell.Application") set folder = shell.NameSpace(pfadname) if dateiname = "" then set GetItem = Self(folder) else
6.2
Der Inhalt eines Ordners: das FolderItem-Objekt
135
set GetItem = folder.ParseName(dateiname) end if end function function Self(obj) title = obj.title set folderitems = obj.parentfolder.items for each folderitem in folderitems if folderitem.isFolder then if folderitem.GetFolder.Title=title then exit for end if end if next set self = folderitem end function
Wenn Sie keine Lust auf Details haben, dann setzen Sie die Funktion GetItem einfach in Ihren Projekten ein. Das Ergebnis ist entweder das FolderItem-Objekt des gewünschten Ordners oder der gewünschten Datei. Oder es wird ein leeres Objekt zurückgeliefert. Dann wissen Sie: Das gewünschte Objekt existiert nicht. Mit TypeName können Sie das zurückgelieferte Objekt prüfen und auf leere Objekte reagieren: If TypeName(objekt) = "Nothing" then MsgBox "Leeres Objekt!" Else MsgBox "Objekt existiert!" End if
Vielleicht interessieren Sie sich aber auch dafür, wie GetItem eigentlich seine Aufgabe meistert. Hier die Details: GetItem akzeptiert Ordner- und Dateinamen und splittet dann den Ordner- und den Dateianteil. Anschließend verbindet es sich via NameSpace mit dem Ordner. Wurde ein Dateipfad übergeben, dann ruft das Script anschließend ParseName auf, um das FolderItem-Objekt der Datei zu bekommen. Sie bekommen das FolderItem-Objekt also schnell und direkt über das Zusammenspiel zwischen NameSpace und ParseName. Etwas schwieriger ist das, wenn Sie einen Ordner angegeben haben. Das Folder-Objekt des Ordners bietet nämlich keinen Weg an, um an dessen FolderItem-Objekt im übergeordneten Ordner heranzukommen. Deshalb setzt das Script die zusätzliche Funktion Self ein. Die ermittelt das FolderItem-Objekt eines Folders.
136
Kapitel 6: Zugriff auf die Webansicht: Shell.Application
Bild 6.3: Zusammenhänge zwischen Ordnern und deren Inhalt
Als »Erkennungszeichen« liest diese Funktion zunächst den Titel des Folder-Objekts und merkt ihn sich. Danach verschafft es sich via ParentFolder Zugriff auf den übergeordneten Ordner. Anschließend durchläuft eine for each...next-Schleife alle FolderItem-Objekte des übergeordneten Ordners. Eins davon muß dem gesuchten Ordner entsprechen. Mit isFolder prüft das Script bei jedem FolderItem-Objekt, ob es sich um einen Ordner handelt. Falls ja, dann erfragt es über GetFolder.Title dessen Titel und vergleicht ihn mit dem Titel des gesuchten Ordners. Stimmen beide überein, dann ist der gesuchte Ordner im übergeordneten Ordner gefunden, und die Schleife wird abgebrochen. Das FolderItem-Objekt ist gefunden. Bei Windows 2000 ist dieser relativ aufwendige Umweg nicht nötig. Hier bietet das Folder-Objekt über seine Eigenschaft Self von sich aus das gesuchte FolderItem-Objekt an, so daß sich das Script stark vereinfacht: ’ 6-4.vbs MsgBox GetItem("C:\").Name MsgBox GetItem("C:\WINDOWS").Name MsgBox GetItem("C:\MSDOS.SYS").Name function GetItem(pfad) ' pfadname und dateiname trennen, falls möglich if not right(pfad,1)="\" then dateiname = mid(pfad, InstrRev(pfad, "\")+1) if Instr(dateiname, ".")=0 then pfadname = pfad dateiname = "" else pfadname = left(pfad, InstrRev(pfad, "\")) end if else pfadname = pfad end if
6.2
Der Inhalt eines Ordners: das FolderItem-Objekt
137
set shell = CreateObject("Shell.Application") set folder = shell.NameSpace(pfadname) if dateiname = "" then set GetItem = folder.self else set GetItem = folder.ParseName(dateiname) end if end function
6.2.2
Mit BrowseForFolder Ordnernamen erfragen
Dank der neuen Self-Eigenschaft bei Windows 2000 läßt sich hier die BrowseForFolder-Funktion endlich bequem dazu einsetzen, um Ordnernamen zu erfragen. Bei Windows 9x und NT geht dies nur über den Umweg des übergeordneten Ordners, so wie oben beschrieben.
Bild 6.4: Bei Windows 2000 können Scripts kinderleicht nach Ordnernamen fragen
So erfragen Sie bei Windows 2000 einen Ordnernamen: ’ 6-5.vbs set shell = CreateObject("Shell.Application") set folder = shell.BrowseForFolder(0, _ "Bitte suchen Sie sich einen Ordner aus!", 0, "C:\") MsgBox folder.self.path
138 6.2.3
Kapitel 6: Zugriff auf die Webansicht: Shell.Application
Virtuelle Ordner über Codezahlen ansprechen
Sowohl BrowseForFolder als auch NameSpace kommen nicht nur mit normalen Ordnern zurecht. Beide Funktionen akzeptieren anstelle eines Pfadnamens wahlweise auch eine Codezahl, um einen der vielen virtuellen Windows-Ordner anzusprechen. Codezahl und Beschreibung
Virtueller Ordner
0: Desktop 1: Internet Explorer 2: Programme
Pfadname zum Ordner, der den Desktop repräsentiert ::{871C5380-42A0-1069-A2EA-08002B30309D} Pfadname zum Ordner, in dem die persönlichen Programm-Links des Programme-Menüs liegen ::{21EC2020-3AEA-1069-A2DD-08002B30309D} ::{2227A280-3AEA-1069-A2DE-08002B30309D} Pfadname zum Ordner, in dem die persönlichen eigenen Dateien abgelegt werden Ordner, in dem die persönlichen Internet-Favoriten abgelegt werden Ordner, in dem die persönlichen Autostart-Programme hinterlegt sind Ordner, in dem die kürzlich verwendeten Dokumente hinterlegt sind Ordner, in dem die Senden an-Menü Ziele gespeichert sind ::{645FF040-5081-101B-9F08-00AA002F954E} Ordner, in dem das persönliche Startmenü gespeichert ist Ordner, in dem die persönlichen Desktop-Dateien lagern ::{20D04FE0-3AEA-1069-A2D8-08002B30309D} ::{208D2C60-3AEA-1069-A2D7-08002B30309D} Ordner, in dem nachträglich zur Netzwerkumgebung hinzugefügte Links lagern Systemweiter Ordner mit den installierten Schriftarten Ordner mit den persönlichen Dokumentenvorlagen Ordner mit den Startmenüeinträgen, die für alle Benutzer gelten Ordner mit den Programmlinks, die für alle Benutzer gelten Ordner mit den Autostart-Programmen, die für alle Benutzer gelten Ordner mit den Desktop-Elementen, die für alle Benutzer gelten Ordner mit den persönlichen Anwendungsdaten Ordner mit den persönlichen Zusätzen zum Drucker-Ordner Ordner, in denen persönliche Applikationsdaten gespeichert werden Ordner mit den Favoriten für alle Benutzer Ordner für den persönlichen Internet-Cache Ordner mit den persönlichen Internet-Cookies Ordner mit den persönlichen Internetseiten, die kürzlich besucht wurden Ordner mit Anwendungsdaten für alle Benutzer Windows-Ordner Systemordner Ordner mit den Programm-Installationen Ordner, in dem die persönlichen Bilder abgespeichert werden
Ordner, in dem die persönlichen Einstellungen des aktuellen Benutzers gespeichert werden Systemordner Ordner mit den gemeisam genutzten Komponenten installierter Programme Ordner mit den Dokumentenvorlagen für alle Benutzer Dokumentenordner für alle Benutzer Programmgruppe »Verwaltung« für alle Benutzer Programmgruppe »Verwaltung« für aktuellen Benutzer ::{7007ACC7-3202-11D1-AAD2-00805FC1270E}
Tab. 6.1: Virtuelle Ordner über Codezahlen und GUIDs ansprechen
Tip: Informationen – bei Windows 2000 am meisten! Nicht alle Codezahlen werden bei Windows 9x oder NT funktionieren. Erst Windows 2000 bringt das volle Set an Informationen mit.
Die meisten Einträge entsprechen tatsächlichen Dateisystem-Ordnern, die lediglich eine besondere Aufgabe erfüllen. Wollen Sie zum Beispiel bei Windows 2000 den tatsächlichen Ordnernamen Ihres Startmenüs erfragen, dann geht das beispielsweise so: ’ 6-6.vbs set shell = CreateObject("Shell.Application") set folder = shell.NameSpace(11) MsgBox folder.title & ": " & folder.self.path
Bild 6.5: Systemordner und deren augenblicklichen Aufenthaltsort bestimmen
Bei Windows 9x und NT ist dazu wieder der Umweg erforderlich – so wie oben beschrieben –, denn hier gibt es die Self-Eigenschaft noch nicht. Um die Pfadnamen spezieller Ordner zu ermitteln, ist es deshalb oft einfacher, die SpecialFolders-Funktion des Wscript.Shell-Objekts zu nutzen. Die funktioniert nämlich auch bei Windows 9x und NT schnell und direkt. Informationen darüber finden Sie in der Hilfedatei auf der Buch-CD: \wsh\dokumentation\scripthostdocu.exe. Einige Ordner der Tabelle sind »echte« virtuelle Ordner, die Sie nirgendwo auf der Festplatte finden. Die Systemsteuerung gehört zum Beispiel dazu. Solche virtuellen Ordner können deshalb nicht mit einem normalen Pfadnamen bezeichnet werden. Statt dessen verwendet Windows für diese Ordner eine GUID, eine global eindeutige IDNummer. Sie steht immer in geschweiften Klammern.
140
Kapitel 6: Zugriff auf die Webansicht: Shell.Application
Die Code-Kennzahl aus der Tabelle oben ist wichtig, wenn Sie einen virtuellen Ordner via NameSpace oder BrowseForFolder ansprechen wollen. Die GUID in den geschweiften Klammern dagegen ist wichtig, wenn Sie den virtuellen Ordner über den normalen Explorer öffnen möchten.
Bild 6.6: Inhalt der Systemsteuerung auflisten
Das folgende Script greift zum Beispiel auf die Systemsteuerung zu und listet den Inhalt auf: ’ 6-7.vbs set shell = CreateObject("Shell.Application") set folder = shell.NameSpace(3) for each object in folder.Items list = list & object.Name & vbCr next MsgBox list
Auf ähnliche Weise könnten Sie auch das BrowseForFolder-Dialogfenster auf einen virtuellen Ordner voreinstellen. Das nächste Script verwendet als Wurzelverzeichnis den Arbeitsplatz: set shell = CreateObject("Shell.Application") set folder = shell.BrowseForFolder(0,"Arbeitsplatz",0,17) MsgBox TypeName(folder)
6.2
Der Inhalt eines Ordners: das FolderItem-Objekt
141
Bild 6.7: Wurzelverzeichnis des Dialogfensters auf den Arbeitsplatz beschränken
6.2.4
Mit GUIDs virtuelle Ordner im Explorer sichtbar machen
Wofür sind die GUIDs in den geschweiften Klammern gut? GUIDs sind – auch wenn diese Tatsache kaum bekannt ist – mit dem Explorer zu erreichen, genauso wie echte Ordner. Die GUIDs lassen sich sogar zu echten verschachtelten Pfadnamen zusammensetzen. Genau das kann ausgesprochen praktisch sein, denn Sie werden gleich sehen, daß es neben den beiden Befehlen BrowseForFolder und NameSpace noch eine dritte Möglichkeit gibt, sich ein Folder-Objekt zu verschaffen. Bevor Sie diese dritte Möglichkeit ausprobieren können, brauchen Sie jedoch eine Möglichkeit, virtuelle Ordner über den Explorer zu öffnen. Der »NameSpace« des Explorers ist der Desktop. Alles, was auf dem Desktop zu sehen ist, kann über den Explorer erreicht werden. Aus der Tabelle oben wissen Sie, daß die Netzwerkumgebung die GUID {208D2C60-3AEA-1069-A2D7-08002B30309D} besitzt. Weil das Symbol der Netzwerkumgebung direkt auf dem Desktop liegt, können Sie die Netzwerkumgebung sofort im Explorer anzeigen lassen: 1. Wählen Sie im Startmenü Ausführen. Die Befehlszeile öffnet sich. 2. Geben Sie nun ein: ::{208D2C60-3AEA-1069-A2D7-08002B30309D} [Enter]. Ein Explorerfenster öffnet sich und zeigt tatsächlich die Netzwerkumgebung an. Tip: NameSpaces – so funktioniert die Sache Normale Dateisystempfade sind nur eine Methode, um mit dem Explorer Informationen anzuzeigen. Stellen Sie zwei umgekehrte Schrägstriche voran, dann kann der Explorer auch UNC-Netzwerkpfade anzeigen, zum Beispiel so: \\COMPI1\ORDNER12. Wollen Sie dagegen mit dem Explorer eine Webseite betrachten, dann ist das Präfix http:// wichtig. Dies alles ist weitgehend bekannt. Unbekannter ist, daß Sie mit dem Präfix :: direkt virtuelle Ordner ansprechen. Generell gilt: Der Explorer kann universell jede nur erdenkliche Art von Information anzeigen und braucht lediglich Zugang zum entsprechenden Informationssystem, dem »NameSpace«.
142
Kapitel 6: Zugriff auf die Webansicht: Shell.Application
Wenn Sie dasselbe allerdings mit der Systemsteuerung versuchen, dann scheitert die Sache. Mit ::{21EC2020-3AEA-1069-A2DD-08002B30309D} weiß Windows ganz offenbar nichts anzufangen. Und wieso? Weil die Systemsteuerung nicht direkt auf dem Desktop liegt! Hier ist also dasselbe Malheur passiert als wenn Sie im vertrauten Dateisystem versucht hätten, einfach einen Ordnernamen anzugeben. Das dürfen Sie nicht, auch im Dateisystem gibt es eine Wurzel: das Laufwerk. Wo Sie also im Dateisystem c:\ordner\unterordner angeben, um zu unterordner zu gelangen, müssen Sie im »virtuellen« Windows-Dateisystem ebenfalls den kompletten Pfad angeben. Die Systemsteuerung ist zum Beispiel im Arbeitsplatz-Fenster zu sehen. Das Arbeitsplatz-Fenster wiederum ist auf dem Desktop zu sehen, der Wurzel des virtuellen Dateisystems. Weil das Arbeitsplatz-Fenster die GUID ::{20D04FE0-3AEA-1069-A2D8-08002B30309D} trägt, lautet der komplette Pfadname zur Systemsteuerung: ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA1069-A2DD-08002B30309D}. Geben Sie diese Kolonne in Ihr Ausführen-Fenster ein, dann öffnet der Explorer tatsächlich die Systemsteuerung.
Bild 6.8: Eine Systemsteuerung völlig ohne Ballast und Menüs
Natürlich werden Sie sich in der Praxis hüten, die Systemsteuerung auf solch verschlungenen Wegen zu öffnen, denn schließlich geht es auch einfacher. Interessant werden die sonderbaren GUIDs erst für Ihre Scripts, denn die können nun selbst einen Explorer öffnen, ihn zum virtuellen Ordner navigieren lassen und anschließend das Folder-Objekt herauspicken. Im Gegensatz zu BrowseForFolder und NameSpace bekommen Sie so kein »nacktes« Folder-Objekt, sondern eines, das sichtbar ist. Das hat weitreichende Konsequenzen! Das folgende Script zeigt die grundlegende Technik und öffnet scriptgesteuert in einem Explorerfenster die Systemsteuerung. Weil das Script den Explorer selbst »erzeugt« hat, kann es an seinen internen Schaltelementen herumfummeln und stellt im Beispiel alle Symbolleisten und die Menüleiste ab:
Das Ergebnis ist eine reine Systemsteuerung, ohne jeglichen Schnickschnack. Doch Ihre Scripts können noch weitaus mehr. Weil der Inhalt des Explorerfensters eigentlich nichts weiter ist als ein Folder-Objekt, kann Ihr Script dieses genauso fernsteuern wie jedes andere Folder-Objekt, das Sie sich vielleicht über BrowseForFolder oder NameSpace verschafft haben. Nur ist das Folder-Objekt dabei sichtbar: set ie = CreateObject("InternetExplorer.Application") ie.statusbar = false ie.toolbar = false ie.visible = true ie.navigate "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}" _ & "\::{21EC2020-3AEA-1069-A2DD-08002B30309D}" MsgBox "Ich markiere jetzt alles, was mit ""S"" beginnt..." for each item in ie.document.folder.items if lcase(left(item.name,1)) = "s" then ie.document.selectItem item, 1+8 end if next WScript.Sleep 3000 MsgBox "Ich füge alles dazu, was mit ""A"" beginnt..." for each item in ie.document.folder.items if lcase(left(item.name,1)) = "a" then ie.document.selectItem item, 1+8 end if next WScript.Sleep 3000 MsgBox "Jetzt markiere ich nur Ordner!" deleteAll = 4 for each item in ie.document.folder.items if item.isFolder then ie.document.selectItem item, 1+8+deleteAll deleteAll = 0 end if next WScript.Sleep 3000 MsgBox "Jetzt schließe ich alles wieder..." ie.quit
144
Kapitel 6: Zugriff auf die Webansicht: Shell.Application
Was dieses Script leistet, scheint auf den ersten Blick unglaublich: Es öffnet die Systemsteuerung und demonstriert dann mit spielerischer Leichtigkeit, wie Ihr Script ferngesteuert im Fenster der Systemsteuerung einzelne Einträge markieren kann. Es soll an dieser Stelle nur ein erstes Appetithäppchen sein und zeigen, wieso es sich auf jeden Fall lohnt, das Shell.Application-Objekt mit seinen Folder- und FolderItem-Objekten näher kennenzulernen. Damit gelingen Ihnen nämlich Eingriffe in lebende Explorer, die mit dem Scripting.FileSystemObject absolut unmöglich wären.
6.3
Der innere Aufbau des FolderItem-Objekts
Jetzt, wo Sie wissen, wie Sie auf ein FolderItem-Objekt zugreifen, schauen Sie sich näher an, welche Informationen darin schlummern: Funktion
Beschreibung
Application ExtendedProperty GetFolder GetLink InvokeVerb InvokeVerbEx IsBrowsable IsFileSystem IsFolder IsLink ModifyDate Name Parent Path Size Type Verbs
(5.0) Liefert geheime Zusatzinformation über Objekt Liefert das Folder-Objekt zurück, wenn es sich bei diesem Eintrag um einen Ordner handelt Liefert das Link-Objekt zurück, wenn es sich bei diesem Eintrag um eine Verknüpfung handelt Ruft einen Kontextmenü-Befehl auf (5.0) Öffnet die Datei True, wenn das Objekt selbst Objekte enthält True, wenn das Objekt Teil des Dateisystems ist True, wenn das Objekt ein Ordner ist True, wenn das Objekt ein Link ist Datum und Zeit, an dem das Objekt zuletzt geändert wurde Name des Objekts Übergeordnetes Objekt Pfadname des Objekts Größe des Objekts Typ des Objekts Kontextmenübefehle des Objekts als FolderItemVerbs-Objekt
Tab. 6.2: Das FolderItem-Objekt
6.3.1
ExtendedProperty
Function ExtendedProperty(ByVal bstrPropName As String)
Diese Funktion existiert nur bei Windows 2000. Sie ermöglicht es, an die versteckten Zusatzinformationen einer Datei heranzukommen. Nehmen Sie sich als Beispiel eine Word-Datei. Wenn Sie diese Datei im Explorer mit der rechten Maustaste anklicken und Eigenschaften wählen, dann öff-
6.3
Der innere Aufbau des FolderItem-Objekts
145
net sich ein Dialogfenster. Das Register Datei-Info liefert eine Vielzahl zusätzlicher Informationen über diese Datei. Tip: Zusatzinfos – nicht bei jedem Dateityp vorhanden Ob ein bestimmter Dateityp Zusatzinformationen unterstützt, können Sie sofort ausprobieren. Klicken Sie einfach eine Datei des fraglichen Typs mit der rechten Maustaste an, und wählen Sie Eigenschaften. Wenn das Dialogfenster ein Register namens Datei-Info anbietet, dann können zusätzliche Informationen angeheftet werden. Das Dialogfenster listet die vorhandenen Infos nicht nur auf, sondern kann auch dazu dienen, die Zusatzinformationen zu ändern.
Um an diese Informationen heranzukommen, verwenden Sie (bei Windows 2000) ExtendedProperty. Bei älteren Windows-Versionen können Sie alternativ GetDetailsOf einsetzen (siehe unten). Zunächst brauchen Sie ein Versuchskaninchen. Das nächste Beispiel geht davon aus, daß Sie eine Word-Datei als C:\BEISPIEL.DOC gespeichert haben.
Bild 6.9: Zusatzinformationen in eine Datei eintragen
Damit Ihr Script überhaupt Zusatzinformationen auslesen kann, müssen solche natürlich vorhanden sein. Tragen Sie deshalb als nächstes Zusatzinformationen ein: 1. Suchen Sie sich im Explorer die Datei C:\BEISPIEL.DOC heraus, und klicken Sie sie mit der rechten Maustaste an. Dann wählen Sie Eigenschaften. 2. Klicken Sie auf das Register Datei-Info. Jetzt sehen Sie alle Zusatzinformationen, die dieser Dateityp unterstützt. 3. Klicken Sie auf die Information Autor, und tragen Sie Ihren Namen ein, falls er noch nicht im Feld steht. Dann klicken Sie auf OK.
146
Kapitel 6: Zugriff auf die Webansicht: Shell.Application
Tip: Bei mir gibt’s kein Dateiinfo-Register! Das Dateiinfo-Register erscheint nicht bei allen Dateitypen. Word-Dokumente bieten es an, einfache TextDokumente aber zum Beispiel nicht. Wenn Sie ein Word-Dokument zum ersten Mal speichern, also neu anlegen, dann besitzt es interessanterweise noch kein Dateiinfo-Register. Dieses Register erscheint erst dann, wenn Sie die Datei schließen, also nicht in Word anzeigen. Solange eine Datei in Gebrauch ist, verschwindet das Dateiinfo-Register!
Nun können Sie per Script herausfinden, welcher Autor ein bestimmtes Word-Dokument verfaßt hat – jedenfalls dann, wenn Sie Windows 2000 verwenden: ’ 6-11.vbs set FolderItem = GetItem("C:\BEISPIEL.DOC") Autor = FolderItem.ExtendedProperty("Author") MsgBox "Autor des Dokumentes: " & Autor function GetItem(pfad) ' pfadname und dateiname trennen, falls möglich if not right(pfad,1)="\" then dateiname = mid(pfad, InstrRev(pfad, "\")+1) if Instr(dateiname, ".")=0 then pfadname = pfad dateiname = "" else pfadname = left(pfad, InstrRev(pfad, "\")) end if else pfadname = pfad end if set shell = CreateObject("Shell.Application") set folder = shell.NameSpace(pfadname) if dateiname = "" then set GetItem = folder.self else set GetItem = folder.ParseName(dateiname) end if end function
Alle Autorennamen auflisten Das ist ausgesprochen nützlich. Vielleicht wollen Sie alle Winword-Dokumente auflisten, die von einer bestimmten Person stammen. Hier eine Lösung, die alle Winword-Dokumente im Ordner Eigene Dateien des aktuell angemeldeten Benutzers untersucht und dann die Namen der Autoren auflistet: ’ 6-12.vbs ’ Zugriff auf Dateien und Ordner via Shell: set shell = CreateObject("Shell.Application")
6.3
Der innere Aufbau des FolderItem-Objekts
147
' Speicher-Verzeichnis für Autorennamen: set dict = CreateObject("Scripting.Dictionary") ' Ordner "Eigene Dateien" öffnen ' Codenummer für Eigene Dateien lautet: 5 set folder = shell.NameSpace(5) ' alle Dateien in diesem Ordner auflisten: set folderitems = folder.items ' bisher gefunden: keine Dateien, keine Autoren: doccount = 0 authorcount = 0 ' alle Dateien untersuchen: for each folderitem in folderitems ' nur Winword-Dokumente berücksichtigen ' ist die Dateiextension "doc" ? if lcase(right(folderitem.path,3)) = "doc" then ' ja, DOC-Datei gefunden: doccount = doccount + 1 ' Autor auslesen: autor = FolderItem.ExtendedProperty("Author") ' ist Info verfügbar? if not autor = "" then ' ist dieser Autor schon in der Liste? if not dict.Exists(autor) then ' nein, aufnehmen! dict.Add autor, "dummy" authorcount = authorcount + 1 end if end if end if next ' Autorennamen ausgeben list = doccount & " DOC-Dateien gefunden, " & _ authorcount & " Autoren." & vbCr for each key in dict.keys list = list & key & vbCr next MsgBox list
Neu sind in diesem Beispiel zwei Dinge:
Erstens greift das Script nicht auf einen physischen Ordner zu, sondern auf einen der Windows-Spezialordner. Der Ordner Eigene Dateien kann je nach Windows-Installation an ganz unterschiedlichen Orten liegen. Das Script verwendet deshalb bei NameSpace keinen absoluten
148
Kapitel 6: Zugriff auf die Webansicht: Shell.Application
Pfad, sondern eine Codenummer. Die Codenummer 5 liefert immer das Folder-Objekt des Ordners Eigene Dateien zurück. Welche Codenummern es sonst noch gibt, verrät die Tabelle in Kapitel 6.2.3.
Zweitens verwendet das Script ein neues Objekt: Scripting.Dictionary. Es ist so etwas wie ein Mini-Nachschlagewerk. Das Script nutzt es, um darin die Autorennamen einzutragen. Der besondere Vorteil des Scripting.Dictionary-Objekts ist, daß dieses Objekt mit Exists blitzschnell prüfen kann, ob schon ein gleichnamiger Eintrag vorhanden ist. So wird jeder Autorenname nur ein einziges Mal gespeichert, auch wenn es viele Dokumente geben sollte, die aus der Feder dieses Autors stammen.
Bild 6.10: Dateien herausfischen, die von bestimmten Personen stammen
Herausfinden, welche Geheiminfos ein Dokument enthält Das Beispiel hat die Authors-Eigenschaft des Winword-Dokumentes verwendet. Woher weiß man aber, daß der Autorenname über Authors angesprochen wird, und welche weiteren Datei-Infos lassen sich über ExtendedProperty erreichen? Die folgende Tabelle verrät die Informationskategorien: Schlüsselwort
Bedeutung
Title (2) Subject (3) Author (4) Keywords (5) Comments (6) Template (7) Last Saved By (8) Revision Number (9) Total Editing Time (10) Last Printed (11) Create Time/Date (12) Last Saved Time/Date (13) Number of Pages (14) Number of Words (15) Number of Characters (16) Thumbnail (17) Name of Creating Application (18) Security (19)
Titel Thema Autor Stichwörter Kommentare Vorlage Zuletzt gespeichert von Revisionsnummer Gesamtbearbeitungszeit Zuletzt gedruckt am Erstellungsdatum Zuletzt gespeichert am Seitenzahl Wortanzahl Buchstabenzahl Vorschau Anwendung, die primär für das Erstellen dieses Dateityps zuständig ist Sicherheit
Tab. 6.3: Informationen, die in Dateien eingebettet werden können
6.3
Der innere Aufbau des FolderItem-Objekts
149
Allerdings hängt es von der Anwendung ab, Informationen in diesen Kategorien zu speichern. Die meisten Kategorien werden deshalb leer sein. Die Beispiele haben bisher die Eigenschaften direkt über ihren Namen erfragt. Das ist in Ordnung, aber nicht der effizienteste Weg. Vielseitiger ist, die gewünschte Information über ihre Kennzahl abzufragen. Diese Kennzahl heißt PID und ist in der Tabelle oben in Klammern angegeben. Neben der PID muß ExtendedProperty außerdem wissen, welche Informationsart Sie abfragen wollen (FMTID). Alle Eigenschaften aus der Tabelle oben stammen aus der Informationsart »Summary Information Property Set«. Sie werden gleich sehen, daß es noch eine ganze Reihe weiterer Geheimdetails gibt, auf die Ihr Script zugreifen kann. FMTID und PID ergeben zusammen die SCID, die eine Datei-Eigenschaft eindeutig festlegt. Schauen Sie sich an, wie Sie die Standardinformationen über die SCID erfragen. Die PID für den Autorennamen lautet genäß obiger Tabelle: 4. Die FMTID für die Standardeigenschaften heißt {F29F85E0-4FF9-1068-AB91-08002B27B3D9}. ’ 6-13.vbs set FolderItem = GetItem("C:\beispiel.doc") ' erste Variante: über Klartextnamen erfragen: name = folderitem.ExtendedProperty("Author") MsgBox "Autor: " & name ' zweite Variante: über PID erfragen: ' PID für Zeichenzahl: 16 ' ID für Summary Information: {F29F85E0-4FF9-1068-AB91-08002B27B3D9} fmtid = "{F29F85E0-4FF9-1068-AB91-08002B27B3D9}" pid = 4 scid = fmtid & "," & pid name = folderitem.ExtendedProperty(scid) MsgBox "Autor: " & name function GetItem(pfad) ' pfadname und dateiname trennen, falls möglich if not right(pfad,1)="\" then dateiname = mid(pfad, InstrRev(pfad, "\")+1) if Instr(dateiname, ".")=0 then pfadname = pfad dateiname = "" else pfadname = left(pfad, InstrRev(pfad, "\")) end if else pfadname = pfad end if set shell = CreateObject("Shell.Application")
150
Kapitel 6: Zugriff auf die Webansicht: Shell.Application
set folder = shell.NameSpace(pfadname) if dateiname = "" then set GetItem = folder.self else set GetItem = folder.ParseName(dateiname) end if end function
Noch mehr Geheiminformationen entdecken ExtendedProperty unterstützt in Wirklichkeit sehr viel mehr Informationskategorien als die, die im Summary-Report einer DOC-Datei angezeigt werden. Hier die Liste der unterstützten Kategorien (FMTIDs): FMTID
Die Storage-Eigenschaften beleuchten Details aus der Sicht des Dateisystems: PID 4 10 12 13 14
Objekt-Typ Angezeigter Objekt-Name Objekt-Größe Attribute Datum der letzten Änderung
Tab. 6.5: Storage-Eigenschaften einer Datei
So setzen Sie diese Informationen ein: ’ 6-14.vbs set FolderItem = GetItem("C:\beispiel.doc") ’ wir sind an Storage-Informationen interessiert: fmtid = "{B725F130-47EF-101A-A5F1-02608C9EEBAC}" name = CStr(FolderItem.ExtendedProperty(fmtid & ",10")) typ = CStr(FolderItem.ExtendedProperty(fmtid & ",4"))
6.3
Der innere Aufbau des FolderItem-Objekts
151
' Variablentyp wird von VBScript nicht unterstützt 'size = TypeName(FolderItem.ExtendedProperty(fmtid & ",12")) attribs = CStr(FolderItem.ExtendedProperty(fmtid & ",13")) writetime = CStr(FolderItem.ExtendedProperty(fmtid & ",14")) msg = name & vbCr & typ & vbCr & size & vbCr & attribs & vbCr & writetime MsgBox msg
function GetItem(pfad) ' pfadname und dateiname trennen, falls möglich if not right(pfad,1)="\" then dateiname = mid(pfad, InstrRev(pfad, "\")+1) if Instr(dateiname, ".")=0 then pfadname = pfad dateiname = "" else pfadname = left(pfad, InstrRev(pfad, "\")) end if else pfadname = pfad end if set shell = CreateObject("Shell.Application") set folder = shell.NameSpace(pfadname) if dateiname = "" then set GetItem = folder.self else set GetItem = folder.ParseName(dateiname) end if end function
Ausgerechnet die Size-Eigenschaft, die die Objektgröße angibt, kann auf diese Weise nicht erfragt werden. Windows liefert die Größe in einem Variablenformat zurück, das von VBScript nicht verstanden wird.
Bild 6.11: Detailinfos über beliebige Dateien erfragen
Insgesamt erfragen Sie die Dateisystem-Informationen besser über GetDetailsOf. Diese Funktion ist nicht nur einfacher zu handhaben, sondern sie funktioniert auch bei anderen Windows-Versionen und liefert die Dateigröße korrekt zurück.
152
Kapitel 6: Zugriff auf die Webansicht: Shell.Application
Shell-Details: Spezialisteninformationen Wer ganz besonders detailreiche Informationen über die Art eines Objekts wünscht, kann die Shell-Details erfragen. Die Shell-Details beantworten zum Beispiel die Frage, ob es sich bei dem FolderItem-Objekt um eine Datei, einen Ordner, ein Laufwerk oder gar ein virtuelles Objekt handelt. Allerdings wird spätestens hier klar, wo die Grenzen des Scripting liegen. Das Ergebnis dieser Abfrage ist nämlich ein Binärobjekt, und mit Binärobjekten kann der WSH eigentlich nicht umgehen. Bei Windows 2000 gibt es jedoch ein weiteres COM-Objekt namens ixsso.util, das eigentlich Teil des Index Servers ist. Dieses Objekt kann dazu mißbraucht werden, Binärdaten auszulesen. So funktioniert die Sache: ’ 6-15.vbs set shell = CreateObject("Shell.Application") set util = CreateObject("ixsso.Util") ’ erster Test: eine Datei set item = shell.NameSpace("C:\").ParseName("AUTOEXEC.BAT") MsgBox FindType(item) ’ zweiter Test: virtueller Ordner set item = shell.NameSpace(3).self MsgBox FindType(item) ’ dritter Test: ein Laufwerk set item = shell.NameSpace("C:\").self MsgBox FindType(item) ’ vierter Test: ein Netzwerkshare ' funktioniert natürlich nur, wenn dieser Netzwerkpfad existiert! set item = shell.NameSpace("\\win98\c").self MsgBox FindType(item) function FindType(folderitem) ' Klartextnamen der Typ-Kennzahlen codes = ",virt. Root,Datei,Verzeichnis,Anderes,3 1/2 Disk," _ & "5 1/4 Disk,Wechselplatte,Festplatte,Netzlaufwerk," _ & "CD-ROM,RAM-Disk,Anderes Laufwerk,Domäne,Server," _ & "Share,Netzwerk,," ' in ein Variablenfeld übertragen: ' codearray(2) steht jetzt z.B. für "Datei" codearray = Split(codes,",") ' wir sind an Storage-Informationen interessiert: fmtid = "{28636AA6-953D-11D2-B5D6-00C04FD918D0}" ' Binärdaten auslesen binary = folderitem.ExtendedProperty(fmtid & ",2") ' erstes Byte aus Binärdaten auslesen: typeid = util.GetArrayElement(binary,0)
6.3
Der innere Aufbau des FolderItem-Objekts
153
' Klartextname des FolderItem-Objekts zurückgeben FindType = codearray(typeid) end function
Sicher werden Sie zustimmen, daß dieses Script tief in die technische Trickkiste greifen muß, um die Typ-Informationen sinnvoll lesbar anzuzeigen. Dennoch: Auch dieses Script kann in vielen Fällen die entscheidenden Informationen liefern und ist nicht nur Extrem-Scriptfummeling.
Den Besitzer einer Datei ermitteln Die Verschiedenes-Eigenschaften sind in Spezialfällen ebenfalls interessant. Sie melden nämlich den Besitzer einer Datei zurück. Das spielt natürlich nur dann eine Rolle, wenn Sie Dateien auf einem Laufwerk mit NTFS-Dateisystem unter die Lupe nehmen, denn nur dort gibt es überhaupt Besitzrechte und Schließanlagen.
Bild 6.12: Die Besitzrechte von Dateien und Ordnern klären
Das nächste Script zeigt, wie Sie die Besitzer aller Dateien und Ordner im Laufwerk D:\ bestimmen – vorausgesetzt, es benutzt das NTFS-Dateisystem. Beim FAT-Dateisystem meldet das Script bei jedem Eintrag als Besitzer »Jeder«. Stören Sie sich nicht daran, daß das Dialogfenster vermutlich für das Ergebnis zu klein ist und mittendrin die Ausgabe abbricht. Sie könnten die Information ebenso gut direkt in eine Textdatei (Kapitel 4) oder eine Datenbank (Kapitel 9) schreiben. ’ 6-16.vbs set shell = CreateObject("Shell.Application") ’ auf Papierkorb zugreifen set folder = shell.NameSpace("D:\") set folderitems = folder.items fmtid = "{9B174B34-40FF-11D2-A27E-00C04FC30871}" if folderitems.Count>0 then for each folderitem in folderitems besitzer = (folderitem.ExtendedProperty(fmtid & ",4"))
154
Kapitel 6: Zugriff auf die Webansicht: Shell.Application
list = list & folderitem.name & _ ": Besitzer ist " & besitzer & vbCr next end if MsgBox list, vbInformation
6.3.2
GetFolder
Property GetFolder As Object
Handelt es sich bei dem FolderItem selbst um einen Ordner, also einen Unterordner im aktuellen Ordner, dann liefert GetFolder das betreffende Folder-Objekt. Bevor Sie GetFolder einsetzen, sollten Sie als erstes mit isFolder prüfen, ob das FolderItem-Objekt tatsächlich ein Ordner ist. Mit GetFolder lassen sich verschachtelte Ordner rekursiv durchsuchen. Rekursiv bedeutet: Stößt Ihr Script in einem Ordner auf einen Unterordner, so ruft es sich für diesen Unterordner erneut auf und kann so alle Dateien finden, auch die, die in tief verschachtelten Ordnern liegen. Das folgende Script durchsucht beispielsweise rekursiv den Stammordner C:\ und legt eine Liste aller gefundenen Textdateien an: ’ 6-17.vbs set shell = CreateObject("Shell.Application") set folder = shell.NameSpace("C:\") ’ Ausgabedatei anlegen set fs = CreateObject("Scripting.FileSystemObject") dateiname = "C:\logbuch.txt" set liste = fs.CreateTextFile(dateiname, true) ’ Ordner C:\ rekursiv nach TXT-Dateien durchsuchen OrdnerDurchsuchen folder ' Ausgabedatei schließen und öffnen liste.close set wshshell = CreateObject("WScript.Shell") wshshell.Run dateiname sub OrdnerDurchsuchen(folderobject) ' Inhalt des Ordners ansehen set folderitems = folderobject.items for each folderitem in folderitems ' ist der Eintrag selbst ein Ordner? if folderitem.isFolder then ' ja, dann diesen Ordner auch durchsuchen OrdnerDurchsuchen folderitem.GetFolder ' ist Datei eine Textdatei? elseif lcase(right(folderitem.path,3))="txt" then ' ja, dann in Liste einfügen AddToList folderitem.path
6.3
Der innere Aufbau des FolderItem-Objekts
155
end if next end sub sub AddToList(text) liste.WriteLine text end sub
Diese umfangreiche Suchaktion kann allerdings mehrere Minuten dauern. Während dieser Zeit sieht und hört der Anwender nichts vom Script und könnte dem frevelhaften Gedanken verfallen, das Script hätte sich aufgehängt. Bei solch langwierigen Operationen ist es deshalb sinnvoll, eine Fortschrittsanzeige einzublenden. Wie dies gelingt, ist in Kapitel 8.16.1 beschrieben. Schauen Sie sich auch das Scripting.FileSystemObject aus Kapitel 4 an: es ist ebenfalls in der Lage, das Dateisystem rekursiv zu durchsuchen. Im Gegensatz zu Shell.Application ist es auf jedem Computer mit WSH vorhanden. Shell.Application fehlt auf Windows 95 und -NT, wenn dort nicht der Internet Explorer 4 nachgerüstet wurde.
6.3.3
GetLink
Property GetLink As Object
GetLink liefert ein ShellLinkObject zurück, das eine Verknüpfung repräsentiert. Handelt es sich beim FolderItem um eine Verknüpfung, dann können Sie auf diese Weise in die Verknüpfung »hineinsehen« und zum Beispiel herausfinden, wo das Ziel der Verknüpfung liegt und ob Tastenshortcuts eingerichtet wurden. Neue Verknüpfungen lassen sich allerdings auf diese Weise nicht anlegen (mit einem kleinen Trick allerdings schon, siehe unten). Wenn Sie nicht auf die besonderen Funktionen von Shell.Application angewiesen sind, dann verwenden Sie besser das Wscript.Shell-Objekt, um Verknüpfungen zu managen (mehr dazu im Vorgängerband: Franzis’ Professional Series Scripting Host Praxisbuch). Es eignet sich besser, weil es auf jedem Computer mit WSH installiert ist und außerdem auch neue Verknüpfungen ins Leben rufen kann. Das folgende Script sucht auf dem Desktop nach der Verknüpfung willibald.lnk. Legen Sie sich solch eine Verknüpfung auf Ihren Desktop, und probieren Sie dann das Script aus: ’ 6-18.vbs set shell = CreateObject("Shell.Application") ’ Zugang zum Desktop bekommen set folder = shell.NameSpace(0) ' Zugang zur Verknüpfung bekommen ' Errorhandling ausschalten, um prüfen zu können, ' ob die Datei wirklich existiert on error resume next set folderitem = folder.ParseName("willibald.lnk") if not err.number=0 then
156
Kapitel 6: Zugriff auf die Webansicht: Shell.Application
MsgBox "Legen Sie zuerst auf Ihrem Desktop eine " _ & "Verknüpfung namens ""willibald.lnk"" an!" WScript.Quit end if on error goto 0 ' Zugang zum ShellLinkObject bekommen set linkobject = folderitem.GetLink ' Ziel des Links ausgeben: MsgBox linkobject.Path
Welche Funktionen und Möglichkeiten das ShellLinkObject sonst noch zu bieten hat, verrät Ihnen der Scripting Spy.
6.3.4
InvokeVerb
Sub InvokeVerb([ByVal vVerb])
Dieser Befehl ist ausgesprochen mächtig, gibt er Ihnen doch volle Kontrolle über das Kontextmenü des FolderItems. Damit wird es möglich, Dateien zu öffnen und Anwendungen zu starten. InvokeVerb ruft einen beliebigen Befehl aus dem Kontextmenü des Objekts auf. Wird kein besonderer Befehl angegeben, dann ruft InvokeVerb den Standardbefehl auf. Das nächste Script öffnet zum Beispiel auf dem Desktop die Datei test.txt. Legen Sie sich diese Datei auf den Desktop, und probieren Sie dann das Script aus: ’ 6-19.vbs set shell = CreateObject("Shell.Application") ’ Zugang zum Desktop bekommen set folder = shell.NameSpace(0) ’ Zugang zur Datei bekommen ' Errorhandling ausschalten, um prüfen zu können, ' ob die Datei wirklich existiert on error resume next set folderitem = folder.ParseName("test.txt") if not err.number=0 then MsgBox "Legen Sie zuerst auf Ihrem Desktop eine " _ & "Textdatei namens ""test"" an!" WScript.Quit end if on error goto 0 folderitem.InvokeVerb MsgBox "Datei wurde geöffnet", vbSystemModal
Klicken Sie die Testdatei test.txt auf Ihrem Desktop nun mit der rechten Maustaste an: Das Kontextmenü wird sichtbar. Ihr Script hat daraus den fettgedruckten Standardbefehl aufgerufen, weil
6.3
Der innere Aufbau des FolderItem-Objekts
157
Sie keinen speziellen Befehl angegeben haben. Ebensogut könnten Sie nun jeden anderen Kontextmenü-Befehl aufrufen. Wenn Sie die Datei beispielsweise ausdrucken möchten, dann verwenden Sie den Drucken-Befehl: ’ 6-20.vbs set shell = CreateObject("Shell.Application") set folder = shell.NameSpace(0) set folderitem = folder.ParseName("test.txt") folderitem.InvokeVerb "&Drucken"
Hierbei lauert allerdings die Tücke im Detail: Damit InvokeVerb Ihren Befehl verstehen kann, müssen Sie ihn exakt so angeben, wie er im Kontextmenü erscheint. Auch der Unterstrich, mit dem Windows im Befehlsnamen einzelne Buchstaben unterlegt, gehört zum Namen. Weil auf meinem Testsystem der Buchstabe »D« des Drucken-Befehls mit einem Unterstrich markiert ist, muß vor diesem Buchstaben ein kaufmännisches &-Zeichen gesetzt werden. Klar wird, daß damit der Einsatzbereich von InvokeVerb eingeschränkt ist: Woher sollen Sie wissen, wie die Kontextmenü-Befehle auf dem Rechner eines Kunden heißen, der Ihr Script benutzen soll? Glücklicherweise gibt es einige Auswege. So können Sie sich mit Verbs eine Liste der KontextmenüBefehle ausgeben lassen, die das FolderItem-Objekt unterstützt. Leider funktioniert diese Variante erst bei Windows 2000 fehlerfrei. Bei Windows 9x und NT liefert Verbs ein falsches Objekt zurück, und es kommt zu einem Fehler: ’ 6-21.vbs ’ funktioniert nur bei Windows 2000! set shell = CreateObject("Shell.Application") set folder = shell.NameSpace(0) set folderitem = folder.ParseName("test.txt") set folderitemverbs = folderitem.Verbs for each folderitemverb in folderitemverbs list = list & folderitemverb & vbCr next MsgBox list
Eine andere Möglichkeit sind Standardnamen. Windows verwendet intern für das Öffnen den Befehl »open«, für das Drucken den Befehl »print«. Alternativ zu den »echten« KontextmenüNamen können Sie also auch einen dieser standardisierten Namen angeben. Leider funktionieren die Standardnamen erst bei Windows 2000. Tip: So funktionieren die Standardnamen in Wirklichkeit Grundsätzlich kann ein Kontextmenü-Befehl zwei Namen haben: Den ersten bekommt er über den Schlüsselnamen in der Registry, also dort, wo sein Innenleben definiert wird. Wird hier als Name ein Standard wie open oder print angegeben, dann nennt Windows den Befehl automatisch in der jeweiligen Landessprache zum Beispiel »Öffnen« oder »Drucken«. Auf Wunsch kann dem (Standard-)Eintrag des Befehls aber auch ein abweichender Name gegeben werden.
158
Kapitel 6: Zugriff auf die Webansicht: Shell.Application
Der ersetzt dann den Standardnamen im Kontextmenü. Bisher mußte InvokeVerb mit diesem abweichenden Namen oder – falls keiner angegeben ist – mit der »Übersetzung« des Standardnamens gefüttert werden. Seit Windows 2000 kann nun auch der Standardname selbst angegeben werden – wesentlich besser.
Auch wenn Sie auf Ihrem System die Kontextmenü-Befehlsnamen nicht eindeutig bestimmen können, ist InvokeVerb ausgesprochen nützlich. Erstens können Sie es jederzeit ohne Argument verwenden (siehe oben), und zweitens sind einige Befehlsnamen weitestgehend standardisiert.
Das nächste Script öffnet beispielsweise die Eigenschaften-Seite einer Datei, die Sie auf das ScriptIcon ziehen. Ist diese Datei eine Verknüpfung, dann wird statt dessen die Eigenschaften-Seite der Originaldatei geöffnet – also nicht die uninteressante Eigenschaften-Seite der Verknüpfung. ’ 6-22.vbs ’ Argument einlesen set args = WScript.Arguments if args.count=0 then MsgBox "Ziehen Sie eine Datei auf mich!" WScript.Quit end if ' Pfad- und Dateinamen auseinanderdröseln pfad = left(args(0),InstrRev(args(0), "\")) datei = mid(args(0),InstrRev(args(0), "\")+1) ' hin zur Datei:
6.3
Der innere Aufbau des FolderItem-Objekts
159
set shell = CreateObject("Shell.Application") set folder = shell.NameSpace(pfad) set folderitem = folder.ParseName(datei) ' ist die Datei etwa eine Verknüpfung? if folderitem.isLink then ' ja, also Eigenschaften öffnen ' und dann das Ziel finden folderitem.InvokeVerb "E&igenschaften" set linkobj = folderitem.GetLink ziel = linkobj.Path pfad = left(ziel,InstrRev(ziel, "\")) datei = mid(ziel,InstrRev(ziel, "\")+1) set folder = shell.NameSpace(pfad) set folderitem = folder.ParseName(datei) ' jetzt steht in folderitem das Ziel des Links end if ' alles klar, Eigenschaften öffnen: folderitem.InvokeVerb "E&igenschaften" ' Verzögern (5 sec) WScript.Sleep 5000 MsgBox "Eigenschaften schließen?", vbQuestion + vbSystemModal
Das Script funktioniert sowohl mit Dateien als auch mit Ordnern und öffnet tatsächlich die Eigenschaften-Seite der Datei, die Sie auf das Script gezogen haben. Ziehen Sie testweise eine Verknüpfung auf das Script! Diesmal werden sogar zwei Eigenschaften-Fenster geöffnet: das der Verknüpfung, und vollautomatisch auch das der Datei, auf die die Verknüpfung weist. Allerdings wird auch der Aufräumwahn des WSH sichtbar: Das Script läuft noch 5 Sekunden länger als nötig, um den Eigenschaften-Fenstern Zeit zu geben, sichtbar zu werden. Anschließend fragt es scheinheilig nach, ob die Eigenschaften-Fenster geschlossen werden sollen. Eine Alternative gibt es aber gar nicht: Alles, was Ihr Script während seiner Ausführung anstellt, wird automatisch geschlossen, sobald das Script endet. Das gilt auch für die Eigenschaften-Fenster, die nur so lange sichtbar bleiben, wie Ihr Script läuft. Sobald Sie also auf OK klicken, beendet das Script seine Arbeit, und auch die Eigenschaften-Fenster machen Feierabend.
6.3.5
InvokeVerbEx
Sub InvokeVerbEx([ByVal vVerb], [ByVal vArgs])
InvokeVerbEx ist der große Bruder von InvokeVerb und nur bei Windows 2000 anzutreffen. Im Gegensatz zu InvokeVerb kann InvokeVerbEx noch ein zweites Argument lesen (vArgs) und verwendet dieses für zusätzliche Argumente, die Sie dem Kontextmenü-Befehl überreichen wollen.
160 6.3.6
Kapitel 6: Zugriff auf die Webansicht: Shell.Application
IsBrowsable
Property IsBrowsable As Boolean
Liefert Wahr zurück, wenn das FolderItem-Objekt ein Container ist, der als eigener NameSpace fungiert und Objekte enthält.
6.3.7
IsFileSystem
Property IsFileSystem As Boolean
Liefert Wahr zurück, wenn das FolderItem-Objekt Teil des lokalen Dateisystems ist, also eine Datei, ein Ordner oder ein Laufwerk.
6.3.8
IsFolder
Property IsFolder As Boolean
Liefert Wahr zurück, wenn das FolderItem-Objekt ein Ordner ist. Mit GetFolder erhalten Sie dann das Folder-Objekt dieses Ordners.
6.3.9
IsLink
Property IsLink As Boolean
Liefert Wahr zurück, wenn das FolderItem-Objekt eine Verknüpfung ist. Mit GetLink erhalten Sie dann das ShellLinkObject mit den Details der Verknüpfung.
6.3.10 ModifyDate Property ModifyDate As Date
Liefert das Datum der letzten Änderung zurück.
6.3.11 Name Property Name As String
Liefert den Namen des Objekts zurück, und zwar so, wie er augenblicklich von Windows angezeigt würde. Haben Sie den Explorer beispielsweise so eingestellt, daß er Dateiextensionen verschluckt, dann liefert Name den Dateinamen ebenfalls ohne Extension. Den echten Pfadnamen eines Dateisystem-Objekts liefert Path zurück.
6.4
Der innere Aufbau des Folder-Objekts
161
6.3.12 Parent Property Parent As Object
Verknüpfung zum übergeordneten Objekt.
6.3.13 Path Property Path As String
Der Pfadname zu diesem Objekt, so wie er vom Explorer verstanden wird. Bei virtuellen Ordnern liefert Windows 2000 automatisch die GUIDs zurück, bei Windows 9x und NT wird statt dessen ein Leerstring gemeldet.
6.3.14 Size Property Size As Long
Größe des Objekts in Byte.
6.3.15 Type Property Type As String
Typenbezeichnung des Objekts, zum Beispiel »Microsoft Word-Dokument«.
6.3.16 Verbs Function Verbs As FolderItemVerbs
Liefert eine Liste aller Kontextmenü-Befehle zurück, die dieses Objekt anzubieten hat. Ein Beispiel hierzu finden Sie bei InvokeVerb. Leider liefert Verbs bei Windows 9x und NT eben nicht wie erwartet ein FolderItemVerbs-Objekt zurück, sondern aufgrund eines Bugs ein FolderItemVerbObjekt. Deshalb ist diese Funktion erst bei Windows 2000 zu gebrauchen.
6.4
Der innere Aufbau des Folder-Objekts
Mit FolderItem-Objekten kennen Sie sich inzwischen gut aus. Alle FolderItem-Objekte sind immer Bewohner eines Folder-Objekts. Das Folder-Objekt entspricht also dem Container, der die FolderItem-Objekte beherbergt und wichtige Rahmenfunktionen bietet. Oder anders gesagt: Das FolderObjekt könnte einem Ordner entsprechen, und die Dateien im Ordner werden über FolderItemObjekte repräsentiert. So sieht das Folder-Objekt von innen aus:
162
Kapitel 6: Zugriff auf die Webansicht: Shell.Application
Die Applikation, die den Folder darstellt Kopiert Objekte in den Ordner (5.0) Web View Barricade wurde vom Benutzer abgeschaltet Ermittelt Details über ein FolderItem-Objekt im Ordner (5.0) Legt fest, ob die Web View Barricade angezeigt wird Liefert den Ordnerinhalt als FolderItems-Objekt zurück Verschiebt Objekte in den Ordner Legt einen Unterordner im Ordner an (5.0) Legt fest, ob der Ordner offline angezeigt wird Liefert das übergeordnete Objekt zurück Liefert übergeordneten Ordner als Folder-Objekt Liefert ein FolderItem-Objekt zurück, das dem angegebenen Namen entspricht (5.0) Referenz auf das FolderItem-Objekt, das dem Ordner entspricht (5.0) Synchronisiert alle Offline-Folder Titeltext des Ordners
Self Synchronize Title
Tab. 6.6: Das Innenleben eines Folder-Objekts
6.4.1
Application
Property Application As Object
Liefert das Objekt zurück, das dieses Folder-Objekt verwendet. Dies ist immer eine Referenz auf das Shell.Application-Objekt. ’ 6-23.vbs set Shell = CreateObject("Shell.Application") set folder = Shell.BrowseForFolder(0, _ "Suchen Sie sich einen Ordner aus",0,"C:\") set obj = folder.Application MsgBox TypeName(obj)
6.4.2
CopyHere
Sub CopyHere(ByVal vItem, [ByVal vOptions])
Kopiert eine oder mehrere Dateien in diesen Ordner. Dabei zeigt Windows sein offizielles Dialogfenster, wenn die Kopieraktion länger dauert. CopyHere kann sowohl mit FolderItem-Objekten arbeiten als auch mit Klartext-Pfadnamen. Es akzeptiert sogar Joker. Das folgende Script kopiert alle Textdateien aus dem Stammordner C:\ in den Ordner C:\TXTFILES und zeigt dabei sein Dialogfenster an, falls die Kopieraktion länger dauern sollte. Achten Sie darauf, daß Sie den Ordner C:\TXTFILES angelegt haben und daß es im Ordner C:\ auch tatsächlich einige TXT-Dateien gibt, die das Script kopieren kann:
6.4
Der innere Aufbau des Folder-Objekts
163
’ 6-24.vbs set shell = CreateObject("Shell.Application") set folder = shell.NameSpace("C:\TXTFILES") if TypeName(folder)="Nothing" then MsgBox "Bitte legen Sie den Ordner C:\TXTFILES an!" WScript.Quit end if folder.CopyHere "c:\*.TXT" MsgBox "Erledigt."
Rufen Sie das Script ein zweites Mal auf, dann erleben Sie eine weitere Überraschung: Anders als bei den Kopiermethoden des Scripting.FileSystemObject wird diesmal nachgefragt, ob die schon existierenden Dateien überschrieben werden sollen.
Bild 6.14: Shell.Application fragt nach, ob überschrieben werden soll
Auch FolderItems können an CopyHere übergeben werden: ’ 6-25.vbs set shell = CreateObject("Shell.Application") set wshshell = CreateObject("WScript.Shell") windir = wshshell.ExpandEnvironmentStrings("%WINDIR%") set origfolder = shell.NameSpace(windir) set destfolder = shell.NameSpace("C:\TXTFILES") for each item in origfolder.items if lcase(right(item.path,3))="txt" then destfolder.CopyHere item end if next MsgBox "Erledigt."
164
Kapitel 6: Zugriff auf die Webansicht: Shell.Application
Weil hier allerdings die einzelnen Dateien in eigenständigen Häppchen an CopyHere verfüttert werden, erscheint die Fortschrittsanzeige nicht oder nur kurz für jede einzelne Datei. Weiteres Manko: Die Fehlermeldungen von CopyHere sind grob irreführend.
Bild 6.15: Die Fehlermeldungen sind grob irreführend – es gibt deshalb bessere Wege
All diese Hemmnisse fegen Sie beiseite, wenn Sie nicht via Shell.Application und CopyHere auf die eingebaute Kopierstation von Windows zugreifen, sondern direkt. Dann nämlich haben Sie die Wahl, auch viele verschiedene Dateien aus einer Liste heraus mit Fortschrittsanzeige zu kopieren. Mehr dazu lesen Sie in Kapitel 8.25.
6.4.3
DismissedWebViewBarricade
Sub DismissedWebViewBarricade
Für Scripts ungeeignet, interne Bedeutung. Neues Feature von Windows 2000.
6.4.4
GetDetailsOf
Function GetDetailsOf(ByVal vItem, ByVal iColumn As Empty) As String
Liefert zusätzliche Informationen zu einem FolderItem-Objekt wie seine Größe oder seine DateiAttribute. Codezahl
Bedeutung
-1 0 1 2 3 4
InfoTip-Text (nicht bei jedem Dateityp vorhanden) Name Größe Typ Datum der letzten Änderung Attribute
Tab. 6.7: Die Grundinformationstypen werden auf allen Windows-Versionen unterstützt
Das folgende Script zeigt, wie Sie mit GetDetailsOf die Detailinformationen einer Datei lesen: ’ 6-26.vbs set shell = CreateObject("Shell.Application")
6.4
Der innere Aufbau des Folder-Objekts
165
set folder = shell.NameSpace("C:\") set folderitem = folder.ParseName("msdos.sys") for x = -10 to 50 beschreibung = folder.GetDetailsOf(vbNull, x) inhalt = folder.GetDetailsOf(folderitem, x) if not (beschreibung = "" and inhalt = "") then list = list & x & ": " & beschreibung & " = " _ & inhalt & vbCr end if next MsgBox list
Hier sind gleich mehrere Dinge verblüffend: Erstens liefert das Dialogfenster nicht nur den Inhalt der einzelnen Kategorien, sondern auch den Namen der Kategorie. Sie haben nämlich zwei Möglichkeiten, GetDetailsOf aufzurufen: Entweder geben Sie ein FolderItem-Objekt an. Dann liefert die Funktion den Informationswert, den Sie anfordern. Oder Sie geben als FolderItem-Objekt vbNull an. In diesem Fall liefert die Funktion den Namen der Kategorie, also zum Beispiel »Dateiname«, »Größe« oder »Typ«.
Bild 6.16: Universell einsetzbar: Informationen über Dateien erfragen
Und zweitens liefert das Script bei Ihnen möglicherweise weitaus mehr Informationen zurück als oben in Tabelle 6.7 angegeben. Bei Windows 2000 ist GetDetailsOf wesentlich schlauer geworden und meldet viele zusätzliche Dateiinformationen: Codezahl
Beschreibung
5 6 7 8 10 11 12 13 14 15 16 17
Kommentar Erstellt Letzter Zugriff Eigentümer Autor Titel Thema Kategorie Seiten Copyright Name der Firma Modulbeschreibung
166
Kapitel 6: Zugriff auf die Webansicht: Shell.Application
Tab. 6.8: Windows 2000 bietet weitaus mehr Informationen an
Das nächste Script schaut in Ihren Ordner Eigene Dateien und listet danach alle Winword-Texte und die Zahl der Seiten darin auf – was wie gesagt nur bei Windows 2000 funktioniert. ’ 6-27.vbs set shell = CreateObject("Shell.Application") ’ Zugriff auf Eigene Dateien set folder = shell.NameSpace(5) ’ Inhalt untersuchen for each folderitem in folder.Items ’ ist es eine DOC-Datei (Winword) ? if lcase(right(folderitem.path, 3)) = "doc" then ’ ja, Seitenanzahl ermitteln seitenzahl = folder.GetDetailsOf(folderitem, 14) liste = liste & seitenzahl & " Seite(n): " _ & folderitem.name & vbCr end if next MsgBox liste
Ebenso einfach könnten Sie nach Autorennamen, nach Besitzer oder anderen Kriterien Listen zusammenstellen – oder via CopyHere ganz bestimmte Dokumente automatisch in einen Sicherungs-
6.4
Der innere Aufbau des Folder-Objekts
167
ordner kopieren. Denken Sie aber daran: Diese neuen Informationsquellen gibt es nur bei Windows 2000. Wie vielseitig GetDetailsOf ist, zeigt auch das nächste Script. Es verbindet sich mit dem Systemordner von Windows und erstellt eine Liste der DLL-Bibliotheken samt Versionsnummer und Beschreibung. Dieser Vorgang kann einige Minuten dauern – bitte Geduld! ’ 6-28.vbs set shell = CreateObject("Shell.Application") set fs = CreateObject("Scripting.FileSystemObject") ’ Ergebnisdatei anlegen dateiname = "C:\LOGBUCH.TXT" set datei = fs.CreateTextFile(dateiname, true) datei.WriteLine "Dateiname" & vbTab & "Version" _ & vbTab & "Beschreibung"
’ Zugriff auf Systemordner set folder = shell.NameSpace(37) ’ Inhalt untersuchen for each folderitem in folder.Items ’ ist es eine DLL-Datei? if lcase(right(folderitem.path, 3)) = "dll" then ’ ja, Infos erfragen beschreibung = folder.GetDetailsOf(folderitem, 17) version = folder.GetDetailsOf(folderitem, 18) info = folderitem.name & vbTab & version & vbTab _ & beschreibung datei.WriteLine info end if next datei.close ' Ergebnisdatei mit den reinen Mitteln des Shell.Application-Objekts öffnen: set folder = shell.NameSpace("C:\") set folderitem = folder.ParseName("LOGBUCH.TXT") folderitem.InvokeVerb
Besonders interessant am Rande: Das Script öffnet nach seiner Arbeit zuvorkommend die Textdatei mit den gesammelten Daten. Dazu verwendet es InvokeVerb (siehe oben).
168
Kapitel 6: Zugriff auf die Webansicht: Shell.Application
Bild 6.17: Informationen über DLLs in Ihrem System
6.4.5
HaveToShowWebViewBarricade
Property HaveToShowWebViewBarricade As Boolean
Neue Funktion von Windows 2000, die für Scripts ohne Bedeutung ist.
6.4.6
Items
Function Items As FolderItems
Items liefert den gesamten Ordnerinhalt zurück. Das Ergebnis ist ein FolderItems-Objekt, das die einzelnen Objekte des Ordners als FolderItem-Objekte enthält. Sie können mit for each...next das FolderItems-Objekt auslesen. Items wird in diesem Kapitel ständig eingesetzt. Eine grundlegende Einführung in die Objekte und wie sie zusammengehören finden Sie am Kapitelanfang.
6.4.7
MoveHere
Sub MoveHere(ByVal vItem, [ByVal vOptions])
Funktioniert wie CopyHere, nur wird die Datei nicht kopiert, sondern verschoben.
6.4
6.4.8
Der innere Aufbau des Folder-Objekts
169
NewFolder
Sub NewFolder(ByVal bName As String, [ByVal vOptions])
Legt in einem Ordner einen Unterordner an. Geben Sie den Namen des Unterordners an. Die Optionen brauchen nicht angegeben zu werden und sind bislang auch noch ohne Bedeutung.
6.4.9
OfflineStatus
Property OfflineStatus As Long
Meldet, ob ein Ordner offline oder online ist. Lokale Ordner sind natürlich immer online, aber Windows 2000 bringt ein neues Feature namens »Offline Folder« mit. Damit ist es möglich, Netzwerkordner auch dann noch zu erreichen, wenn das Netzwerk gerade nicht vorhanden ist – zum Beispiel unterwegs oder bei einem Netzwerkausfall. OfflineStatus verrät Ihnen, ob ein Ordner offline verfügbar ist und wie sein Status aussieht: ’ 6-29.vbs set shell = CreateObject("Shell.Application") ’ einen Ordner herauspicken set folder = shell.NameSpace("\\win98\c\ordnerxy") MsgBox folder.offlineStatus
Vorausgesetzt, der Netzwerkpfad existiert und Sie verwenden Windows 2000, liefert OfflineStatus nun einen der folgenden Werte zurück: Rückgabewert
Bedeutung
-1 0 1 2
Ordner ist nicht offline verfügbar Ordner ist offline verfügbar und derzeit online Ordner ist offline verfügbar und derzeit offline; es wird also die lokale Kopie verwendet Ordner ist zwar offline, aber der Server ist wieder online (das Netzwerk ist wieder verfügbar). Der Ordner kann also wieder online geschaltet werden. Es wurde in den Onlinebetrieb zurückgewechselt, ohne daß Änderungen in der lokalen Kopie synchronisiert wurden. Online- und Offline-Ordner unterscheiden sich also, und eine Synchronisierung ist dringend geboten.
3
Tab. 6.9: Informationen über den Status von Offline-Foldern (Windows 2000)
6.4.10 Parent Property Parent As Object
Liefert das übergeordnete Objekt zurück.
170
Kapitel 6: Zugriff auf die Webansicht: Shell.Application
6.4.11 ParentFolder Property ParentFolder As Folder
Liefert den Ordner als Folder-Objekt zurück, in dem der aktuelle Ordner beherbergt wird.
6.4.12 ParseName Function ParseName(ByVal bName As String) As FolderItem
ParseName übersetzt herkömmliche Dateisystem-Pfadnamen in die Shell-Bezeichnung und liefert dann das betreffende FolderItem-Objekt zurück. Um also auf eine Datei zuzugreifen, besorgen Sie sich zuerst mit NameSpace den Ordner, in dem die Datei liegt. Danach setzen Sie ParseName ein und bekommen so das FolderItem-Objekt der Datei. In diesem Kapitel finden Sie unzählige Beispiele für diesen Mechanismus, denn er ist Ihr Tor zum Shell-Dateisystem.
6.4.13 Self Property Self As FolderItem
Diese sehr wichtige Eigenschaft ist erst bei Windows 2000 verfügbar. Das Folder-Objekt selbst liefert an keiner Stelle seinen echten Pfadnamen zurück. Wenn Sie sich also mit BrowseForFolder einen Ordner aussuchen, dann bekommen Sie zwar ein Folder-Objekt, wissen aber nur dessen Titel – nicht dessen Pfadnamen. Nur FolderItem-Objekte verraten über Path den echten Pfadnamen. Mit Self erhalten Sie automatisch das FolderItem-Objekt, das Ihren Ordner im übergeordneten Ordner repräsentiert. So leicht finden Sie bei Windows 2000 den echten Ordnernamen heraus, wenn Sie ein Folder-Objekt besitzen: MsgBox folder.self.path
6.4.14 Synchronize Sub Synchronize
Dieser Befehl synchronisiert einen Offline-Ordner mit dem Server und ist nur bei Windows 2000 vorhanden. Was genau Offline-Ordner sind, wurde bereits bei OfflineStatus beschrieben. Die folgenden Zeilen genügen, um einen nichtaktuellen Offline-Folder mit dem Original zu synchronisieren: if folder.offlineStatus = 3 then folder.Synchronize end if
6.5
Den Explorer fernsteuern: IWebBrowser2
171
6.4.15 Title Property Title As String
Liefert den Titel eines Ordners zurück. Dieser Titel entspricht nicht dem Pfadnamen des Ordners, wie das nächste Beispiel zeigt: ’ 6-30.vbs set shell = CreateObject("Shell.Application") set folder = shell.NameSpace("C:\") MsgBox folder.Title ' nur bei Win2000 möglich: MsgBox folder.self.path
6.5
Den Explorer fernsteuern: IWebBrowser2
Vielleicht haben Sie sich insgeheim schon gefragt, wie Windows eigentlich Ordner im Explorer sichtbar macht. Der Rahmen ist klar: Ein Explorerfenster bildet die Theaterbühne. Nur: Wie kommen die Ordner in den Explorer hinein? Wer glaubt, der Explorer sei selbst für die Darstellung von Ordnern und Dateien zuständig, der täuscht sich: Der Explorer ist ein Allzweck-Datensichtgerät. Er selbst ist eigentlich nur ein armes Würstchen und kann überhaupt keine Daten selbst anzeigen. Statt dessen bedient er sich Plug-Ins. Die stellen dann maßgeschneidert HTML-Seiten, virtuelle Ordner wie die Systemsteuerung oder eben die echten Dateisystem-Ordner dar. Das Plug-In ist seinerseits wieder nur ein Objekt und hört auf den Namen IWebBrowser2. Und wie kommt man an dieses Objekt heran? Starten Sie einen Explorer auf herkömmliche Weise, zum Beispiel über das Arbeitsplatz-Symbol auf dem Desktop, dann hat Ihr Script keine Möglichkeit, an die internen Objekte heranzukommen. Es fehlt der Hintereingang. Anders ist das, wenn Sie selbst scriptgesteuert einen Explorer auf die Bildfläche zaubern. Dann nämlich haben Sie Zugang zum Explorer und all seinen Objekten. So einfach bekommen Sie einen Explorer, der das Laufwerk C:\ anzeigt und dabei komplett per Script gesteuert werden kann: ’ 6-31.vbs set ie = CreateObject("InternetExplorer.Application") ie.visible = true ie.navigate "C:\" MsgBox TypeName(ie)
172
Kapitel 6: Zugriff auf die Webansicht: Shell.Application
6.5.1
Kosmetik: Die Display-Eigenschaften des Explorers steuern
Schauen Sie sich zuerst an, wie Sie Ihr Explorerfenster besser aussehen lassen: Funktion
Bedeutung
AddressBar MenuBar Resizable StatusBar ToolBar Visible Quit Width Height Left Top
False: Adreßleiste wird ausgeblendet False: Menüleiste wird ausgeblendet False: Fenstergröße kann nicht geändert werden False: Statusleiste wird ausgeblendet False: alle Symbolleisten werden ausgeblendet False: Explorerfenster ist unsichtbar (Voreinstellung) Explorerfenster wird geschlossen Breite des Fensters in Pixeln Höhe des Fensters in Pixeln Abstand vom linken Bildschirmrand in Pixeln Abstand vom oberen Bildschirmrand in Pixeln
Tab. 6.10: Eigenschaften des Internet Explorers
So einfach bekommen Sie ein leeres Explorer-Fenster, in dem alle Symbolleisten abgeschaltet sind. Das Fenster ist 500x200 Pixel groß. ’ 6-32.vbs set ie = CreateObject("InternetExplorer.Application") ie.ToolBar = false ie.StatusBar = false ie.Width = 500 ie.Height = 200 ie.visible = true
Mit Hilfe von Left und Top könnten Sie das Fenster in Bildmitte zentrieren, aber dafür müßten Sie die augenblickliche Bildschirmauflösung wissen. Diese Information fehlt momentan noch. Sie lernen aber unten Wege kennen, auch die aktuelle Bildschirmauflösung herauszufinden.
Bild 6.18: Ein leeres Fenster mit Wunschmaßen – noch ist es allerdings leer
6.5
6.5.2
Den Explorer fernsteuern: IWebBrowser2
173
Navigieren: Inhalt im Explorer anzeigen
Ein leeres Explorerfenster nützt Ihnen natürlich herzlich wenig. Deshalb beauftragen Sie den Explorer, an einen Ort zu navigieren. Das folgende Script zeigt, wie Sie den Explorer anweisen, Inhalte anzuzeigen: ’ 6-33.vbs ’ ordner anzeigen set explorer1 = ExplorerShow("C:\") MsgBox TypeName(explorer1.document) ’ virtuellen Ordner anzeigen arbeitsplatz = "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}" systemsteuerung = "::{21EC2020-3AEA-1069-A2DD-08002B30309D}" set explorer2 = ExplorerShow(arbeitsplatz & "\" _ & systemsteuerung) MsgBox TypeName(explorer2.document) ’ dynamisches HTML anzeigen set explorer3 = ExplorerShow("JavaScript:’Guten Tag, es ist " _ & time & "’") MsgBox TypeName(explorer3.document) ’ Textdatei anzeigen set explorer4 = ExplorerShow("C:\msdos.sys") MsgBox TypeName(explorer4.document) ' ' ' '
ebenfalls möglich: ftp-Adressen Webseiten HTML-Dateien
function ExplorerShow(was) set ie = CreateObject("InternetExplorer.Application") ie.ToolBar = false ie.StatusBar = false ie.width = 500 ie.height = 200 ' zum Ziel navigieren ie.navigate was ' warten, bis Ziel vollständig angezeigt wird do until ie.ReadyState=4 loop ' sichtbar machen ie.visible = true ' Referenz auf Explorer zurückgeben set ExplorerShow = ie end function
174
Kapitel 6: Zugriff auf die Webansicht: Shell.Application
Erstaunlich, oder? Der Explorer kann normale Ordner, virtuelle Ordner, dynamisches HTML und sogar einfache Textdateien anzeigen! Das Prinzip ist ganz simpel: Mit navigate beauftragen Sie den Explorer, etwas anzuzeigen. Natürlich kann es einen Moment dauern, bis der Explorer am Ziel angelangt ist und auch tatsächlich den gewünschten Inhalt anzeigt. Deshalb prüft das Script in einer Schleife, ob ReadyState den Wert 4 meldet. Der bedeutet: Alles klar, der Explorer ist mit dem Bildaufbau fertig. Erst danach schaltet das Script das Explorerfenster auf sichtbar. Dies hat nicht nur kosmetische Gründe. Das Script möchte herausfinden, welches Plug-In jeweils die Informationen im Explorer anzeigt. Diese Information liefert document, aber erst, wenn das Plug-In auch tatsächlich initialisiert ist. Dies ist der eigentliche Grund, warum das Script in der ReadyState-Schleife wartet, bis der Explorer-Bildaufbau abgeschlossen ist. Und tatsächlich enthüllt das Script: Es kommen zwei ganz unterschiedliche Plug-Ins zum Einsatz! Ordner und virtuelle Ordner werden mit IShellFolderViewDual angezeigt, HTML und Texte dagegen über HTML Document.
6.5.3
Per Script in den Explorer-Inhalt eingreifen
Nach wie vor bleibt die Frage, wo denn nun eigentlich das Folder-Objekt im Explorer haust, wenn der Explorer Ordner anzeigt. Das Folder-Objekt erreichen Sie über die Folder-Eigenschaft des IShellFolderViewDual-Objekts. Klingt ziemlich verschachtelt, ist aber ganz einfach: ’ 6-34.vbs ’ ordner anzeigen set explorer1 = ExplorerShow("C:\") ’ hier ist das Folder-Objekt! set folder = explorer1.document.folder ’ damit kann ganz normal hantiert werden: for each folderitem in folder.items list = list & folderitem.name & vbCr next MsgBox list explorer1.quit function ExplorerShow(was) set ie = CreateObject("InternetExplorer.Application") ie.ToolBar = false ie.StatusBar = false ie.width = 500 ie.height = 200 ’ zum Ziel navigieren ie.navigate was ' warten, bis Ziel vollständig angezeigt wird
6.5
Den Explorer fernsteuern: IWebBrowser2
175
do until ie.ReadyState=4 loop ’ sichtbar machen ie.visible = true ' Referenz auf Explorer zurückgeben set ExplorerShow = ie end function
Allerdings ist der reine Zugriff auf das Folder-Objekt nicht sonderlich spannend. Schließlich haben Sie eben reichlichen Aufwand betrieben, den Explorer mit seinem Folder-Objekt sichtbar zu machen. Das macht nur Sinn, wenn es auch Möglichkeiten gibt, in den sichtbaren Explorer einzugreifen. Und genau diese Möglichkeiten gibt es auch. Schauen Sie sich an, was das IShellFolderViewDual-Objekt zu bieten hat: Funktion
Öffnet Kontextmenü eines FolderItem-Objekts Liefert eine FolderItems-Liste mit den derzeit markierten Objekten zurück Liefert das FolderItem-Objekt des ausgewählten Eintrags Markiert ein FolderItem-Objekt im Explorer Liefert das Folder-Objekt zurück, das im Explorer angezeigt wird Liefert die derzeitige Ansicht des Explorer-Fensters zurück
Tab. 6.11: IShellFolderViewDual – das Herz des Datei-Explorers
6.5.4
Dateien im Explorer ferngesteuert markieren
Die wohl interessanteste Funktion ist SelectItem. Sie markiert einen oder mehrere Einträge im Explorer. Ihr Script könnte also – basierend auf den Informationen, die Sie oben kennengelernt haben – eine Vorauswahl treffen und diese Dateien dann im Explorer markieren. Das nächste Script zeigt, wie so etwas geht. Es markiert eine beliebige Datei oder einen Ordner im Explorer. ’ 6-35.vbs ShowMe "C:\msdos.sys" sub ShowMe(path) ordner = left(path, InstrRev(path, "\")) datei = mid(path, InstrRev(path, "\")+1) set explorer = ExplorerShow(ordner) set folder = explorer.document.folder set folderitem = folder.ParseName(datei) ’ datei markieren on error resume next explorer.document.SelectItem folderitem, 1+4+8+16
176
Kapitel 6: Zugriff auf die Webansicht: Shell.Application
if not err.number=0 then MsgBox "Datei """ & datei & """ konnte nicht angezeigt werden!" end if on error goto 0 end sub function ExplorerShow(was) set ie = CreateObject("InternetExplorer.Application") ie.ToolBar = false ie.StatusBar = false ie.width = 500 ie.height = 200 ’ zum Ziel navigieren ie.navigate was ' warten, bis Ziel vollständig angezeigt wird do until ie.ReadyState=4 loop ' sichtbar machen ie.visible = true ' Referenz auf Explorer zurückgeben set ExplorerShow = ie end function
Denken Sie bitte daran: Das Script kann nur funktionieren, wenn die gewünschte Datei auch tatsächlich im Explorer zu sehen ist. Haben Sie zum Beispiel Ihrem Explorer befohlen, versteckte – und Systemdateien auszublenden, dann kann das Script die Datei MSDOS.SYS natürlich nicht markieren. Gleiches gilt, wenn Sie Ordner oder Dateinamen angeben, die nicht existieren.
Bild 6.19: Automatisch Dateien in Ordnern markieren
Dies sind die Optionen, mit denen Sie SelectItem steuern: Option
Bedeutung
0 1 1+2
Markierung entfernen Markieren Umbenennen
6.5
Den Explorer fernsteuern: IWebBrowser2
Option
Bedeutung
4 8 16
Alle Markierungen entfernen mit Ausnahme dieser Markierung Markierten Eintrag ins Blickfeld rücken Markiertem Eintrag den Fokus geben (Eintrag wird von dünner Linie umrahmt)
177
Tab. 6.12: Markierungsoptionen im Explorerfenster
6.5.5
Eigenschaften-Dialogfenster aufrufen
Erinnern Sie sich? Mit InvokeVerb hatten Sie oben in Kapitel 6.3.4 bereits Eigenschaften-Fenster aufgerufen. Die hatten aber einen Nachteil: Sie waren nur so lange sichtbar, wie Ihr Script lief. Mit Ihrem neugewonnenen Wissen geht es besser. Navigieren Sie einfach mit dem Explorer zu der gewünschten Datei, und rufen Sie dann im Folder-Objekt des Explorers den InvokeVerb-Befehl auf. Damit bürdet Ihr Script die weitere Verwaltung dem Explorer auf, und selbst wenn Sie die Instanz des Explorers säuberlich mit Quit beenden, bleibt das Eigenschaften-Fenster sichtbar. Der Grund: Die Mutterinstanz aller Explorer-Fenster läuft noch immer, sie ist ständig vorhanden. ’ 6-36.vbs ShowProps "C:\msdos.sys" sub ShowProps(path) ordner = left(path, InstrRev(path, "\")) datei = mid(path, InstrRev(path, "\")+1) set ie = CreateObject("InternetExplorer.Application") ie.navigate ordner ' warten, bis Ziel vollständig angezeigt wird do until ie.ReadyState=4 loop set folder = ie.document.folder set folderitem = folder.ParseName(datei) folderitem.InvokeVerb "E&igenschaften" ie.Quit end sub
Mit dem vorherigen Script können Sie die Eigenschaften von Ordnern und Dateien aufklappen, aber nicht die von Laufwerken. Schade eigentlich, genau das wäre interessant. Ein Script könnte zum Beispiel den freien Speicherplatz ermitteln und bei Speichernotstand die Eigenschaften-Seite des Laufwerks zücken. Funktioniert auch. Erinnern Sie sich? Alle Laufwerke sind ihrerseits Elemente im Arbeitsplatz-Fenster, und das Arbeitsplatz-Fenster kann über seine GUID angesteuert werden. Verwenden Sie also als Ordner die GUID des Arbeitsplatzes und als »Datei« den Namen des Laufwerks, dann zaubert das Script doch noch die gewünschte Information herbei:
178
Kapitel 6: Zugriff auf die Webansicht: Shell.Application
’ 6-37.vbs ShowDriveProps "C:\" sub ShowDriveProps(path) ordner = "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}" datei = path set ie = CreateObject("InternetExplorer.Application") ie.navigate ordner ' warten, bis Ziel vollständig angezeigt wird do until ie.ReadyState=4 loop set folder = ie.document.folder set folderitem = folder.ParseName(datei) folderitem.InvokeVerb "E&igenschaften" ie.Quit end sub
6.5.6
In HTML-Dokumente eingreifen
Auch ganz normale HTML-Dokumente, die im Explorer angezeigt werden, können scriptgesteuert verwaltet werden. Das ist zwar nicht das Thema dieses Kapitels, funktioniert aber nach genau denselben Prinzipien. ’ 6-38.VBS htmlstart = "JavaScript:’Huhu!" _ & "initialisiere...’" set explorer = ExplorerShow(htmlstart) for x=1 to 1000 explorer.document.body.innerHTML = "Zählerstand: " & x next explorer.Quit function ExplorerShow(was) set ie = CreateObject("InternetExplorer.Application") ie.ToolBar = false ie.StatusBar = false ie.width = 500 ie.height = 200 ' zum Ziel navigieren ie.navigate was ' warten, bis Ziel vollständig angezeigt wird do until ie.ReadyState=4 loop
6.5
Den Explorer fernsteuern: IWebBrowser2
179
’ sichtbar machen ie.visible = true ’ Referenz auf Explorer zurückgeben set ExplorerShow = ie end function
Sie brauchen dem Explorer noch nicht einmal eine »echte« HTML-Datei anbieten. Über das Schlüsselwort JavaScript:’...’ akzeptiert der Explorer auch synthetische HTML-Tags. Der Text, den Sie im <TITLE>-Tag festlegen, wird in der Titelleiste des Fensters angezeigt.
Bild 6.20: Dynamische Ausgaben in IE-Fenster schreiben
Über innerHTML läßt sich dann der Inhalt des Explorers jederzeit verändern. Er könnte auf diese Weise als Fortschrittsanzeige dienen. Natürlich ist dies nur die Spitze des Eisbergs. Prinzipiell lassen sich alle DHTML-Möglichkeiten auf diese Weise scriptgesteuert ausnutzen. Tip: Scripts innerhalb von HTML-Seiten Natürlich wird der Web-Profi fragen: Wieso sollte ich umständlich über den WSH ein Explorerfenster öffnen und scriptsteuern, wenn ich doch in jede HTML-Datei mit dem <SCRIPT>-Tag denselben Scriptcode einbetten kann? Die Antwort ist simpel: Scripts, die innerhalb des Explorers als Teil einer Webseite ausgeführt werden, unterliegen viel strengeren Sicherheitsprüfungen, weil solche Scripts aus fremder Hand stammen könnten. Die meisten fortschrittlichen Scripts, die externe Objekte verwenden, laufen deshalb nicht als eingebettete Scripts in Webseiten.
181
7
Eigene Script-Befehlserweiterungen schreiben
Was können Sie tun, wenn Sie per Script ein Problem lösen wollen, für das es keine passende Funktion gibt? Die mitgelieferten COM-Objekte bieten zwar reichhaltige Auswahl, aber dennoch werden immer wieder Probleme entstehen, für die es keine vorformulierten Befehle gibt. Werden Sie kreativ! Schaffen Sie sich Ihre eigenen COM-Objekte! Das ist leichter als Sie denken, und Sie brauchen noch nicht einmal kostspielige Programmierwerkzeuge. Microsoft verschenkt die Visual Basic Control Creation Edition. Auch an Sie! Dieses rund 7 MB große Programmpaket entspricht dem kompletten Visual Basic 5.0 und ist nur um die Funktion beraubt, eigenständige Programme zu entwickeln. Das können Sie leicht verschmerzen, denn Ihre Scripts brauchen lediglich COM-Objekte, um neue Befehle nutzen zu können. COM-Objekte erstellen Sie mit der kostenlosen VB CCE mit links! In diesem Kapitel zeige ich Ihnen, wie Sie sich die VB CCE beschaffen und installieren. Ich zeige Ihnen außerdem, wie leicht es ist, mit diesem Programm und Ihren bisherigen Kenntnissen eigene neue Befehle zu erfinden. Im nächsten Kapitel bombardiere ich Sie dann mit fix und fertigen Lösungen zu allen nur erdenklichen Problemen. Das Ergebnis sind enorm mächtige Befehlserweiterungen, die Sie jederzeit ergänzen, erweitern und an Ihre Kunden weitergeben können.
7.1
Die Visual Basic CCE startklar machen
Wo bekommen Sie die Visual Basic CCE her? Surfen Sie zu msdn.microsoft.com/vbasic/downloads/ cce/. Hier müssen Sie sich zuerst als MSDN-Mitglied registrieren lassen. Das kostet Sie höchstens ein paar Minuten, aber kein Geld. Mit Ihrer persönlichen MSDN-ID können Sie danach die VB CCE herunterladen. Tip: VB CCE – auch auf CD! Auf der Buch-CD finden Sie ebenfalls die VB CCE Installationsdatei, und zwar im Ordner VISUAL BASIC CCE.
Das Ergebnis ist eine ausführbare EXE-Datei. Rufen Sie sie auf, um die VB CCE auf Ihrem System zu installieren. Anschließend finden Sie in Ihrem Programme-Menü die neue Gruppe Visual Basic 5.0 CCE. Darin befindet sich unter anderem das Programm Visual Basic 5.0 CCE. Rufen Sie es auf!
182 7.1.1
Kapitel 7: Eigene Script-Befehlserweiterungen schreiben
Die VB CCE kennenlernen
Die VB CCE öffnet zunächst ein Willkommensfenster und fragt nach, was für eine Sorte von Programm Sie erstellen wollen. Wählen Sie ActiveX Control!
Bild 7.1: Script-Befehlserweiterungen sind ActiveX-Controls
Anschließend sehen Sie Ihre neue Werkbank, die aus einer ganzen Reihe von Einzelfenstern besteht. Ruhig liegt sie da und wartet geduldig darauf, daß Sie mit ihr zu spielen beginnen. Nur: Wo anfangen in all dem Kauderwelsch? Schauen Sie sich zuerst an, was die VB CCE alles für Sie mitgebracht hat:
Toolbox: Ganz links sehen Sie die Toolbox mit all den Steuerelementen, die Sie in selbstgebastelten Fenstern einsetzen können. Die Toolbox läßt sich jederzeit über den gleichnamigen Befehl aus dem View-Menü einblenden, falls Sie sie ausgeknipst haben.
Rechts haben sich gleich drei Fenster angedockt: Project Explorer, Properties Window und Form Layout. Alle drei Fenster können ausgeknipst werden, wenn Sie sie gerade nicht brauchen, und kommen über die entsprechenden Befehle aus dem View-Menü wieder zurück.
In der Mitte sehen Sie das eigentliche Projekt. Es besteht zuerst aus einem grauen Rechteck, dem »nackten« Control. Ein Rechtsklick auf dieses graue Rechteck öffnet ein Kontextmenü, und darin sehen Sie den Befehl View Code. Er schaltet von der grafischen Ansicht um in den Programmiermodus, und nun sehen Sie eine Art Texteditor. Der hilft Ihnen dabei, Ihrem neuen COM-Objekt sinnvolle Befehle beizubringen.
7.1
Die Visual Basic CCE startklar machen
183
Bild 7.2: Gar nicht so kompliziert: die Visual Basic Entwicklungsumgebung
7.1.2
Der Project Explorer – Ihr Inhaltsverzeichnis
Der Project Explorer stellt Ihr gesamtes Programmier-Projekt wie ein Inhaltsverzeichnis dar. Am Anfang sehen Sie darin an oberster Stelle Ihr Projekt. Es heißt Project1, und Ihre erste Aufgabe sollte sein, dem Projekt einen sinnvolleren Namen zu geben: 1. Klicken Sie im Project Explorer auf Project1. Im Properties-Fenster darunter sehen Sie nun die Eigenschaften Ihres Projekts. Es gibt nur eine einzige Eigenschaft, und die heißt Name.
Bild 7.3: Markieren Sie im Project Explorer Ihr Projekt
2. Klicken Sie ins Feld dahinter, und geben Sie dem Projekt einen Namen, zum Beispiel test.
184
Kapitel 7: Eigene Script-Befehlserweiterungen schreiben
Bild 7.4: Geben Sie Ihrem Projekt einen besseren Namen
Schauen Sie sich nun wieder den Project Explorer an: Ihr Projekt ist umgetauft und heißt nun test. Gut gemacht! Jetzt erkunden Sie, aus welchen Elementen Ihr Projekt eigentlich besteht. Unterhalb von test steht die Kategorie UserControls, und darin befindet sich Ihr (noch leeres) COM-Objekt. Es heißt UserControl1. Auch dieser Name darf natürlich nicht so bleiben. Sicher können Sie sich schon denken, wie Sie Ihrem COM-Objekt einen besseren Namen geben: 1. Klicken Sie im Project Explorer auf UserControl1. Im Properties-Fenster sehen Sie nun alle Eigenschaften Ihres COM-Objekts. Das sind schon etliche mehr als beim Projekt.
Bild 7.5: Markieren Sie dann Ihr Control-Objekt
2. Wieder gibt es eine Name-Eigenschaft, und darin steht UserControl1. Klicken Sie ins Feld hinter Name, und geben Sie als neuen Namen ein: Objekt.
Bild 7.6: Geben Sie auch Ihrem Control-Objekt einen besseren Namen
7.1
Die Visual Basic CCE startklar machen
185
Ihr neues COM-Objekt heißt nun mit vollem Namen test.Objekt. Kommt Ihnen das bekannt vor? Genau: Auch die übrigen System-Objekte wurden über Namen angesprochen, die aus zwei Teilen bestehen. Das Scripting.FileSystemObject ist also in Wirklichkeit ein Projekt namens Scripting mit dem COM-Objekt namens FileSystemObject. Die Magie enträtselt sich.
7.1.3
Ihr neues COM-Objekt mit Leben füllen
Bislang kann Ihr neues COM-Objekt noch nichts für Sie tun. Es ist schließlich noch vollkommen leer. Damit Sie es mit Sinn füllen, klicken Sie in der Mitte mit der rechten Maustaste auf das graue Rechteck und wählen View Code. Der Programmier-Editor öffnet sich.
Bild 7.7: Schalten Sie in die Code-Sicht um
Formulieren Sie nun Ihre erste eigene Script-Befehlserweiterung! Das ist nicht schwierig, denn in der VB CCE wird Visual Basic gesprochen. Ihre Scriptsprache VBScript ist bloß eine Untermenge, und so reichen die ganz normalen Scriptkenntnisse aus. Geben Sie in den Editor diesen Code ein: Public Function AskForNumber(prompt, Optional ByVal vorgabe As String = "") ’ fragt nach einer Zahl Do ' falls mehr als einmal gefragt werden muß, ' einen Hinweis an den Benutzer ausgeben If fehler Then MsgBox "Sie haben keine Zahl eingegeben! " _ & "Bitte wiederholen!", vbExclamation End If ' Nach der Zahl fragen: zahl = InputBox(prompt, , vorgabe) ' Warnmeldung aktivieren, die angezeigt wird, ' falls ein weiteres Mal gefragt werden muß fehler = True ' so lange abfragen, bis entweder eine Zahl eingegeben ' oder auf Abbrechen geklickt wurde:
186
Kapitel 7: Eigene Script-Befehlserweiterungen schreiben
Loop Until (IsNumeric(zahl) Or zahl = "") AskForNumber = zahl End Function
Während Sie den Code eingeben, werden Sie die erste Überraschung erleben: Der Editor ist kein normaler Editor, sondern eine Entwicklungsumgebung. Sie unterstützt Ihre Programmierung und blendet in InfoTip-Fenstern zuvorkommend die genaue Befehlssyntax ein.
Bild 7.8:
Los geht’s: Mit der VB CCE schreiben Sie Programme ebenso einfach wie im Texteditor Scripts
Tip: Projekt vorgekaut – viel bequemer! Sie finden das gesamte Beispielprojekt auch auf der Buch-CD, und zwar im Ordner BEISPIELE\ PROJEKT1. Öffnen Sie einfach die Projektdatei namens Projekt1.VBS mit Ihrer VB CCE. Dazu wählen Sie im File-Menü den Befehl Open.
7.1.4
Ihr COM-Objekt testen: Kompilieren
Ihr Code »steht«? Gut! Damit Ihnen Ihr neuer Code etwas nutzt, muß das eigentliche COM-Objekt erstellt werden. Dazu wählen Sie im File-Menü den Befehl Make test.ocx. Ein Fenster öffnet sich und will wissen, wo Sie Ihr neues COM-Objekt speichern wollen.
7.1
Die Visual Basic CCE startklar machen
187
Falls Sie keine schwerwiegenden Fehler gemacht haben, wird Ihr Code anstandslos kompiliert, und die VB CCE bastelt daraus ein eigenständiges COM-Objekt. Speichern Sie anschließend schnell noch Ihr Programmierprojekt, damit Sie später daran weiterarbeiten können. Tip: Projekte in separaten Ordnern aufbewahren! Gewöhnen Sie sich am besten gleich an etwas Haushaltsordnung. Alle Projekte, die Sie anlegen, speichern Sie am besten in separaten neuen Ordnern, damit die Einzelteile Ihrer Projekte nicht durcheinandergeraten.
7.1.5
Der erste Versuch: Ihren neuen Befehl von Scripts aus ansprechen
Innerhalb der VB CCE können Sie Ihren Programmcode nicht testen. Erinnern Sie sich? Die VB CCE kann keine eigenständigen Programme erzeugen. Testen Sie Ihre Befehlserweiterung deshalb gleich mit einem eigenen Script. Das könnte so aussehen: set myobj = CreateObject("test.objekt") zahl = myobj.AskForNumber("Zahl eingeben!") if zahl="" then MsgBox "Sie haben abgebrochen!" else MsgBox "Sie haben diese Zahl eingegeben: " & zahl end if MsgBox myobj.AskForNumber("Ihr Alter?", "32")
Es funktioniert! Ihr neues Objekt ist tatsächlich als test.Objekt ansprechbar und liefert die neue Funktion AskForNumber. Damit können Sie nach Zahlen fragen. Die Funktion akzeptiert außerdem optional einen zweiten Parameter, über den ein Vorgabewert ins InputBox-Fenster eingetragen wird.
Bild 7.9: Diese Dialogfenster und die Numerikprüfung stammen von Ihrer Befehlserweiterung!
Tip: Fehler korrigieren – so geht’s! Sollten in Ihrem COM-Objekt Fehler enthalten sein, dann entdecken Sie die meist spätestens, wenn Sie die neue COM-Objekt-Funktion per Script ausprobieren. Wechseln Sie in solch einem Fall einfach zurück in die VB CCE, korrigieren Sie den Fehler, und kompilieren Sie das Objekt mit Make aus dem File-Menü neu. Danach führen Sie Ihr Script noch einmal aus und prüfen, ob der Fehler beseitigt ist.
188 7.1.6
Kapitel 7: Eigene Script-Befehlserweiterungen schreiben
Die Vorteile neuer COM-Objekte
Bisher hat Ihr COM-Objekt zwar einen neuen Befehl erfunden, aber der geht nicht über die Möglichkeiten hinaus, die Sie auch mit reinem VBScript gehabt hätten. Kein Wunder, Ihr COM-Objekt hat ja auch nur die reinen VBScript-Befehle genutzt, und nicht die zusätzlichen Möglichkeiten von Visual Basic. Trotzdem hat bereits dieses einfache Beispiel einige wichtige Vorteile deutlich gemacht:
Kompakt und gesichert: Ihr COM-Objekt ist kompakt, und Ihr Programmcode kann nicht mehr von jedermann gelesen werden.
Sie könnten nun zum Beispiel immer wieder benötigte Routinen als COM-Objekt formulieren und so in jedem Script blitzschnell verfügbar machen. Das Script bleibt dadurch schlank und überschaubar.
Sprachunabhängig: COM-Objekte sind universell einsetzbar. Sie können Ihr neues Objekt auch in anderen Sprachen wie JavaScript einsetzen. Da JavaScript keine MsgBox-Funktion kennt, mit der Sie Meldungen ausgeben, ließe sich diese Funktion nun via COM-Objekt nachrüsten.
Optionale Parameter: Ein Feature von Visual Basic hat Ihr erstes Projekt bereits mit Erfolg eingesetzt – optionale Parameter. Mit Optional ByVal machen Sie Argumente optional. Der Anwender braucht dieses Argument also nicht unbedingt anzugeben. Mit VBScript geht so etwas nicht.
Sobald Sie die VB CCE und Visual Basic etwas genauer kennenlernen – und das passiert in wenigen Minuten –, gewinnen Sie eine ganze Reihe weiterer Vorteile hinzu:
Eigene Dialogfenster: Genügen Ihnen das MsgBox- und InputBox-Fenster nicht? Dann generieren Sie sich einfach maßgeschneidert das Dialogfenster, das Ihnen gerade fehlt! COM-Objekte können Fenster anzeigen, deren Inhalt Sie völlig selbst gestalten können.
Echte neue Befehle: Visual Basic kann im Gegensatz zu VBScript auf alle internen WindowsBefehle zugreifen. Solche API-Befehle sind die Grundlage wirklich neuer Scriptbefehle. Dank dieser Möglichkeiten bringen Sie Ihren Scripts prinzipiell jede gewünschte Funktion bei – Schluß mit Limits!
7.2
Die Windows-API verwenden: CD-ROM-Schublade öffnen und schließen
Wie mächtig und dabei relativ überschaubar echte Befehlserweiterungen sind, zeigt das nächste Beispiel. Es verwendet eine der Windows-Grundfunktionen, um die Schublade Ihres CD-ROMLaufwerkes aus- und einzufahren. Hier wird sofort klar: Diesmal liefert Ihr COM-Objekt wirklich eine vollkommen neue Funktion.
7.2
7.2.1
Die Windows-API verwenden: CD-ROM-Schublade öffnen und schließen
189
Ein neues Projekt starten
Wissen Sie noch, wie Sie ein neues Projekt starten? Hier noch einmal die grundlegenden Schritte: 1. Starten Sie die VB CCE: Im Startmenü wählen Sie Programme, dann Visual Basic 5.0 CCE. Klicken Sie auf Visual Basic 5.0 CCE. Falls die VB CCE bereits lief, wählen Sie New Project. Die VB CEE fragt nach, falls das alte Projekt noch nicht gespeichert war. 2. Suchen Sie sich als Projekt aus: ActiveX Control. Klicken Sie dann mit der rechten Maustaste auf das graue Rechteck in der Bildmitte, und wählen Sie View Code. Jetzt sehen Sie den Editor. 3. Klicken Sie nun rechts im Project Explorer auf den obersten Eintrag: Project1. Im PropertiesFenster darunter geben Sie Ihrem Projekt einen Namen, zum Beispiel CDROM. 4. Klappen Sie im Project Explorer die Unterzweige aus, bis Sie Ihr UserControl sehen. Klicken Sie auf UserControl1, und geben Sie auch Ihrem COM-Objekt im Properties-Fenster einen neuen Namen – zum Beispiel helper. Ihr neues Objekt hört nun auf den Namen cdrom.helper. Tip: Projekt aus der Konserve Sie können auch das gesamte Projekt laden. Ich habe es auf der Buch-CD im Ordner BEISPIELE/ PROJEKT2 für Sie gespeichert.
7.2.2
Die CD-ROM-Schublade fernsteuern
Nun geben Sie ins Editor-Fenster diesen Code ein: Private Declare Function mciSendString Lib "winmm.DLL" Alias _ "mciSendStringA" (ByVal lpstrCommand As String, ByVal _ lpstrReturnString As String, ByVal wReturnLength As Integer, _ ByVal hCallback As Integer) As Long Sub SchubladeAuf() Call mciSendString("Set CDAudio Door Open Wait", 0&, 0, 0) End Sub Sub SchubladeZu() Call mciSendString("Set CDAudio Door Closed Wait", 0&, 0, 0) End Sub
Neu an diesem Code ist das Visual Basic-Sprachelement Declare. Mit Declare machen Sie sich Windows-API-Befehle gefügig. Declare liefert dazu alle Informationen, die nötig sind, um die Windows-Grundfunktionen anzusprechen. Im Beispiel verwendet das Programm die Funktion mciSendString aus der Windows-Bibliothek winmm.dll. Alias legt den »echten« Namen dieser Funktion fest: mciSendStringA. Aufpassen: Hier wird zwischen Groß- und Kleinschreibung penibel unterschieden! Anschließend legt Declare fest, welche Argumente die Funktion erwartet und welche sie gegebenenfalls zurückliefert.
190
Kapitel 7: Eigene Script-Befehlserweiterungen schreiben
mciSendString ist ein Universalbefehl, um jede Art von Multimediagerät fernzusteuern. CD-ROMs gehören in diese Gruppe, weil CD-ROMs neben reinen Datenscheiben auch Audio und Video enthalten können. Tip: Woher bekommt man Infos über API-Befehle? Leider sind Informationen über die Windows-API schwer zu bekommen. Zwar gibt es etliche Referenzen (zum Beispiel das Windows SDK von Microsoft), doch die sind in aller Regel nicht für Visual Basic gemacht. Die Beispiele in solchen Referenzen orientieren sich an der »Profi«-Programmiersprache C. Besser fahren Sie deshalb, wenn Sie sich an den vielen Programmbeispielen in diesem Buch orientieren. Wer noch mehr wissen möchte, sollte im Internet eine der zahlreichen VisualBasic-Webseiten besuchen. Hier gibt’s ebenfalls viele Praxisbeispiele.
Die eigentliche Befehlserweiterung – die Befehle SchubladeAuf und SchubladeZu – ist simpel: beide Befehle verwenden lediglich mciSendString, um die entsprechende Anweisung an das CD-ROMLaufwerk zu senden. Probieren Sie Ihre neue Befehlserweiterung aus! Kompilieren Sie Ihr Projekt: Im File-Menü wählen Sie Make cdrom.ocx. Jetzt brauchen Sie nur noch ein Testscript, das die neuen Funktionen einsetzt. Das könnte so aussehen: ’ 7-2.vbs set myobj = CreateObject("cdrom.helper") MsgBox "Ich öffne nun die CD-ROM Schublade!" myobj.SchubladeAuf MsgBox "Jetzt wird die Schublade wieder geschlossen!" myobj.SchubladeZu MsgBox "Fertig!"
Erstaunlich, oder? Es funktioniert! Sie haben soeben mit einem kleinen COM-Objekt zwei neue wichtige Funktionen bereitgestellt. Tip: Mehr als ein CD-ROM-Laufwerk steuern Natürlich ist dies nur ein erster Test. Wenn Sie zum Beispiel mehr als ein CD-ROM-Laufwerk besitzen, dann wollen Sie sicher wissen, wie Sie aussuchen, welches geöffnet wird. Dies und mehr ist Thema in Kapitel 8.
7.3
Eigene Dialogfenster entwerfen
Ihnen genügen die Dialogfenster MsgBox und InputBox nicht? Sie brauchen bessere Dialogfenster, womöglich maßgeschneidert für Ihr Projekt? Dann basteln Sie sich welche! Das ist mit der VB CCE gar nicht so schwer. Legen Sie zuerst wie oben beschrieben ein neues Projekt an. Geben Sie dem Projekt den Namen dialog und dem COM-Objekt den Namen fenster.
7.3
Eigene Dialogfenster entwerfen
191
Tip: Projekt direkt von der CD-ROM öffnen Sie finden das komplette Projekt auch auf der Buch-CD: BEISPIELE/PROJEKT3. Wählen Sie im FileMenü der VB CCE Open, und öffnen Sie das Projekt DIALOG.VBP.
7.3.1
Ein Dialogfenster gestalten
Ihr COM-Objekt selbst kann nicht als Fenster erscheinen. COM-Objekte könnten höchstens in Webseiten eingebettet werden. Was Sie brauchen ist eine Form. Form (oder Formular) ist ein zusätzliches Element. So bekommen Sie eine Form: 1. Klicken Sie im Project Explorer mit der rechten Maustaste auf den obersten Eintrag. Er sollte dialog heißen, wenn Sie Ihr Projekt bereits wie oben beschrieben umbenannt haben.
Bild 7.10: Fügen Sie ein neues Formular hinzu, wenn Sie eigene Fenster brauchen
2. Wählen Sie im Kontextmenü Add und Form. Ihnen wird ein Form-Objekt angeboten. Klicken Sie auf Öffnen. 3. Ein Blick in den Project Explorer zeigt: Ihr Projekt enthält jetzt zwei Elemente, das COM-Objekt und die Form. Klicken Sie auf Form1, um zur Form umzuschalten. In der Bildmitte liegt wieder ein graues Rechteck. Das ist Ihr neues leeres Dialogfenster. 4. Gestalten Sie nun Ihr Dialogfenster! Dazu doppelklicken Sie links in der Toolbox auf die Elemente, die Sie in Ihrem Dialogfenster einsetzen wollen. Lassen Sie uns ein Dialogfenster entwerfen, mit dem man zwischen mehreren Optionen wählen kann. 5. Doppelklicken Sie zuerst auf das Rahmenelement. In Ihrem Formular erscheint ein Rahmen. Ziehen Sie ihn so zurecht, daß er Ihr Dialogfenster wie in der Abbildung umrahmt.
192
Kapitel 7: Eigene Script-Befehlserweiterungen schreiben
Bild 7.11: Dialogfenster selbst gestalten – mit Formularen geht‘s
6. Fügen Sie als nächstes nacheinander vier Optionskästchen per Doppelklick in die Form ein. Jedesmal, wenn Sie ein Optionskästchen hinzugefügt haben, drücken Sie [Strg]+[X], um es auszuschneiden. Dann klicken Sie auf den Rahmen, den Sie gerade eben in die Form eingefügt haben, und drücken [Strg]+[V]. So wird das Optionskästchen innerhalb des Rahmens eingefügt. Das ist wichtig!
Bild 7.12: In der Toolbar finden Sie alle Bedienelemente für Ihr Dialogfenster
7. Ordnen Sie die Optionskästchen untereinander an, und machen Sie jedes Element so breit wie innerhalb des Rahmens möglich. 8. Wenn alle vier Optionskästchen eingefügt und zurechtgerückt sind, fügen Sie noch zwei Schaltflächen hinzu und ordnen sie unterhalb des Rahmens an. Rücken Sie alles noch etwas zurecht. Ihr Dialogfenster könnte nun so aussehen:
7.3
Eigene Dialogfenster entwerfen
193
Bild 7.13: Optionsfelder auf das Dialogfenster setzen
Ihr Dialogfenster ist jetzt in den Grundzügen fertig. Als nächstes kommen die Beschriftungen an die Reihe, und auch das Fenster selbst kann etwas Feintuning gebrauchen: 1. Legen Sie alle Beschriftungen fest, die vorgegeben sein sollen. Klicken Sie zum Beispiel die linke Schaltfläche an. Rechts im Properties-Fenster können Sie jetzt im Eigenschaften-Feld Caption eine Beschriftung aussuchen. Ersetzen Sie Command2 durch OK. Verfahren Sie mit der anderen Schaltfläche genauso, und nennen Sie die Abbrechen. Tip: Aus Versehen gedoppelklickt? Macht nichts! Haben Sie aus Versehen auf eine der Schaltflächen gedoppelklickt? Die VB CCE schaltet daraufhin in den Programmeditor, denn sie geht davon aus, daß Sie der Schaltfläche Programmcode zuordnen wollen. Das ist zwar sehr zuvorkommend, aber noch etwas verfrüht. Klicken Sie einfach rechts im Project Explorer mit der rechten Maustaste auf Form1, und wählen Sie View Object. Schon sind Sie wieder im Design-Studio.
2. Stellen Sie bei allen Beschriftungen, die Sie später per Script von Fall zu Fall festlegen wollen, die Caption-Eigenschaft auf leer ein. Dazu klicken Sie in Ihrem Formular auf das gewünschte Element und löschen dann im Properties-Fenster das Caption-Feld. Nun wird es Zeit, Ihrem neuen COM-Objekt Befehle beizubringen. Zuerst sollen eine Reihe von Eigenschaften definiert werden, mit denen Sie die einzelnen Beschriftungen des Dialogfensters setzen. Klicken Sie im Project Explorer mit der rechten Maustaste auf Ihr COM-Objekt fenster, und wählen Sie View Code. Dann geben Sie diesen Code ein: ' Überschrift des Fensters festlegen: Public Property Let Title(ByVal text As String) Form1.Caption = text End Property ' Überschrift des Rahmens festlegen: Public Property Let Subtitle(ByVal text As String) Form1.Frame1.Caption = text End Property ' Den Text der vier Optionsfelder festlegen Public Property Let Option1(ByVal text As String) Form1.Option1.Caption = text
194
Kapitel 7: Eigene Script-Befehlserweiterungen schreiben
End Property Public Property Let Option2(ByVal text As String) Form1.Option2.Caption = text End Property Public Property Let Option3(ByVal text As String) Form1.Option3.Caption = text End Property Public Property Let Option4(ByVal text As String) Form1.Option4.Caption = text End Property ’ den Modus der vier Optionsfelder festlegen ' 0 = nicht gewählt (Vorgabe) ' 1 = gewählt ' 2 = abgeblendet Public Property Let Option1Mode(ByVal modus As Integer) If modus = 2 Then Form1.Option1.Enabled = False Else Form1.Option1.Value = modus End If End Property Public Property Let Option2Mode(ByVal modus As Integer) If modus = 2 Then Form1.Option2.Enabled = False Else Form1.Option2.Value = modus End If End Property Public Property Let Option3Mode(ByVal modus As Integer) If modus = 2 Then Form1.Option3.Enabled = False Else Form1.Option3.Value = modus End If End Property Public Property Let Option4Mode(ByVal modus As Integer) If modus = 2 Then Form1.Option4.Enabled = False Else Form1.Option4.Value = modus End If End Property ' Dialogfenster anzeigen
7.3
Eigene Dialogfenster entwerfen
195
Public Function ShowDialog() Form1.Show vbModal ShowDialog = Form1.ergebnis Unload Form1 End Function
Sie sehen nun eine ganze Reihe von Public Property Let-Blöcken. Damit werden Eigenschaften Ihres Objekts festgelegt. Let bedeutet: Sie können per Script dieser Eigenschaft einen Wert zuweisen, aber die Eigenschaft nicht auslesen. Es ist eine »Write Only«-Eigenschaft, und das genügt vollauf. Mit den neuen Eigenschaften weisen Sie den einzelnen Elementen Ihres Dialogfensters Beschriftungen zu. Das Prinzip ist einfach: Der Code verfüttert Ihren Text an die Caption-Eigenschaft des gewünschten Elements. Etwas anders funktionieren die OptionxMode-Eigenschaften. Sie regeln, ob ein Optionsfeld vorgewählt oder abgeblendet ist. Geben Sie 2 ein, dann wird die Enabled-Eigenschaft des Objekts auf false gesetzt. Das Optionselement erscheint abgeblendet. Die 1 wählt das Optionsfeld aus, so daß es bereits vorgewählt erscheint. Damit Ihre Scripts das Dialogfenster überhaupt sichtbar machen können, gibt es außerdem die Funktion ShowDialog. Sie ruft mit Form1.Show vbModal das Dialogfenster auf den Bildschirm. Sobald das Dialogfenster seine Arbeit erledigt hat, liest dieser Programmteil das Ergebnis aus der Formularvariablen ergebnis aus und liefert es an Ihr Script zurück. Nur: Woher kommt das Formular-Ergebnis? Dazu bringen Sie dem Formular noch etwas Intelligenz bei: 1. Klicken Sie im Project Explorer mit der rechten Maustaste auf Ihr Formular: Form1. Dann wählen Sie View Code. 2. Geben Sie nun diesen Code ein: Public ergebnis As Integer Private Sub Command1_Click() ' ausführen, wenn auf Abbrechen geklickt wird ergebnis = -1 Form1.Hide End Sub Private Sub Command2_Click() ' ausführen, wenn auf OK geklickt wird If Option1 Then ergebnis = 1 ElseIf Option2 Then ergebnis = 2 ElseIf Option3 Then ergebnis = 3 ElseIf Option4 Then ergebnis = 4 Else ergebnis = 0
196
Kapitel 7: Eigene Script-Befehlserweiterungen schreiben
End If Form1.Hide End Sub
Zuerst definieren Sie mit Public eine öffentliche Variable namens ergebnis. Die speichert später das Ergebnis der Auswahl, und weil Sie die Variable mit Public für öffentlich erklärt haben, kann Ihr COM-Objekt anschließend den Wert daraus auslesen.
Bild 7.14: Über Events – Ereignisse – reagiert Ihr Code auf Tastendrücke
Außerdem definieren Sie zwei Prozeduren, die ausgeführt werden, wenn eine der beiden Schaltflächen betätigt wird. Solche »Event«-Prozeduren heißen immer so wie das Steuerelement, für das sie zuständig sein sollen. Dahinter folgt ein Unterstrich und dann der Name des Events, der die Prozedur aktivieren soll. Die Prozedur Command1_Click() wird also automatisch immer dann ausgeführt, wenn jemand auf die Schaltfläche Command1 klickt. Tip: Event-Prozeduren mit eingebauter Hilfe! Sie brauchen Ihr Formular nur per Rechtsklick und View Object in den Designmodus zu schalten und dann das gewünschte Schaltelement doppelklicken. Zuvorkommend legt VB CCE nun die Event-Prozedur von ganz allein an. In der rechten Ausklappliste am Oberrand des Texteditors können Sie sich dann auch alle anderen Events dieses Steuerelements ansehen.
7.3
Eigene Dialogfenster entwerfen
197
Klickt jemand auf den Abbrechen-Knopf, dann setzt das Formular das Ergebnis auf –1 und versteckt dann mit Hide das Formular. Das ist wichtig, denn nur wenn das Formular verschwindet, kann Ihr COM-Objekt weiterarbeiten. Show vbModal wartet nämlich so lange, bis das Fenster geschlossen wird. Klickt dagegen jemand auf OK, dann schaut sich die Prozedur die Werte in den vier Optionsfeldern an. Das Optionsfeld, das true zurückliefert, ist ausgewählt. Diesen Wert schreibt es in die Ergebnis-Variable, und danach wird auch hier das Fenster unsichtbar gemacht. Die Prozedur ShowDialog in Ihrem COM-Objekt hatte mit Form1.Show vbModal die Kontrolle vorübergehend an Ihr Formular abgegeben. Nun wo das Formular über Form1.Hide unsichtbar ist, kann es weitermachen. Es liest das Ergebnis aus der Formularvariablen ergebnis und liefert es als Rückgabewert an Ihr Script zurück. Danach wirft es das Formular aus dem Speicher: Unload Form1.
7.3.2
Der Test: Ihr eigenes Dialogfenster im Einsatz testen
Sobald Sie Ihr neues COM-Objekt mit Make aus dem File-Menü kompiliert haben, können Sie es für sich schuften lassen. So einfach bekommen Sie Optionsauswahlen nun hin: ’ 7-3.vbs set myobj = CreateObject("dialog.fenster") ’ Fenster definieren myobj.Title = "Mein Abfragefenster" myobj.SubTitle = "Bitte wählen Sie aus:" myobj.Option1 myobj.Option2 myobj.Option3 myobj.Option4
= = = =
"Rechner herunterfahren" "Rechner neu starten" "Neu anmelden" "Kaffee trinken"
' Option 2 vorwählen myobj.Option2Mode = 1 ' Option 4 ausblenden myobj.Option4Mode = 2 ' Fenster anzeigen ergebnis = myobj.ShowDialog if ergebnis = -1 then MsgBox "Sie haben abgebrochen!" elseif ergebnis = 0 then MsgBox "Sie haben nichts ausgewählt!" else MsgBox "Ihre Wahl: " & ergebnis end if
198
Kapitel 7: Eigene Script-Befehlserweiterungen schreiben
Ihr neues Dialogfenster funktioniert prächtig:
Bild 7.15: Ab sofort möglich: völlig selbstgestaltete Dialogfenster
7.3.3
Wichtige Rahmen-Kosmetik
Alles funktioniert prima, nur eine Sache nicht: Wenn Sie nämlich das Dialogfenster per Maus vergrößern, dann vergrößert sich nur das Fenster, aber nicht sein Inhalt. Und außerdem wäre es schöner, wenn Ihr Dialogfenster immer zentriert auf dem Bildschirm erscheint. Wechseln Sie deshalb noch einmal in Ihr Projekt. Dann machen Sie folgendes: 1. Suchen Sie sich im Project Explorer das Formular heraus, und klicken Sie auf Form1. 2. Stellen Sie oben in der Ausklappliste des Properties-Fensters ein: Form1 Form. Jetzt zeigt das Fenster die Eigenschaften des Formularfensters an. 3. Stellen Sie die Eigenschaft BorderStyle auf 3: Fixed Dialog. Jetzt kann die Fenstergröße nicht mehr geändert werden. 4. Scrollen Sie die Liste abwärts, und stellen Sie die Eigenschaft StartupPosition auf 2 : Centered Screen. 5. Kompilieren Sie Ihr Projekt erneut mit Make aus dem File-Menü. Speichern Sie Ihr Projekt dann ab, und probieren Sie Ihr Script noch einmal aus. Tatsächlich: Nun kann das Fenster nicht mehr vergrößert werden, und das Dialogfenster erscheint automatisch in Bildschirm-Mitte. Na also, geht doch.
7.4
Ihre neuen COM-Objekte an andere weitergeben
Sicherlich werden Sie Ihre selbstgemachten COM-Objekte irgendwann auch einmal auf einem anderen Computer nutzen oder sogar an Kunden weitergeben wollen. Wie geht das? Natürlich könnten Sie auf dem Zielcomputer ebenfalls die VB CCE installieren und dort Ihr Programm erneut kompilieren. Tatsächlich ist das sogar der technisch beste Weg, denn Sie gehen damit einer ganzen Reihe von Problemen aus dem Weg. Nur ist diese Variante häufig nicht praktikabel.
7.4
7.4.1
Ihre neuen COM-Objekte an andere weitergeben
199
COM-Objekte direkt weitergeben
Der zweitbeste Weg ist deshalb, Ihr kompiliertes COM-Objekt weiterzugeben. Dieses COM-Objekt verbirgt sich in der OCX-Datei, die Sie mit der VB CCE angelegt haben. Kopieren Sie diese OCXDatei einfach in den System-Ordner auf dem Zielrechner, oder legen Sie es in einem anderen Ordner ab, der nicht gerade in den nächsten Tagen einer Löschaktion zum Opfer fällt. Damit Scripts Ihr neues COM-Objekt auch nutzen können, muß es zusätzlich registriert werden. Dazu wählen Sie im Startmenü des Zielrechners Ausführen und geben dann in der Befehlszeile ein: REGSVR32 Pfadname, wobei Sie Pfadname durch den Pfadnamen zu Ihrem COM-Objekt ersetzen. Allerdings gibt es eine Falle: Ihre eigenen COM-Objekte sprechen intern Visual Basic und sind auf die Runtime-Bibliothek von Visual Basic angewiesen. Wenn Sie also nicht genau wissen, ob sich die Runtime-Dateien von Visual Basic 5.0 auf dem Zielrechner befinden, dann müssen Sie sie ebenfalls weitergeben. Die Runtime-Dateien bekommen Sie zum Beispiel hier: support.microsoft.com/ support/vbasic/runtime.asp. Wählen Sie dann die Datei MSVBVM50.EXE.
7.4.2
Eigene Setup-Pakete schnüren
Sobald Ihre Projekte komplexer werden und Sie zum Beispiel zusätzliche Steuerelemente oder Referenzen zu anderen Objekten verwenden, wird es schwierig festzulegen, welche Dateien Ihr Projekt tatsächlich benötigt. In diesem Fall kann Ihnen der Application Setup Wizard helfen, den Sie in derselben Programmgruppe finden wie die VB CCE. Dieser Assistent will zuerst mit Ihrem Projekt gefüttert werden: Geben Sie die vbp-Datei an, in der Sie Ihr Projekt gespeichert haben. Anschließend ermittelt der Assistent, welche Dateien für Ihr COM-Objekt gebraucht werden, und schnürt daraus ein Paket. Sie können sich aussuchen, ob Sie dieses Paket per Disketten oder in einem einzelnen Ordner sammeln und dann weitergeben möchten.
Bild 7.16: Der Application Wizard bastelt für Sie Setup-Pakete zur Weitergabe an andere
200
Kapitel 7: Eigene Script-Befehlserweiterungen schreiben
Obwohl der Assistent auf den ersten Blick am elegantesten erscheint, birgt er doch etliche Tücken. So kann es Ihnen passieren, daß als Teil Ihres Pakets Objekte eingeschlossen werden, die auf dem Zielrechner bereits in einer neueren Version vorliegen. Unter Umständen werden also diese neueren Komponenten von Ihrem Setup-Paket überschrieben, und das Ergebnis sind dann Probleme. Solche Probleme sind vor allen Dingen bekannt geworden, wenn Sie auf dem Zielrechner den Internet Explorer 5 einsetzen und als Betriebssystem Windows NT verwenden. Leider gibt es keine Patentlösung für dieses Problem. Der professionellste – allerdings auch aufwendigste – Weg ist, auf dem Entwicklungssystem möglichst genau dieselben Komponenten zu verwenden wie auf den Zielsystemen. Planen Sie also, COM-Objekte für Windows NT-Benutzer mit IE5 zu entwickeln, dann setzen Sie selbst ebenfalls Windows NT mit IE5 ein. Weniger schön.
7.4.3
Empfehlungen aus der Praxis
Falls irgend möglich, sollten Sie COM-Objekte entweder via OCX-Datei und Runtime-Paket weitergeben oder sogar den Quellcode zusammen mit der VB CCE auf dem Zielrechner neu kompilieren. Visual Basic brilliert zwar durch seine leichte Anwendbarkeit, eignet sich aber nur schlecht, um die damit erstellten COM-Objekte universell weiterzugeben. Für kommerzielle Zwecke lohnt sich eher, auf C++ auszuweichen. Visual Basic ist in erster Linie für Ihre eigenen Entwicklungen auf dem persönlichen Rechner oder im überschaubaren Firmennetzwerk gedacht.
201
8
Programmier-Trickkiste
Sie wissen inzwischen, wie einfach Sie mit der kostenlosen VisualBasic Control Creation Edition (VB CCE) eigene Befehlserweiterungen für Ihre Scripts basteln. Daß diese Befehlserweiterungen weit mehr können als nur CD-Schubladen auf- und zuzuklappen, das beweist dieses Kapitel. Hier finden Sie fix und fertige Projekte zu allen Themen rund um Windows.
8.1
Befehlserweiterungen zum Leben erwecken
Um die Befehlserweiterungen live und in Farbe auszuprobieren, gehen Sie immer auf die gleiche Weise vor: 1. Öffnen Sie die VB CCE, die Sie wie in Kapitel 7 beschrieben installiert haben. Wählen Sie dann als Projekt ein ActiveX-Projekt, oder drücken Sie auf [Esc]. 2. Wählen Sie im File-Menü Open, und öffnen Sie dann auf der Buch-CD den Ordner mit dem Projekt, das Sie interessiert. Öffnen Sie dann das Projekt. 3. Um das Projekt zu kompilieren, wählen Sie im File-Menü Make und speichern die OCX-Datei dann in Ihrem Windows-Ordner. Fertig.
8.1.1
VBP-Projektdateien mit der VB CCE verknüpfen
Sie können die Projektdateien auch direkt von der CD-ROM aus öffnen. Dazu müssen Sie nur Dateien vom Typ VBP mit der VB CCE verknüpfen. Das geschieht so: 1. Klicken Sie mit der rechten Maustaste auf den Startknopf, und wählen Sie Suchen. 2. Ins Feld Name geben Sie ein: 5.0 CCE [Enter]. Die Programmverknüpfung mit der VB CCE wird gefunden. 3. Klicken Sie die Verknüpfung (nicht die Programmgruppe!) mit der rechten Maustaste an, und wählen Sie Eigenschaften. 4. Klicken Sie auf das Register Verknüpfung. Im Feld Ziel ist der Programmaufruf schon für Sie markiert. Klicken Sie mit der rechten Maustaste auf den markierten Text, und wählen Sie Kopieren. Dann schließen Sie alle Fenster. 5. Wechseln Sie nun im Explorer zur Buch-CD, und lassen Sie sich eine VBP-Datei heraussuchen. Öffnen Sie die Datei.
202
Kapitel 8: Programmier-Trickkiste
6. Weil bisher noch kein Programm für VBP-Dateien zuständig ist, öffnet sich das Öffnen mitFenster. Klicken Sie auf Andere, und klicken Sie dann mit der rechten Maustaste ins Feld Dateiname. Dort wählen Sie Einfügen. Dann klicken Sie auf Öffnen und OK. Fertig.
8.2
Anwendungen zuverlässig in den Vordergrund schalten
Vielleicht kennen Sie den Befehl SendKeys. Mit diesem Befehl versenden Sie Tastendrücke an jedes beliebige Programmfenster (mehr dazu finden Sie im Vorgängerband: Professional Series – Scripting Host Praxisbuch). Problematisch nur: SendKeys sendet »blind« an das Fenster, das im Vordergrund liegt, und Sie wissen weder, ob das gewünschte Fenster dort anzutreffen ist, noch haben Sie eine zuverlässige Möglichkeit, selbst ein Fenster in den Vordergrund zu schalten.
8.2.1
Umschaltsperre abschalten
Der Grund für dieses Malheur: Bei Windows 98 und 2000 gibt es neue eingebaute Hürden, die verhindern sollen, daß Programme einfach ihr Fenster in den Vordergrund schalten, obwohl Sie in einem anderen Fenster zu tun haben. Wenn Sie hier mit AppActivate versuchen, ein Fenster in den Vordergrund zu schalten, obwohl Ihr Script nicht die aktive Anwendung ist, dann blinkt bloß die Titelleiste des gewünschten Fensters heftig vor sich hin, aber das Fenster bewegt sich nicht von der Stelle. Schlecht, denn nun gehen die SendKeys-Tastendrücke an den falschen Empfänger. Das Projekt AppActivate liefert die nötigen fehlenden Befehle, um SendKeys endlich sinnvoll einsetzen zu können: Befehl
Bedeutung
GetActivation
Zeit in Millisekunden, die das aktive Programm unbenutzt sein muß, bevor andere Fenster in den Vordergrund geschaltet werden können Setzt den Grenzwert neu, zum Beispiel auf null Ersatz für AppActivate, falls Sie den WSH 1.0 verwenden ID-Nummer des Fensters im Vordergrund Name des Fensters im Vordergrund
Das nächste Script beweist die neuen Vorzüge. Es findet heraus, wie das Fenster im Vordergrund heißt. Dann startet es ein neues Programm, merkt sich auch dessen Fensternamen und schaltet die Fenster munter fünfmal hintereinander jeweils in den Vordergrund. Damit das klappt, wird während der Umschaltaktion die Umschaltsperre deaktiviert. Das Umschaltintervall wird dazu einfach auf 0 Millisekunden gesetzt. Jetzt endlich kann SendKeys sicher und zuverlässig dazu benutzt werden, Programme fernzusteuern: set tool = CreateObject("app.activate") set wshshell = CreateObject("WScript.Shell")
8.3
Bildschirmfotos schießen
203
fenstermomentan = tool.GetActiveWindowName ’ Notepad starten wshshell.Run "notepad.exe" ’ warten, bis Fenster vorn liegt do loop until tool.GetActiveWindowName<>fenstermomentan neuesfenster = tool.GetActiveWindowName ' jetzt ein bißchen protzen und die Fenster umschalten ' dazu die Umschaltsperre abschalten: intervall = tool.GetActivation tool.SetActivation(0) ' Umschalten: for x = 1 to 5 wshshell.AppActivate fenstermomentan WScript.Sleep 1000 wshshell.AppActivate neuesfenster WScript.Sleep 1000 next ' Sperre wieder aktivieren: tool.SetActivation(intervall)
8.3
Bildschirmfotos schießen
Bildschirm-Fotoapparate gibt es wie Sand am mehr, Windows hat sogar einen eingebauten Fotoapparat: mit [Druck] und [Alt]+[Druck] schicken Sie Erinnerungsfotos vom Bildschirm und von Fenstern direkt in die Zwischenablage, und von dort können Sie sie via Bearbeiten/Einfügen in jedes Programm einfügen. Auf diese Weise sind auch die Illustrationen zu diesem Buch entstanden. Nicht immer sind diese einfachen Methoden ausreichend. Manchmal wäre eine Art »Selbstauslöser« günstig, so daß Sie das betreffende Fenster in Ruhe in den Vordergrund schieben könnten. Interessant wäre auch die Möglichkeit, nur Teilbereiche eines Fensters zu knipsen. Die nächste Befehlserweiterug liefert all diese Möglichkeiten. Sie finden das Projekt als CAPTURE auf der Windows-CD. Hier die Möglichkeiten: Befehl
Foto des Bildschirms in Zwischenablage Foto des Bildschirms als BMP-Grafik speichern Aktives Fenster in Zwischenablage Aktives Fenster als BMP-Grafik speichern Beliebige Fenster-ID in Zwischenablage
Beliebige Fenster-ID als BMP-Grafik speichern Fenster unter Cursor in Zwischenablage Fenster unter Cursor als BMP-Grafik speichern
Tab. 8.2: Befehle des OLE.bitmap-Objekts
Die Befehle haben dabei teils einen eingebauten Selbstauslöser. Wenn Sie mögen, dann probieren Sie doch mal das nächste Script aus! Es speichert genau 5 Sekunden nach dem Warnschuß das Fenster, das sich unter dem Cursor befindet. Sie werden überrascht feststellen: Damit lassen sich sogar Teilbereiche eines Fensters »herausklauen«, weil viele Fenster in Wirklichkeit aus einer ganzen Armada von Unterfenstern bestehen.
Bild 8.1: Klauen Sie sich Unterfenster aus Windows oder anderen Programmen heraus
»Zielen« Sie doch mal auf die Start-Schaltfläche oder Schaltflächen-Elemente in Ihren Programmen! ’ 8-2.vbs set tool = CreateObject("OLE.bitmap") set wshshell = CreateObject("WScript.Shell") datei = "C:\test.bmp" MsgBox "Cursor auf gewünschtes Fenster bringen! Foto 5 Sekunden nach OK!", vbSystemModal if tool.CaptureCursorToFile(5, datei) then MsgBox "Aufname im Kasten!", vbSystemModal wshshell.Run datei else MsgBox "Aufnahme hat nicht funktioniert." end if
8.4
8.4
Die Zwischenablage lesen und ändern
205
Die Zwischenablage lesen und ändern
Ihre Scripts hatten bisher ein enormes Manko: Sie konnten nicht die Zwischenablage lesen oder dort eigene Informationen hinterlegen. Das ist erstaunlich, denn das VBScript-Mutterschiff Visual Basic macht den Zugriff auf die Zwischenablage ganz einfach. Wie Sie zumindest Text aus der Zwischenablage lesen und dort auch hinterlegen können, zeigt die nächste sehr einfache Befehlserweiterung. Sie finden Sie auf der Buch-CD als CLIPBOARD. Befehl
Bedeutung
SetClipboardText GetClipboardText
Schreibt Text in die Zwischenablage Liest Text aus der Zwischenablage
Tab. 8.3: Befehle des clip.board-Objekts
Das nächste Script kann sehr nützlich werden: Ziehen Sie einfach Dateien auf das Script-Icon, und schon schreibt das Script den Namen der Datei in die Zwischenablage. Sowas eignet sich auch hervorragend für eigene Befehle in Kontextmenüs: ’ 8-3.vbs set tool = CreateObject("clip.board") set args = WScript.Arguments if args.Count>0 then tool.SetClipboardText args(0) MsgBox "Dateiname in Zwischenablage geschrieben." else MsgBox "Bitte ziehen Sie eine Datei auf mich!" end if
8.5
Echte Laufwerksgrößen – ohne 2 GB Bug!
Das Scripting.FileSystemObject lügt! Wenn Sie Festplattenpartitionen einsetzen, die größer sind als 2 GB, dann kann sich das etwas altertümliche Objekt nicht vorstellen, daß es so etwas wirklich gibt, und kürzt die Größe kurzerhand auf 2 GB. Das Ergebnis sind falsche Werte. Der Grund für diese Eigenmächtigkeit: Erst mit Einzug von Windows 95 OSR2 und dem FAT32Dateisystem wurden Partitionsgrößen von mehr als 2 GB überhaupt möglich, und deshalb gibt es intern zwei Größenbestimmungsmethoden. Der WSH nutzt die alte, weil er nicht wissen kann, ob Ihr Computer die neue Funktion schon unterstützt.
206
Kapitel 8: Programmier-Trickkiste
Bild 8.2: Endlich möglich: die korrekten Werte auch sehr großer Festplatten bestimmen
Die nächste Befehlserweiterung ist schlauer. Sie schaut nach, ob bei Ihnen Partitionen größer als 2 GB möglich sind, und verwendet dann die neue Methode. Andernfalls verwendet es die alte. So sind alle glücklich, und Sie erhalten auf jeden Fall exakte Werte. Das Projekt finden Sie als FILESYS auf der Buch-CD. Befehl
Beschreibung
TotalSize FreeSpace
Gesamtgröße einer Partition Freier Speicherplatz der Partition
Tab. 8.4: Befehle des filesystem.tool-Objekts
Und so finden Sie die Werte heraus: ’ 8-4.vbs set tool = CreateObject("filesystem.tool") MsgBox "Untersuche Laufwerk C:" MsgBox "Gesamtgröße: " & tool.TotalSize("C:\") MsgBox "Freier Platz: " & tool.FreeSpace("C:\") MsgBox "Gesamtgröße: " & _ FormatNumber(tool.TotalSize("C:\")/1024^2,1) & "MB" MsgBox "Freier Platz: " & _ FormatNumber(tool.FreeSpace("C:\")/1024^2,1) & " MB"
8.6
Auswahldialog für Ordner
Windows hat einige geheime Dialogfenster parat, an die es normalerweise niemanden heranläßt. Eins davon ist das Ordner-Auswahlfenster. Die nächste Befehlserweiterung macht es Ihren Scripts zugänglich. Das Projekt finden Sie als FOLDERPICKER auf der Buch-CD. Die Befehlserweiterung kennt nur einen Befehl: BrowseForFolder. Damit suchen Sie sich beliebige Ordner heraus: Ordnername = BrowseForFolder(Startordner[[, Nachricht], Flags])
8.6
Auswahldialog für Ordner
207
Bild 8.3: Ordnernamen aus dem Ordner-Dialogfenster lesen
So einfach picken Sie sich einen Ordner heraus: ’ 8-5.vbs set tool = CreateObject("Folder.Tools") MsgBox tool.BrowseForFolder("C:\", "Suchen Sie sich was aus!")
8.6.1
Flags verwenden – und sogar Dateien aussuchen!
Mit den Flags – einem optionalen Parameter – bieten sich noch mehr Möglichkeiten. Hier die komplette Liste: Flag
Beschreibung
1 2 4 8 16 32 64 80 4096 8192 16384 16592 32768
Nur Ordner des lokalen Dateisystems Keine Netzwerkordner unterhalb des Domänenlevels anzeigen Statustext wird angezeigt Nur Objekte des lokalen Dateisystems anzeigen (4.71) Eingabefeld anzeigen (4.71) Nur geprüfte Eingaben akzeptieren (5.0) Neues Design verwenden (5.0) Neues Benutzerinterface Nur Computer anzeigen Nur Drucker anzeigen (4.71) Dateien und Ordner anzeigen (5.0) Auch URLs anzeigen (5.0) Freigegebene Ressourcen lassen sich anzeigen
Tab. 8.5: Geheime Flags des Browser-Dialogs machen noch mehr möglich
208
Kapitel 8: Programmier-Trickkiste
Wollen Sie mit dem Dialogfenster zum Beispiel nicht nur Ordner sehen, sondern auch Dateien aussuchen, dann setzen Sie einfach das passende Flag ein:
Bild 8.4: Mit den richtigen Flags werden sogar Dateien sichtbar ’ 8-6.vbs set tool = CreateObject("Folder.Tools") MsgBox tool.BrowseForFolder("C:\", "Dateien!", 16384)
8.6.2
Virtuelle Ordner – Ihr Dialogfenster spielt mit
Anstelle eines echten Pfadnamens können Sie Ihrem Dialogfenster auch eine Codezahl mit auf den Weg geben. Darüber sprechen Sie die vielen virtuellen Windows-Ordner an. Das nächste Script zeigt zum Beispiel, wie Sie die Systemsteuerung sichtbar machen: ’ 8-7.vbs set tool = CreateObject("Folder.Tools") MsgBox tool.BrowseForFolder(3, "Suchen Sie sich was aus!", 16384)
Besonders sinnvoll ist das aber nicht, denn hinter den Modulen stecken keine echten Dateinamen, so daß Ihre Funktion auch nichts zurückzuliefern hat. Schon besser ist das nächste Script. Es öffnet Ihre persönlichen Programmgruppen und läßt Sie ein Programm aussuchen. Das wird auf Wunsch sofort gestartet. ’ 8-8.vbs set tool = CreateObject("Folder.Tools") set wshshell = CreateObject("WScript.Shell") prg = tool.BrowseForFolder(2, "Programm starten!", 16384) ' ist es eine Verknüpfung? if lcase(right(prg,3))="lnk" then
8.6
Auswahldialog für Ordner
209
set scut = wshshell.CreateShortcut(prg) prg = scut.TargetPath end if wshshell.Run """" & prg & """"
Bild 8.5: Elegant Programme per Auswahldialog starten
Elegant, oder? Zwei spezielle Dinge zeigt das Script: Erstens müssen Verknüpfungen (die Dateien mit der Endung »lnk«) zuerst aufgeschraubt werden. Über CreateShortcut läßt sich in sie hineinschauen, um mit TargetPath festzustellen, auf welches »echte« Programm die Verknüpfung überhaupt verweist. Und zweitens verlangt Run den Befehl in Anführungszeichen. Zwei Anführungszeichen verschmelzen innerhalb von Anführungszeichen zu einem echten, daher die Inflation. Andererseits kann Run Verknüpfungen auch selbst auflösen, und Anführungszeichen lassen sich auch anders darstellen. Hier die Alternative: ’ 8-9.vbs set tool = CreateObject("Folder.Tools") set wshshell = CreateObject("WScript.Shell") prg = tool.BrowseForFolder(2, "Programm starten!", 16384) wshshell.Run chr(34) & prg & chr(34)
Hier die vollständige Übersicht über alle virtuellen Ordner: Konstante
Alternative Autostartgruppe Anwendungsdaten Papierkorb Alternative Autostartgruppe für alle Benutzer Anwendungsdaten für alle Benutzer Desktopordner für alle Benutzer
Favoriten für alle Benutzer Programme für alle Benutzer Startmenüobjekte für alle Benutzer Autostart für alle Benutzer Systemsteuerung Internet-Cookies Desktop Desktop-Ordner mit den persönlichen Dateien des Desktops Arbeitsplatz Favoriten-Ordner Schriftarten Verlauf-Ordner des Internet Explorers Internetpuffer (5.0) Lokale Applikationsdaten (5.0) Meine Bilder Eigene Objekte in der Netzwerkumgebung Netzwerkumgebung Eigene Dateien Drucker Eigene Objekte im Drucker-Fenster Profile-Ordner Programmdateien (5.0) Programmdateien für Intel-Prozessoren Programme-Menü im Startmenü Dokumente-Menü im Startmenü Senden an-Menü Wurzelverzeichnis des Startmenüs Autostart-Ordner Systemordner Systemordner Intel Dokumentvorlagen Windows-Ordner
Tab. 8.6: Codezahlen der virtuellen Ordner
8.7
Icons verwalten – das Icon-Dialogfenster
Ein weiteres »geheimes« Dialogfenster ist das Auswahlfenster für Icons. Eine offizielle Funktion, um dieses Dialogfenster aufzurufen, werden Sie vergeblich suchen. So ist das nächste Projekt ein Paradebeispiel dafür, wie Sie undokumentierte API-Funktionen verwenden. Das Projekt finden Sie auf der Buch-CD unter dem Namen ICONPICK.
8.7
Icons verwalten – das Icon-Dialogfenster
Befehl
Bedeutung
PickIcon CountIcons IsWin2000
Ruft das Icon-Auswahlfenster auf Ermittelt, wie viele Icons in einer Datei schlummern Helferfunktion, die mitteilt, ob Ihr Betriebssystem Windows 2000 ist
211
Tab. 8.7: Befehle des iconpicker.tool-Objekts
8.7.1
Nach Icons suchen
Das folgende Script durchsucht den Windows-Ordner und öffnet das Icon-Auswahlfenster für alle Dateien, in denen mindestens 5 Icons enthalten sind.
Bild 8.6: Undokumentierte Dialogfenster liefern sogar Icons
Das Script meldet zurück, welches Icon sich der Benutzer ausgesucht hat: ’ 8-10.vbs set fs = CreateObject("Scripting.FileSystemObject") set tool = CreateObject("iconpicker.tool") ' Systemordner öffnen set winfolder = fs.GetSpecialFolder(1) ' alle Dateien durchsuchen for each file in winfolder.files ' wieviel Icons sind in Datei? iconcount = tool.CountIcons(file.path) ' mindestens 5? if iconcount>=5 then ' ja, Inhalt anzeigen selection = tool.PickIcon(file.path) msg = "Ihre Wahl: " & selection & vbCr
212
Kapitel 8: Programmier-Trickkiste
msg = msg & "Weitersuchen?" antwort = MsgBox(msg,vbYesNo) if antwort = vbNo then exit for end if next MsgBox "Fertig!"
8.7.2
Icon-Liste anlegen
Sie könnten sich mit nur kleinen Änderungen auch eine übersichtliche Liste aller Dateien ausgeben lassen, die Icons enthalten: ’ 8-11.vbs set fs = CreateObject("Scripting.FileSystemObject") set tool = CreateObject("iconpicker.tool") ’ ausgabedatei anlegen ausgabe = "c:\icons.txt" set info = fs.CreateTextFile(ausgabe, true) ' Systemordner öffnen set winfolder = fs.GetSpecialFolder(1) MsgBox "Suche jetzt nach Icon-Dateien!" ' alle Dateien durchsuchen for each file in winfolder.files ' wieviel Icons sind in Datei? iconcount = tool.CountIcons(file.path) ' mindestens 5? if iconcount>0 then info.WriteLine file.path & " enthält " & iconcount _ & " Icons" end if next info.close ' Datei öffnen set wshshell = CreateObject("WScript.Shell") wshshell.Run """" & ausgabe & """"
8.8
Icons konvertieren und verändern
213
Bild 8.7: Scripts suchen alle interessanten Icon-Dateien heraus
8.8
Icons konvertieren und verändern
Mit Icons läßt sich natürlich wesentlich mehr anfangen. Das nächste Projekt bietet zusätzlich eine Reihe von Funktionen, um Icons zum Beispiel in BMP-Grafiken zu verwandeln und Icon-Einstellungen des Systems zu verändern. Sie finden das Projekt auf der Buch-CD unter dem Namen ICONHANDLER. Befehl
Aktualisiert den internen Windows-Cache für Icons Aktualisiert die Registry-Einstellungen für Desktop-Werte Ermittelt die Anzahl von Icons in einer Datei Öffnet das Auswahlfenster für Icons Lädt ein Icon aus einer Datei Kopiert das geladene Icon in die Zwischenablage Kopiert das geladene Icon in eine Datei Aktualisiert die Icons auf dem Desktop Hält die Scriptausführung für x Sekunden an Ermittelt die Version des Betriebssystems Schreibt einen Wert in die Windows-Registry
Tab. 8.8: Befehle des icon.handler-Objekts
214
Kapitel 8: Programmier-Trickkiste
Mit diesem »Waffenarsenal« ausgerüstet, können Sie verblüffende Dinge anstellen. Schauen Sie sich zuerst an, wie einfach Sie Icons auswählen und dann als Bitmap-Grafik speichern: ’ 8-12.vbs set fs = CreateObject("Scripting.FileSystemObject") set tool = CreateObject("icon.handler") iconfile = "C:\icon.bmp" ' Systemordner öffnen set winfolder = fs.GetSpecialFolder(1) ' alle Dateien durchsuchen for each file in winfolder.files ' wieviel Icons sind in Datei? iconcount = tool.GetIconNumber(file.path) ' mindestens 5? if iconcount>=5 then ' ja, Inhalt anzeigen selection = tool.PickIcon(file.path) if selection <>"" then ' Ein Icon wurde ausgewählt pos = Instr(selection, ",") iconpfad = left(selection, pos-1) index = mid(selection, pos+1) tool.LoadIcon iconpfad, index tool.IconToFile iconfile exit for else antwort = MsgBox("Sie haben kein Icon ausgesucht. Nochmal?", vbYesNo) if antwort = vbNo then exit for end if end if next if not selection = "" then ' Icon öffnen set wshshell = CreateObject("WScript.Shell") wshshell.Run """" & iconfile & """" else MsgBox "Sie haben kein Icon ausgesucht!" end if
Das Script bietet Ihnen so lange Icons an, bis Sie sich eins ausgesucht haben oder auf Nein klicken. Haben Sie sich ein Icon ausgesucht, dann extrahiert das Script das Icon aus der Icondatei und speichert es als BMP-Grafik. Anschließend wird diese Datei geöffnet und zeigt Ihnen das Icon. Sie könnten es nun für eigene Projekte weiterverwenden.
8.8
Icons konvertieren und verändern
215
Bild 8.8: Icons extrahieren und in Grafikprogrammen weiterbearbeiten
8.8.1
System-Icons verändern
Mit den neuen Befehlen Ihres Projekts können Sie sogar System-Icons verändern. Vielleicht wollen Sie den langweiligen gelben Ordnern ein anderes Icon verpassen. Das nächste Script erlaubt Ihnen zunächst wieder, ein Icon auszusuchen.
Bild 8.9: System-Icons durch andere Icons ersetzen lassen
216
Kapitel 8: Programmier-Trickkiste
Anschließend setzt das Script dieses Icon als neues Ordner-Icon und erledigt sogar alle nötigen Aktualisierungsprozesse. Ohne lästigen Neustart wird das neue Icon sofort sichtbar. ’ 8-13.vbs set fs = CreateObject("Scripting.FileSystemObject") set tool = CreateObject("icon.handler") iconfile = "C:\icon.bmp" ' Systemordner öffnen set winfolder = fs.GetSpecialFolder(1) ' alle Dateien durchsuchen for each file in winfolder.files ' wieviel Icons sind in Datei? iconcount = tool.GetIconNumber(file.path) ' mindestens 5? if iconcount>=5 then ' ja, Inhalt anzeigen selection = tool.PickIcon(file.path) if selection <>"" then ' Ein Icon wurde ausgewählt ' als neues Ordnericon setzen key = "HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons\3" tool.RegWrite key, selection tool.FlushIconCache exit for else antwort = MsgBox("Sie haben kein Icon ausgesucht. Nochmal?", vbYesNo) if antwort = vbNo then exit for end if end if next if not selection = "" then MsgBox "Neues Icon wurde aktiviert!" else MsgBox "Sie haben kein Icon ausgesucht!" end if
8.9
Noch ein undokumentiertes Fenster: Disk-Formatierung
217
Bild 8.10: Tatsächlich: Ordner-Icons bekommen Ihr neues Icon aufgestülpt
Wollen Sie das alte Standard-Icon zurückhaben? Dann verwenden Sie dieses Script: ’ 8-14.vbs set tool = CreateObject("icon.handler") set wshshell = CreateObject("WScript.Shell") key = "HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons\3" wshshell.RegDelete key tool.FlushIconCache MsgBox "Altes Ordnersymbol wiederhergestellt!"
Tip: Andere System-Icons und das Startmenü umdressieren Auch alle anderen System-Icons lassen sich auf diese Weise umdressieren. Verwenden Sie anstelle des Codes 3 in diesem Fall den Code des betreffenden Icons. Diesen Code können Sie auf zwei Arten herausfinden: Entweder raten Sie einfach und schauen, was passiert. Oder Sie schauen sich die Icons in der Datei SHELL32.DLL an. Ihre Reihenfolge entspricht den Codezahlen, die Sie verwenden müssen.
Es würde zu weit führen, noch mehr Icon-Spielereien vorzuführen. Nur so viel: Mit den Funktionen Ihres neuen Projekts können Sie sogar individuell einzelnen Ordnern bessere Icons zuschanzen. Wie das im einzelnen funktioniert und welche Rolle dabei die geheime Datei DESKTOP.INI spielt, wurde bereits ausführlich im Vorgängerband beschrieben (Franzis’: Professional Series – Scripting Host Praxisbuch).
8.9
Noch ein undokumentiertes Fenster: Disk-Formatierung
Und noch ein undokumentiertes Dialogfenster können Ihre Scripts einsetzen: das Dialogfenster zur Formatierung von Laufwerken. Auch dieses Fenster kann nur über undokumentierte geheime API-Funktionen auf den Plan gerufen werden.
218
Kapitel 8: Programmier-Trickkiste
Wenn Sie also scriptgesteuert Laufwerke formatieren müssen, dann schauen Sie sich auf der BuchCD das Projekt FORMAT näher an. Darin schlummert nur eine einzige Funktion: Format.
Bild 8.11: Das Formatierungsfenster kann per Script gezückt werden
Wie Sie zum Beispiel das Diskettenlaufwerk A: mit Hilfe der neuen Funktion formatieren, zeigt das nächste Script: ’ 8-15.vbs set tool = CreateObject("format.tool") tool.Format "A:\" MsgBox "Fertig!"
Aus Sicherheitsgründen können Sie mit der neuen Funktion keine Festplatten formatieren. Wollen Sie das doch, dann geben Sie als dritten Parameter false ein. Das schaltet den eingebauten Wachhund ab. Setzen Sie als zweiten Parameter true, dann wird mit QuickFormat formatiert, und setzen Sie false, dann wird komplett formatiert. Die Formatierung geht allerdings nicht sofort los, sondern erst wenn Sie die entsprechende Schaltfläche anklicken. Wollen Sie diese Hürde umgehen, dann setzen Sie zum Beispiel SendKeys ein, um die Taste automatisch zu drücken.
8.10
Ganz eigene Dialogfenster entwerfen
Wie leicht Sie mit der VB CCE eigene Dialogfenster entwerfen, zeigt das nächste Projekt. Sie finden es auf der Buch-CD im Ordner INPUTBOX.
8.11
Internet-Zugang automatisieren
219
Bild 8.12: Selbstgemachte Eingabefenster
Dieses Projekt simuliert die InputBox-Funktion, gibt Ihnen aber mehr Platz für die Eingabe. Außerdem kann die Titelleiste des Fensters auf Wunsch ausgeblendet werden. Hier ein Beispiel: ’ 8-16.vbs set tool = CreateObject("dialog.test") tool.Label = "Dies ist mein Label!" tool.Frame = "Rahmentitel" tool.Default = "Vorgabe" ergebnis = tool.ShowWindow("Meine Frage: wie heißen Sie?", _ "Fragefenster") Msgbox "Guten Tag, " & ergebnis ergebnis = tool.ShowWindow("Diesmal ohne Titelleiste!", "") MsgBox ergebnis
8.11
Internet-Zugang automatisieren
Ihre Scripts können sogar Internet-Operationen vollautomatisch durchführen. Vorausgesetzt, Sie haben einen Internetzugang eingerichtet, kann Ihr Script ab sofort Internetverbindungen automatisch herstellen und auch wieder abbauen. Allein mit Windows-Bordmitteln übertragen Sie sogar Dateien per FTP ins Internet und laden Dateien aus dem Internet auf Ihren Rechner. Sie finden das Projekt auf der Buch-CD unter dem Namen INTERNET. Hier zunächst die neuen Befehle: Befehl
Stellt die Verbindung zum Internet her Unterbricht die Verbindung zum Internet Liefert den Status der Internetverbindung Öffnet eine Internet-Verbindung (zum Beispiel FTP) Verbindet das Script mit einem Server Lädt eine Datei aus dem Internet per FTP herunter Lädt eine lokale Datei per FTP auf einen Webserver
Schließt eine aktive Internetverbindung, ohne den Zugang zu trennen Löscht eine Datei auf einem Webserver Liefert letzte Fehlermeldung Liefert Code des letzten Fehlers Wechselt in ein FTP-Verzeichnis Holt ein FTP-Ordnerverzeichnis Legt einen neuen Ordner auf dem Webserver an Liefert eine weitergehende Fehlermeldung Listet den Inhalt eines FTP-Ordners Listet den Inhalt eines FTP-Ordners formatiert (Klartext) Benennt eine FTP-Datei um Löscht einen FTP-Ordner Liefert den Hostnamen einer IP-Adresse Liefert die IP-Adresse eines Hosts Öffnet eine Winsock-Verbindung Schließt eine Winsock-Verbindung Wandelt eine Fehlernummer in eine Fehlerbeschreibung um Stellt eine FTP-Verbindung zu einem Server her Beendet den aktuellen Zugriff auf das Internet
Tab. 8.9: Befehle des internet.communication-Objekts
8.11.1 Internetverbindungen herstellen und abbauen Das folgende Script demonstriert, wie Sie mit Ihren neuen Befehlen automatisch eine Internetverbindung herstellen, eine Seite downloaden und danach die Telefonverbindung wieder kappen: ’ 8-17.vbs set tool = CreateObject("internet.communication") set ie = CreateObject("InternetExplorer.Application") url = "www.microsoft.com/" ’ automatisch verbinden if tool.ConnectInternet then ie.navigate url do loop until ie.ReadyState=4 ie.visible = true if not tool.DisconnectInternet then MsgBox "Verbindung ließ sich nicht schließen!" end if else MsgBox "Verbindung nicht möglich – ist Modem aktiv?" end if
8.11
Internet-Zugang automatisieren
221
8.11.2 Zugriff auf FTP-Verzeichnisse Wie leicht Ihre Scripts ab sofort FTP-Verzeichnisse im Inter- und Intranet erreichen, zeigt das nächste Script.
Bild 8.13: Automatisch erstellt: FTP-Verzeichnislisting eines Internet-Servers
Es verbindet sich mit einem FTP-Server und zeigt den Inhalt darauf an: ’ 8-18.vbs set tool = CreateObject("internet.communication") ftpdir = "ftp.microsoft.com" ’ automatisch verbinden if tool.ConnectInternet then ’ open FTP server handle = tool.ConnectFTP(ftpdir) dirlist = tool.Dir(handle) ’ verbindung schliessen tool.CloseHandle handle tool.DisconnectInternet ’ FTP Verzeichnis anzeigen MsgBox dirlist, vbInformation else MsgBox "Verbindung gescheitert. Ist Modem aktiv?" end if
8.11.3 Dateien per FTP herunterladen Das FTP-Listing allein nützt nicht viel. Das nächste Script zeigt, wie Sie sich eine Datei von einem FTP-Server herunterladen:
222
Kapitel 8: Programmier-Trickkiste
Bild 8.14: Automatisch heruntergeladene FTP-Datei ’ 8-19.vbs set tool = CreateObject("internet.communication") ftpdir = "ftp.microsoft.com" ftpfile = "disclaimer.txt" newfile = "C:\msdisc.txt" if tool.ConnectInternet then handle = tool.ConnectFTP(ftpdir) ok = tool.GetFile(handle, ftpfile, newfile) tool.CloseHandle handle tool.DisconnectInternet if ok then MsgBox "Datei geladen und gespeichert als """ _ & newfile & """" set wshshell = CreateObject("WScript.Shell") wshshell.Run """" & newfile & """" else MsgBox "Download error: " & tool.GetLastError end if else MsgBox "Verbindung gescheitert: ist Modem aktiv?" end if
8.11.4 Lokale Webseiten auf den Webserver hochladen Vielleicht kennen Sie das Problem: Sie entwickeln Ihre Homepage auf dem lokalen Rechner und wollen die Site irgendwann auf den echten Webserver hochladen. Diese Aufgabe kann das nächste Script übernehmen. Es lädt automatisch nicht nur einen lokalen Ordner samt Unterordner auf
8.11
Internet-Zugang automatisieren
223
einen beliebigen Webserver, sondern es wendet zusätzlich Intelligenz an! Das Script prüft zuerst, welche Dateien auf dem Webserver fehlen oder veraltet sind und lädt nur die wirklich neuen Dateien auf den Webserver. Selbst wenn Sie also nächste Woche noch etwas an Ihrer Website feilen, brauchen Sie Ihr Script nur erneut aufzurufen, um die Website auf dem echten Webserver auf neuesten Stand zu bringen. Anders als bei den meisten FTP-Tools werden dabei nicht wieder alle Dateien übertragen, sondern nur die, an denen Sie wirklich geschraubt haben. ’ 8-20.vbs set args = WScript.Arguments if args.Count=0 then dirname = InputBox("Lokaler Ordnerpfad?") else dirname = args(0) end if set fs = CreateObject("Scripting.FileSystemObject") set tool = CreateObject("internet.communication") ’ existiert der angegebene Ordner? if not fs.FolderExists(dirname) then ’ no, quit! MsgBox "Ordner """ & dirname & """ nicht vorhanden!" WScript.Quit end if ’ FTP-Ziel definieren ftpdir = InputBox("Basisverzeichnis der Website?") username = InputBox("Benutzername?") password = InputBox("Kennwort?") ’ Unterordner ermitteln if right(ftpdir,1)="/" then ftpdir = left(ftpdir, len(ftpdir)-1) pos = Instr(ftpdir, "/") if pos = 0 then subfolderpath = "" else subfolderpath = mid(ftpdir, pos) end if ’ Resultate notieren: logfile = "C:\ftplog.txt" ’ Transfervolumen berechnen: transfer = 0 ’ Logdatei anlegen: set reportfile = fs.CreateTextFile(logfile, true) ’ Synchronisieren:
224
Kapitel 8: Programmier-Trickkiste
if tool.ConnectInternet then starttime = time Report "CONNECT automatically to Internet" on error resume next handle = tool.ConnectFTP(ftpdir, username, password) if not err.number=0 then Report "Error accessing server: " & tool.GetLastError Reportfile.close Showreport WScript.Quit end if Report "ACCESS GRANTED to FTP Server " & ftpdir Synchronize dirname, subfolderpath tool.CloseHandle handle Report "CLOSED FTP connection" if MsgBox("Verbindung beenden?", vBYesNo) = vbYes then tool.DisconnectInternet Report "DISCONNECT Internet Connection" end if ’ Statistik berechnen: duration = DateDiff("s", starttime, time) transferKB = FormatNumber(transfer/1024,1) speed = FormatNumber((transfer/duration)/1024,2) Report duration & " secs online, " & transferKB _ & " KB transferred, " & speed & " KB/s." else MsgBox "Verbindung gescheitert. Ist Modem aktiv?" Report "Error: Unable to establish Internet connection" end if reportfile.close ShowReport sub Synchronize(local, web) ' Lokalen Ordner öffnen set folder = fs.GetFolder(local) ' Dictionary für Web-Dateien set dict = CreateObject("Scripting.Dictionary") ' Groß- und Kleinschreibung nicht beachten dict.CompareMode = 1 ' Webordner auflisten tool.ChDir handle, "/" & web dirraw = tool.Dir(handle) dirlist = Split(dirraw, vbCrLf)
8.11
Internet-Zugang automatisieren
’ alle Dateien einzeln kontrollieren for each entry in dirlist entryinfo = Split(entry, vbTab) ’ ist Eintrag eine Datei? if (Fix(entryinfo(3)) and 16)=0 then ' ja, Datum der letzten Änderung merken dict.Add entryinfo(0), entryinfo(1) end if next if web = "" then fill = "" else fill = "/" end if ' Alle lokalen Dateien prüfen for each file in folder.files ' auf Webserver vorhanden? if dict.Exists(file.name) then ' ja, Datum der letzten Änderung merken timestamp = dict.Item(file.name) filetime = GetFileTime(file) if CDate(timestamp)
225
226
Kapitel 8: Programmier-Trickkiste next ' Rekursiv alle Unterordner prüfen for each subdir in folder.subfolders foldername = subdir.name if web = "" then webfolder = foldername else webfolder = web & "/" & foldername end if ' Unterordner auf Webserver anlegen on error resume next ok = tool.MakeDir(handle, "/" & webfolder) on error goto 0 if ok then Report "CREATED DIR " & webfolder else Report "OPENED DIR " & webfolder end if Synchronize subdir.path, webfolder
next end sub function GetFileTime(fileobj) ' Datum der letzten Änderung ermitteln on error resume next GetFileTime = fileobj.DateLastModified if not err.number=0 then GetFileTime = CDate("1/1/80") err.clear end if end function sub Report(text) ' Report schreiben reportfile.WriteLine time & vbTab & text end sub sub ShowReport set wshshell = CreateObject("WScript.Shell") wshshell.run """" & logfile & """" end sub
8.11.5 Art des Internetzugangs ermitteln Ihre Befehlserweiterung kann sogar herausfinden, was für eine Art von Internetzugang Sie momentan verwenden:
8.11
Internet-Zugang automatisieren
227
’ 8-21.vbs set tool = CreateObject("Internet.communication") types = Split(",Modem,Network,Proxy,Modem busy", ",") MsgBox "Verbindungstyp: " _ & types(tool.ConnectionState and not &HFFF8)
Bild 8.15: Art der Internetverbindung automatisch ermitteln
8.11.6 Winsock: Hostnamen und IP-Adressen Auf Wunsch verwendet Ihr Script sogar Winsock und kann darüber Netzwerknamen in IP-Adressen verwandeln und umgekehrt. Hier ein Beispiel: ’ 8-22.vbs set tool = CreateObject("Internet.communication") ip = InputBox("Bitte IP-Adresse eingeben!") tool.WinsockInit tool.ConnectInternet hostname = tool.HostByAddress(ip) tool.WinsockQuit tool.DisconnectInternet MsgBox "Host name: " & hostname
Wollen Sie es umgekehrt, dann setzen Sie dieses Script ein: ’ 8-23.vbs set tool = CreateObject("Internet.communication") dn = InputBox("Domänenname?",,"www.microsoft.com") tool.WinsockInit tool.ConnectInternet ipadd = tool.HostByName(dn) tool.WinsockQuit tool.DisconnectInternet MsgBox "IP-Adresse: " & ipadd
Bild 8.16: Webnamen in IP-Adressen auflösen und umgekehrt
228 8.12
Kapitel 8: Programmier-Trickkiste
Listen anzeigen mit dem ListView-Tool
Visual Basic enthält ein extrem nützliches Steuerelement, das Sie wahrscheinlich schon aus dem Explorer kennen: die mehrzeilige Listenansicht. Die kann Ihr Script ebenfalls nutzen, jedenfalls dann, wenn Sie das Anzeigeelement über ein eigenes Projekt »verpacken«. Ein Beispiel liefert das Projekt LISTVIEW auf der Buch-CD. Befehl
Fügt neue Spaltenbeschriftung ein Fügt Inhalt in erste Spalte ein Fügt Inhalt in weitere Spalten ein Zeigt die Liste und liefert Auswahl zurück Breite des Fensters Höhe des Fensters Beschriftung des OK-Buttons Beschriftung des Abbrechen-Buttons True = Löscht Liste nach der Anzeige nicht True = Mehrere Einträge lassen sich auswählen Sortiert eine Spalte Liest Inhalt der Liste, ohne die Liste anzuzeigen Entfernt einen Eintrag aus der Liste
Tab. 8.10: Befehle des listview.tool-Objekts
8.12.1 Listen anlegen und sortieren Wie einfach Sie mit dem ListView-Element Listen anlegen und sortieren, zeigt das erste Scriptbeispiel: ’ 8-24.vbs set fs = CreateObject("Scripting.FileSystemObject") set lview = CreateObject("listview.tool") ' Ordner öffnen set folder = fs.GetFolder("C:\") ' Dialogfensterdimensionen angeben lview.width = 600 lview.height = 400 ' ' ' ' '
8.12 lview.AddHeader "Typ", 30 ’ Dateinamen in Listview lesen: for each file in folder.files lview.AddItem file.name lview.AddSubitem 1, AlignNumber(file.size) lview.AddSubitem 2, file.type next ’ Ergebnis sortieren ’ 0 = Erste Spalte ’ 1 = zweite Spalte, usw. lview.Sort 0 ’ Multiselect aktivieren lview.MultiSelect = true ’ show ListView Form set result = lview.Show("Dateien auf LW C:\") list = "Ausgewählt: " & result.Count for each entry in result list = list & entry & vbCr next MsgBox list function AlignNumber(number) size = len(CStr(number)) AlignNumber = Space(20-size) & number end function
Bild 8.17: Daten in sortierbaren Listen anzeigen
Listen anzeigen mit dem ListView-Tool
229
230
Kapitel 8: Programmier-Trickkiste
8.12.2 Listen sortieren, ohne Dialogfenster anzuzeigen Das ListView-Steuerelement ist sogar dann nützlich, wenn Sie es gar nicht sehen! Es kann nämlich still und heimlich im Hintergrund Listen verwalten und blitzschnell nach verschiedenen Kriterien sortieren. Im nächsten Beispiel sortiert das (unsichtbare) ListView-Element die Dateiliste zuerst nach Name und dann nach Typ. Das Ergebnis ist eine sortierte Liste, die die Einträge nach Typ sortiert zeigt. Innerhalb der Typen sind die Ergebnisse nach Namen sortiert. ’ 8-25.vbs set fs = CreateObject("Scripting.FileSystemObject") set lview = CreateObject("listview.tool") set folder = fs.GetFolder("C:\") lview.AddHeader "File name", 50 lview.AddHeader "Type", 30 for each file in folder.files lview.AddItem file.name lview.AddSubitem 1, file.type next lview.Sort 0 lview.Sort 1
’ nach Name sortieren ’ nach Typ sortieren
set result = lview.ReadResult list = "" for each entry in result entry = Split(entry, vbCrLf) list = list & entry(0) & vbTab & entry(1) & vbCr next MsgBox list
8.13
Multimediageräte fernsteuern
Am Anfang dieses Buches habe ich Ihnen anhand der CD-Schublade demonstriert, wie Sie mit Hilfe von API-Funktionen Multimediageräte fernsteuern. Dort habe ich Ihnen auch versprochen, eine Lösung zu finden, um mehrere CD-ROM-Laufwerke separat anzusteuern. Das Ergebnis ist die Befehlserweiterung des Projekts MCI: Befehl
Beschreibung
SendMCIString QueryMCIString PlayInWindow
Schickt einen Steuerbefehl an ein Multimediagerät Fragt ein Ergebnis ab Spielt ein MCI-Control in einem Fenster ab
Tab. 8.11: Befehle des MCI.Manager-Objekts
8.13
Multimediageräte fernsteuern
231
8.13.1 Multimediageräte aussuchen Schauen Sie sich zuerst an, wie einfach Sie dank Ihrer Befehlserweiterung nun Befehle an Multimediageräte senden. Das nächste Script öffnet die CD-Schublade und schließt sie dann wieder: ’ 8-26.vbs set tool = CreateObject("mci.manager") MCI "open cdaudio" MCI "set cdaudio door open wait" MsgBox "CD Schublade offen!" MCI "set cdaudio door closed wait" MsgBox "CD Schublade geschlossen!" MCI "close cdaudio" sub MCI(command) if not tool.SendMCIString(command, errormsg) then msg = "command: " & command & vbCr & "Error: " _ & errormsg & vbCr & "Continue?" answer = MsgBox(msg, vbYesNo + vbCritical + _ vbSystemModal) if answer = vbNo then WScript.Quit end if end sub
Ob Ihr CD-ROM allerdings überhaupt die Öffnen- und Schließen-Befehle »versteht«, wissen Sie nicht. Das nächste Script schon: ’ 8-27.vbs set tool = CreateObject("mci.manager") MCI "Open cdaudio" caneject = ReadMCI("capability cdaudio can eject") MCI "Close cdaudio" if caneject then MsgBox "CD-Schublade steuerbar!" else MsgBox "CD-Schublade nicht steuerbar!" end if sub MCI(command) if not tool.SendMCIString(command, errormsg) then msg = "command: " & command & vbCr & "Error: " _ & errormsg & vbCr & "Continue?" answer = MsgBox(msg, vbYesNo + vbCritical + _ vbSystemModal) if answer = vbNo then WScript.Quit end if end sub
232
Kapitel 8: Programmier-Trickkiste
function ReadMCI(command) if not tool.QueryMCIString(command, result) then msg = "command: " & command & vbCr & "Error: " _ & result & vbCr & "Continue?" answer = MsgBox(msg, vbYesNo + vbCritical + _ vbSystemModal) if answer = vbNo then WScript.Quit else ReadMCI = CBool(result) end if end function
Tip: CDAUDIO – funktioniert nur mit CD-ROM! Besitzt Ihr Computer gar kein CD-ROM-Laufwerk, dann scheitern all diese Scripts. Sie kassieren in diesem Fall eine Fehlermeldung.
Bleibt noch die Frage: Wie spricht man unterschiedliche CD-ROM-Laufwerke an? Zum Beispiel so: ’ 8-28.vbs set tool = CreateObject("mci.manager") OpenTray "D:" MsgBox "CD-Schublade offen!" CloseTray "D:" MCI "set cdaudio door closed wait" MsgBox "CD-Schublade geschlossen!" sub MCI MCI MCI end
OpenTray(driveletter) "open " & driveletter & " type cdaudio alias mydrive" "set mydrive door open wait" "close mydrive" sub
sub MCI MCI MCI end
CloseTray(driveletter) "open " & driveletter & " type cdaudio alias mydrive" "set mydrive door closed wait" "close mydrive" sub
sub MCI(command) if not tool.SendMCIString(command, errormsg) then msg = "command: " & command & vbCr & "Error: " _ & errormsg & vbCr & "Continue?" answer = MsgBox(msg, vbYesNo + vbCritical + _ vbSystemModal) if answer = vbNo then WScript.Quit end if end sub
8.13
Multimediageräte fernsteuern
233
8.13.2 Herausfinden, was das CD-ROM gerade tut Vielleicht möchten Sie wissen, womit Ihr CD-ROM gerade beschäftigt ist. Fragen Sie einfach nach: ’ 8-29.vbs set tool = CreateObject("mci.manager") MCI "open cdaudio" MsgBox ReadMCI("status cdaudio mode") MCI "Close cdaudio" sub MCI(command) if not tool.SendMCIString(command, errormsg) then msg = "command: " & command & vbCr & "Error: " _ & errormsg & vbCr & "Continue?" answer = MsgBox(msg, vbYesNo + vbCritical + _ vbSystemModal) if answer = vbNo then WScript.Quit end if end sub function ReadMCI(command) if not tool.QueryMCIString(command, result) then msg = "command: " & command & vbCr & "Error: " _ & result & vbCr & "Continue?" answer = MsgBox(msg, vbYesNo + vbCritical + _ vbSystemModal) if answer = vbNo then WScript.Quit else ’ don’t convert to boolean this time!! ReadMCI = result end if end function
8.13.3 Typ der eingelegten CD bestimmen Auch die Art der eingelegten CD läßt sich nun bestimmen. Das nächste Script zeigt, wie das funktioniert: ’ 8-30.vbs set tool = CreateObject("mci.manager") MCI "Open cdaudio" do media = CBool(ReadMCI("status cdaudio media present")) if not media then MCI "set cdaudio door open" result = MsgBox("CD einlegen!", vbOkCancel) ok = false
234
Kapitel 8: Programmier-Trickkiste
else ’ Musik-CD eingelegt? cdtype = lcase(ReadMCI("status cdaudio type track 1")) if cdtype = "audio" then ok = true else MCI "set cdaudio door open" result = MsgBox("Audio-CD einlegen!!", vbOkCancel) ok = false end if end if if result = vbCancel then WScript.Quit loop until ok MCI "Close cdaudio" MsgBox "CD-AUDIO im Laufwerk…" sub MCI(command) if not tool.SendMCIString(command, errormsg) then msg = "command: " & command & vbCr & "Error: " _ & errormsg & vbCr & "Continue?" answer = MsgBox(msg, vbYesNo + vbCritical + _ vbSystemModal) if answer = vbNo then WScript.Quit end if end sub function ReadMCI(command) if not tool.QueryMCIString(command, result) then msg = "command: " & command & vbCr & "Error: " _ & result & vbCr & "Continue?" answer = MsgBox(msg, vbYesNo + vbCritical + _ vbSystemModal) if answer = vbNo then WScript.Quit else ' don't convert to boolean this time!! ReadMCI = result end if end function
Dieses Script gibt erst Ruhe, wenn Sie eine Musik-CD ins Laufwerk eingelegt haben. Mit normalen Daten-CDs gibt es sich nicht zufrieden.
Bild 8.18: Script prüft Typ der eingelegten CD
8.13
Multimediageräte fernsteuern
235
8.13.4 Details über Musik-CDs erfahren Wie vielseitig MCI ist, zeigt das nächste Script. Es ermittelt, aus wie vielen Musik-Tracks eine Musik-CD eigentlich besteht.
Bild 8.19: Detailinfos zu Ihren Audio-CDs
Voraussetzung dafür ist natürlich, daß Sie auch wirklich eine Musik-CD eingelegt haben: ’ 8-31.vbs set tool = CreateObject("mci.manager") MCI "open cdaudio" tracks = ReadMCI("status cdaudio number of tracks") msg = " CD enthält " & tracks & " Tracks!" & vbCr ' set time format to m:s time format MCI "Set cdaudio time format msf" for x = 1 to tracks tracktype = ReadMCI("status cdaudio type track " & x) tracklength = ReadMCI("status cdaudio length track " & x) msg = msg & "Track " & x & " (" & tracktype & "): Länge " _ & tracklength & vbCr next MCI "Close cdaudio" MsgBox msg, vbInformation sub MCI(command) if not tool.SendMCIString(command, errormsg) then msg = "command: " & command & vbCr & "Error: " _ & errormsg & vbCr & "Continue?" answer = MsgBox(msg, vbYesNo + vbCritical + _ vbSystemModal) if answer = vbNo then WScript.Quit end if
236
Kapitel 8: Programmier-Trickkiste
end sub function ReadMCI(command) if not tool.QueryMCIString(command, result) then msg = "command: " & command & vbCr & "Error: " _ & result & vbCr & "Continue?" answer = MsgBox(msg, vbYesNo + vbCritical + _ vbSystemModal) if answer = vbNo then WScript.Quit else ’ don’t convert to boolean this time!! ReadMCI = result end if end function
8.13.5 Musik-CDs sekundengenau anspielen Dank MCI besitzen Sie nun einen voll programmierbaren CD-Spieler. Das nächste Script zeigt, wie Sie zu bestimmten Musikstellen springen und sekundengenau Teile des Tracks hörbar machen: ’ 8-32.vbs set tool = CreateObject("mci.manager") MCI "open cdaudio" MCI "Set cdaudio time format tmsf" ’ Zu Track 4 MCI "Seek cdaudio to 4" ’ Spielen MCI "Play cdaudio" ’ 10 Sekunden spielen WScript.Sleep 10000 ’ Anhalten MCI "Stop cdaudio" MCI "Close cdaudio" MsgBox "Fertig!" sub MCI(command) if not tool.SendMCIString(command, errormsg) then msg = "command: " & command & vbCr & "Error: " _ & errormsg & vbCr & "Continue?" answer = MsgBox(msg, vbYesNo + vbCritical + _ vbSystemModal) if answer = vbNo then WScript.Quit end if end sub
8.13
Multimediageräte fernsteuern
237
8.13.6 MIDI-Dateien spielen MCI kann nicht nur mit CD-ROMs umgehen, sondern mit jeder Form von Multimedia-Daten. Das nächste Script spielt zum Beispiel eine MIDI-Datei ab: ’ 8-33.vbs set tool = CreateObject("mci.manager") ’ hier MIDI-Datei angeben media = "C:\Windows\Media\canyon.mid" MCI "open " & media & " type sequencer alias canyon" MCI "Play canyon wait" MCI "Close canyon" sub MCI(command) if not tool.SendMCIString(command, errormsg) then msg = "command: " & command & vbCr & "Error: " _ & errormsg & vbCr & "Continue?" answer = MsgBox(msg, vbYesNo + vbCritical + _ vbSystemModal) if answer = vbNo then WScript.Quit end if end sub
8.13.7 Video-Dateien anschauen Sogar AVI-Video-Dateien lassen sich anzeigen! Denken Sie daran, im Script den Pfadnamen einer eigenen AVI-Datei anzugeben: ’ 8-34.vbs set tool = CreateObject("mci.manager") ’ hier eigenes AVI-File angeben: media = "C:\WINNT\clock.avi" MCI "open " & media & " type avivideo alias movie" MCI "play movie wait" MCI "close movie" sub MCI(command) if not tool.SendMCIString(command, errormsg) then msg = "command: " & command & vbCr & "Error: " _ & errormsg & vbCr & "Continue?" answer = MsgBox(msg, vbYesNo + vbCritical + _ vbSystemModal) if answer = vbNo then WScript.Quit end if end sub
238
Kapitel 8: Programmier-Trickkiste
8.13.8 Automatisch CD-Tracks in WAV-Dateien verwandeln Besonders interessant ist das letzte Beispiel, das zeigt, wie Sie Ihre neuen Steuerungsmöglichkeiten in der Praxis einsetzen können. Dieses Script nimmt sekundengenau eine beliebige Stelle einer Musik-CD als WAV-Datei auf.
Bild 8.20: Sekundengenaue WAV-Aufnahmen von Ihrer Lieblings-CD
Die (sehr speicherhungrige) WAV-Datei können Sie dann auch ohne CD anhören und zum Beispiel als Windows-Fehlermeldung einsetzen: ’ 8-35.vbs set tool = CreateObject("mci.manager") set fs = CreateObject("Scripting.FileSystemObject") track = Ask("Welchen Track aufnehmen?","1") RecordToWave track, "D:\song.wav" MsgBox "Aufnahme im Kasten..." sub RecordToWave(track, name) if fs.FileExists(name) then msg = "Datei überschreiben?" answer = MsgBox(msg, vbYesNo + vbQuestion) if answer = vbYes then fs.DeleteFile name, true counter = 0 do until not fs.FileExists(name) counter = counter + 1 if counter>10 then MsgBox "Lösch-Fehler: " & name WScript.quit end if WScript.Sleep 1000 loop else MsgBox "Kann nicht speichern..." WScript.Quit end if
8.14 end MCI MCI MCI MCI
Speicherhaushalt genau beobachten
239
if "open cdaudio" "set cdaudio time format tmsf" "status cdaudio position track " & track "set cdaudio time format milliseconds"
call tool.QueryMCIString("status cdaudio length track " _ & track & " wait", result) song = CLng(result) msg = "Selected track is " & FormatNumber(song/1000,1) _ & " sec." & vbCr msg = msg & "Dauer der Aufnahme in Millisekunden?" limit = Ask(msg,song) MCI "open new type waveaudio alias capture" MCI "set cdaudio time format tmsf" MCI "play cdaudio from " & track & " to " & track+1 MCI "record capture" WScript.Sleep limit MCI "save capture " & name MCI "stop cdaudio" MCI "close cdaudio" end sub sub MCI(command) if not tool.SendMCIString(command, errormsg) then msg = command & vbCr & errormsg & vbCr & "Continue?" response = MsgBox(msg, vbYesNo + vbCritical) if response = vbNo then WScript.Quit end if end sub function Ask(question, default) Ask = InputBox(question,,default) if Ask=vbEmpty or not isNumeric(Ask) then MsgBox "Invalid entry." WScript.Quit end if Ask = Fix(Ask) end function
8.14
Speicherhaushalt genau beobachten
API-Funktionen liefern Ihren Scripts ein genaues Bild über die derzeitige Speicherauslastung Ihres Systems. Das Projekt MEMORY beschert Ihnen die dafür nötigen Funktionen:
240
Kapitel 8: Programmier-Trickkiste
Bild 8.21: Finden Sie heraus, wieviel »Luft« Ihr System noch hat
Speicherstatistik Virtueller Speicher verfügbar Virtueller Speicher gesamt Auslagerungsspeicher verfügbar Auslagerungsspeicher gesamt Echter Speicher verfügbar Echter Speicher gesamt Speicherauslastung des Systems
Tab. 8.12: Befehle des memory.stats-Objekts
Das nächste Script zeigt alle Informationen in der Übersicht: ’ 8-36.vbs set tool = CreateObject("memory.stats") MsgBox tool.GetMemory
8.15
Verschiedene nützliche Systeminformationen
Das Projekt MISCINFO liefert weitere nützliche Systeminformationen. Schauen Sie sich den Quellcode an, darin sind die Info-Konstanten für alle Systeminformationen enthalten, nach denen Sie fragen können. Hier eine Übersicht der neuen Befehle: Befehl
Liefert allgemeine Informationen zu verschiedenen Kategorien Art der CPU Anzahl der CPUs CPU-Information Aktuelles Profil Name des Computers im Netzwerk True, wenn OS Windows NT/2000 ist Liste der installierten Schriftarten
Tab. 8.13: Befehle des misc.Information-Objekts
8.16
Echte unabhängige Dialogfenster generieren
241
8.15.1 Liste der installierten Schriften Wollen Sie zum Beispiel die Liste der installierten Schriften sehen, dann verwenden Sie das nächste Script: ’ 8-37.vbs set tool = CreateObject("misc.information") MsgBox tool.EnumFonts
8.16
Echte unabhängige Dialogfenster generieren
Wer tief in die Trickkiste greift, kann mit der kostenlosen VB CCE etwas generieren, was eigentlich gar nicht geht: nichtmodale Fenster. Normalerweise kann die VB CCE nur modale Fenster erzeugen, Fenster also, die Ihr Script anhalten, solange sie sichtbar sind. Über Events ziehen Sie sich allerdings aus der Affäre. Der Trick: Sie zeigen ein modales Fenster an – Ihr Script ist gestoppt – und dann geben Sie die Kontrolle per Event zurück an Ihr Script. Die entsprechende Befehlserweiterung, die nebenbei viel Eventhandling zeigt, finden Sie im Projekt MODELESS. Das nächste Script durchsucht rekursiv das gesamte Dateisystem und bastelt daraus eine Dateiliste. Dieser Vorgang dauert normalerweise ewig, und der Scriptbenutzer weiß in dieser Zeit nicht, was eigentlich passiert. Dank Ihres neuen Statusfensters können Sie ab sofort detaillierte Statusberichte ausgeben und erlauben dem Scriptbenutzer sogar, die langwierige Operation jederzeit abzubrechen. Endlich! ’ 8-38.vbs set fs = CreateObject("Scripting.FileSystemObject") ’ create COM reference and catch events: set tool = WScript.CreateObject("modeless.dialog", "event_") list = "" quit = false tool.WriteDialog "Los gehts..." ' Fenster ist jetzt MODAL, Script hält an tool.ShowDialog ' Hier wird fortgesetzt, sobald Fenster geschlossen wird. MsgBox list sub event_WakeUp ' Event wird abgefeuert, sobald Fenster sichtbar wird ' Script tut etwas, OBWOHL Fenster sichtbar ist ShowFiles fs.GetFolder("C:\") ' Zum Schluß UNBEDINGT MsgBox aufrufen, damit Fensterhandle
242
Kapitel 8: Programmier-Trickkiste ’ nicht durcheinanderkommt MsgBox "Fertig!"
tool.CloseDialog end sub sub event_QuitNow ’ Event feuert, wenn Abbrechen geklickt wird quit = true end sub sub ShowFiles(dirobj) ’ wurde abgebrochen? Dann nicht weitermachen... if quit then exit sub for each file in dirobj.files ’ Statusinfo ins Fenster schreiben tool.WriteDialog dirobj.path & vbCr & _ dirobj.files.count & " Dateien..." _ & vbCr & file.name list = list & file.path & vbCr ' Wichtig: HandleEvent häufig aufrufen, ' damit Fenster noch auf ' Mausklicks reagiert! tool.HandleEvent if quit then exit sub next for each subfolder in dirobj.subfolders ShowFiles subfolder next end sub
Bild 8.22: Im laufenden Betrieb Statusinformationen ans Fenster geben
8.16.1 Dialogfenster mit Fortschrittsanzeige Ihr Script kann aber noch viel mehr. Weil Sie nun frei sind, in Ihrem Dialogfenster alle nur denkbaren Anzeigeobjekte zu verwenden, habe ich mir gestattet, für Sie eine Fortschrittsanzeige einzubauen.
8.16
Echte unabhängige Dialogfenster generieren
Bild 8.23: Luxuriös: Statusanzeige mit eingebautem Fortschrittsbalken
So wird die Sache zum Leben erweckt: ’ 8-39.vbs set fs = CreateObject("Scripting.FileSystemObject") set tool = WScript.CreateObject("modeless.dialog", "event_") list = "" quit = false tool.WriteDialog "Los gehts..." tool.ShowProgressDialog MsgBox list sub event_WakeUp ShowFiles fs.GetFolder("C:\") MsgBox "Close Down" tool.CloseDialog end sub sub event_QuitNow quit = true end sub sub ShowFiles(dirobj) if quit then exit sub counter = 0 filecount = dirobj.files.count for each file in dirobj.files counter = counter + 1 tool.WriteDialog dirobj.path & vbCr _ & filecount & " Dateien..." _ & vbCr & file.name ’ Prozent ausrechnen percent = Fix(counter * 100/filecount) ’ Anzeige aktualisieren tool.SetProgress percent list = list & file.path & vbCr tool.HandleEvent if quit then exit sub
243
244
Kapitel 8: Programmier-Trickkiste
next for each subfolder in dirobj.subfolders ShowFiles subfolder next end sub
8.17
NT-Service-Dienste verwalten
In Kapitel 10 haben Sie vielleicht bereits einen Weg kennengelernt, um die Services eines Windows NT/2000 Computers via ADSI zu steuern. So konnten Sie zum Beispiel ferngesteuert den WebserverDienst starten oder pausieren lassen. Was aber, wenn Sie keine Lust auf ADSI haben? Dann setzen Sie die Windows-API ein! Ich habe für Sie auf der Buch-CD ein Projekt namens NTSERVICE vorbereitet. Befehl
Ermittelt Informationen über Dienste Ermittelt Zustand des Dienstes Startet den Dienst Stoppt den Dienst
Tab. 8.14: Befehle des nt.Services-Objekts
8.17.1 Zustandsbericht aller Dienste So einfach kann Ihr Script nun den Status der Dienste auf Ihrem lokalen Computer oder jedem anderen Computer im Netzwerk erfahren: ’ 8-40.vbs Const SERVICE_ACTIVE = 1 Const SERVICE_INACTIVE = 2 Const SERVICE_ACTIVEINACTIVE = 3 Const SERVICE_DRIVER = 15 Const SERVICE_WIN32 = 48 set tool = CreateObject("nt.services") text = "Aktiv: " & vbCr MsgBox text & tool.GetServiceInfo(SERVICE_ACTIVE, SERVICE_DRIVER) text = "Inaktiv: " & vbCr MsgBox text & tool.GetServiceInfo(SERVICE_INACTIVE, _ SERVICE_DRIVER) text = "Aktiv Win32: " & vbCr MsgBox text & tool.GetServiceInfo(SERVICE_ACTIVE, SERVICE_WIN32) text = "Inaktiv Win32: " & vbCr MsgBox text & tool.GetServiceInfo(SERVICE_INACTIVE, _ SERVICE_WIN32)
Um einen Netzwerkcomputer anzusprechen, geben Sie als zweites optionales Argument den Namen des gewünschten Netzwerkcomputers an.
8.18
Windows herunterfahren – auch remote
Sie wollen Ihr Windows herunterfahren oder neu starten? Oder vielleicht doch lieber den Rechner des bösen Kollegen? Beides ist möglich, und im Gegensatz zur WMI-Variante aus Kapitel 12 können Sie diesmal sogar Warnmeldungen an den armen Delinquenten senden, bevor sich sein Rechner auf den Winterschlaf vorbereitet. Das nötige Projekt finden Sie als NTSHUTDOWN auf der Buch-CD. Befehl
Beschreibung
ExitWindows RemoteShutdown AbortShutdown
Fährt Windows lokal herunter oder startet es neu Fährt einen anderen Computer herunter Bricht den Herunterfahr-Prozeß ab
Tab. 8.15: Befehle des nt.shutdown-Objekts
8.18.1 Den eigenen Computer neu starten Mit ExitWindows starten Sie Ihren eigenen Computer neu oder fahren ihn ganz herunter. Geben Sie als Zahl dahinter die Art ein, wie Sie neu starten oder herunterfahren wollen: Code
Beschreibung
0 1 2
Abmelden Herunterfahren Neu starten
Tab. 8.16: Optionen des Shutdown-Befehls
Zusätzlich können Sie die Werte 4, 8 und (bei Windows 2000) 16 hinzuaddieren. Fügen Sie 4 hinzu, wenn der Vorgang sofort und ohne Rückfragen geschehen soll. Fügen Sie 8 hinzu, wenn das Gerät nach dem Herunterfahren ausgeschaltet werden soll (sofern technisch machbar). Und fügen Sie 16 hinzu, wenn abgestürzte Programme sofort und ohne Firlefanz beendet werden sollen.
246
Kapitel 8: Programmier-Trickkiste
8.18.2 Ein System ferngesteuert herunterfahren Sofern Sie die nötigen Berechtigungen haben, kann Ihr Script sogar fremde NT- und 2000-Systeme herunterfahren oder neu starten. Verwenden Sie den Befehl RemoteShutdown. Das nächste Script fährt zum Beispiel ein fremdes System herunter, ohne dabei nachzufragen. ’ 8-41.vbs set tool = CreateObject("nt.shutdown") set wshshell = CreateObject("WScript.Shell") server = InputBox("Servername?") result = tool.RemoteShutdown(server, "Gleich wird’s dunkel!",_ 5, true, false) if result<>0 then wshshell.Popup "Fahre herunter: " _ server & ". Abbruch innerhalb von 5 Sek. Möglich! ", 5 tool.AbortShutdown server
Das Script fährt den gewünschten Rechner herunter und stellt dabei auf dem Remote-System die Meldung dar, die Sie angeben. Innerhalb von 5 Sekunden können Sie den Vorgang abbrechen. Wird in dieser Zeit AbortShutdown aufgerufen, dann bricht das Remotesystem den HerunterfahrProzeß ab.
8.19
NT-Benutzerkonten verwalten
NT-Benutzerverwaltung ist mit ADSI am einfachsten zu handhaben. Allerdings ist ADSI langsam und auf einfachen Windows NT-Systemen gar nicht verfügbar. Erst mit Windows 2000 wird ADSI also seine Trümpfe richtig ausspielen können. Bis dahin behelfen Sie sich einfach mit Ihrer eigenen Befehlserweiterung. Die finden Sie als Projekt NTUSER auf der Buch-CD. Befehl
Benutzerkonten auflisten Benutzerkonten auflisten (Alternative) Neues Benutzerkonto anlegen Benutzerkonto löschen Kennwort eines Kontos ändern Gruppen auflisten Benutzerkonten in einer Gruppe auflisten Benutzerkonto in Gruppe einfügen Benutzerkonto aus Gruppe entfernen Name des primären Domänencontrollers ermitteln Letzte Fehlermeldung ermitteln
Tab. 8.17: Befehle des nt.user-Objekts
8.19
NT-Benutzerkonten verwalten
247
8.19.1 Benutzerkonten eines Rechners listen Schauen Sie mal, wie leicht Sie nun herausfinden, welche Benutzerkonten es auf Ihrem lokalen Computer oder einem anderen Computer im Netz gibt: ’ 8-42.vbs set tool = CreateObject("nt.user") MsgBox tool.EnumUsers MsgBox tool.EnumUsers("\\scenic1")
Bild 8.24: Zugriff auf Benutzerkonten (Windows NT/2000)
Die Informationen lassen sich leicht weiterverarbeiten: ’ 8-43.vbs set tool = CreateObject("nt.user") users = Split(tool.EnumUsers, vbCr) for x=0 to UBound(users)-1 infos = Split(users(x), vbTab) list = list & "Username: " & infos(0) & vbCr list = list & "Comment: " & infos(1) & vbCr & vbCr next MsgBox list, vbInformation
8.19.2 Benutzerkonten filtern Auf Wunsch filtert Ihr neuer EnumUsers-Befehl sogar die Ergebnisse. Hier die Möglichkeiten: ’ 8-44.vbs set tool = CreateObject("nt.user") for i = 0 to 5 users = Split(tool.EnumUsers(,2^i), vbCrLf) list = "Enumerating using filter " & 2^i & vbCr for x=0 to UBound(users)-1 infos = Split(users(x), vbTab) list = list & "Username: " & infos(0) & vbCr next MsgBox list, vbInformation next
248
Kapitel 8: Programmier-Trickkiste
Als Filter setzen Sie einen der folgenden Werte als zweiten Parameter ein: Code
Beschreibung
1 2 4 8 16 32
Lokale Konten Globale Konten Alle Konten Trust-Konten eines DC Workstation- und Server-Konten auf einem DC DC-Konten auf einem DC
Tab. 8.18: Filterkriterien für Benutzerkonten
8.19.3 Neue Benutzerkonten anlegen Brauchen Sie ein neues Benutzerkonto? So leicht schafft Ihr Script eins herbei: ’ 8-45.vbs set tool = CreateObject("nt.user") if tool.AddUser("", "testkonto", "geheim", _ 5, "c:\users\test", "Dies ist ein Testkonto") then MsgBox "Konto hinzugefügt..." else MsgBox "Fehler: " & tool.GetLastError end if
Die komplette Syntax Ihres neuen Befehls sieht so aus: AddUser server, user, pwd, expires, homedir, comment, scriptdir
Und hier die Bedeutung der Argumente: Argument
Bedeutung
Server User Pwd Expires Homedir Comment Scriptdir
Name des Computers oder "" für lokalen Computer Name des Kontos Kennwort Tage, die das Konto gültig sein soll Basisverzeichnis Kommentar Verzeichnis für Log-On-Scripts
Tab. 8.19: Argumente des AddUser-Befehls
8.19
NT-Benutzerkonten verwalten
249
8.19.4 Benutzerkonten löschen Genauso leicht wird Ihr Script das neue Konto auch wieder los: ’ 8-46.vbs set tool = CreateObject("nt.user") if tool.DelUser("", "testkonto") then MsgBox "Konto gelöscht!" else MsgBox "Fehler: " & tool.GetLastError end if
8.19.5 Kennworte ändern Und was, wenn Sie das Kennwort eines Kontos ändern müssen? Dann hilft dieses Script: ’ 8-47.vbs set tool = CreateObject("nt.user") if tool.ChangePassword("", "testkonto", _ "neueskennwort", "alteskennwort") then MsgBox "Password has changed!" else MsgBox "Fehler: " & tool.GetLastError end if
Falls Sie das alte Kennwort nicht wissen, dann setzen Sie es auf »leer«, also auf "". Nun brauchen Sie allerdings Administrator-Rechte.
8.19.6 Globale Gruppen auflisten Alle globalen (domänenweiten) Konten findet Ihr Script so heraus: ’ 8-48.vbs set tool = CreateObject("nt.user") MsgBox tool.EnumerateGroups
Geben Sie den Namen eines Servers an, um die lokalen Gruppen zu erfahren: ’ 8-49.vbs set tool = CreateObject("nt.user") MsgBox tool.EnumerateGroups("\\SCENIC1")
250
Kapitel 8: Programmier-Trickkiste
8.19.7 In welchen Gruppen bin ich Mitglied? Sie können sogar herausfinden, in welchen Gruppen ein Konto zur Zeit Mitglied ist. Das funktioniert so: ’ 8-50.vbs set tool = CreateObject("nt.user") MsgBox tool.EnumerateGroups("", "testkonto")
Und wenn Sie alle Mitglieder einer bestimmten Gruppe sehen wollen, dann machen Sie es so: ’ 8-51.vbs set tool = CreateObject("nt.user") MsgBox tool.EnumGroupUsers("", "Administratoren")
Dieses Script listet alle Konten mit lokalen Administrator-Rechten auf.
8.19.8 Konten in eine Gruppe einfügen Vielleicht wollen Sie auch ein Benutzerkonto in eine Gruppe einfügen. Das ist leicht möglich: ’ 8-52.vbs set tool = CreateObject("nt.user") if
tool.AddUserToGroup("", "Administratoren", "testaccount") then MsgBox "Konto in Gruppe eingefügt!" else MsgBox "Fehler: " & tool.GetLastError end if
Und umgekehrt fliegen auf Wunsch Konten auch wieder aus Gruppen heraus: ' 8-53.vbs set tool = CreateObject("nt.user") if
tool.DelUserFromGroup("", "Administratoren", "testkonto") then MsgBox "Konto aus Gruppe entfernt!" else MsgBox "Fehler: " & tool.GetLastError end if
8.19.9 Primären Domänencontroller finden Der primäre Domänencontroller ist der zentrale Verkehrspolizist in einem domänengestützten Netzwerk. Wie dieser Computer im Netzwerk eigentlich heißt, findet das nächste Script für Sie heraus:
8.20
Informationen über Ihr Betriebssystem
251
’ 8-54.vbs set tool = CreateObject("nt.user") MsgBox tool.GetPrimaryDCName("DOMÄNE")
Dieses Script findet den PDC in der Domäne namens »Domäne«.
8.20
Informationen über Ihr Betriebssystem
Manchmal wäre es nützlich für ein Script zu wissen, auf welchem Betriebssystem es eigentlich ausgeführt wird. Diese Informationen liefert die Befehlserweiterung aus dem Projekt OSVERSION. Das Projekt liefert außerdem Befehle, um herauszufinden, ob eine bestimmte DLL auf dem System installiert ist und in welcher DLL eine bestimmte API-Funktion eigentlich schlummert. Befehl
Infos zum Betriebssystem Windows-Version Windows-Version als Zahl Plattform-ID Build-Nummer (Versions-Unternummer) Windows-Version als Windows-Name Prüft, ob eine DLL-Datei existiert Findet die DLL, die einen bestimmten API-Befehl enthält
Tab. 8.20: Befehle des os.Version-Objekts
8.20.1 Windows-Version ermitteln Ihre neue Befehlserweiterung kennt nun viele Details über Ihr Betriebssystem. Wählen Sie je nach Bedarf die Art der Information aus:
Bild 8.25: Zuverlässig bestimmen, welche Windows-Version läuft
8.20.2 Werden bestimmte DLLs bei mir unterstützt? Vielleicht muß Ihr Script wissen, ob bestimmte exotische DLL-Funktionen auf Ihrer Maschine überhaupt verfügbar sind. Das nächste Script hilft weiter: ’ 8-56.vbs set tool = CreateObject("os.version") MsgBox tool.DLLExists("kernel32", "GetVersionExA") MsgBox tool.DLLExists("kernel32", "GetVersionExW")
Und wenn Sie gar nicht wissen, in welcher DLL eine Funktion eigentlich schlummert, dann lassen Sie eben danach suchen. Das kann allerdings ein paar Sekunden dauern: ’ 8-57.vbs set tool = CreateObject("os.version") MsgBox tool.FindFunction("GetVersionExA")
8.21
Programme steuern und beenden
Der Scripting Host kann über das Wscript.Shell-Objekt zwar Programme starten, aber dies ist nur eine sehr einfache Lösung. Sobald Sie nämlich ein externes Programm auf diese Weise starten, verliert Ihr Script die Kontrolle über den gestarteten Prozeß. Es ist dem Script anschließend weder möglich festzustellen, ob das Programm wie beabsichtigt läuft, noch kann das Script gestartete Programme später wieder beenden. Das Projekt PROCESS ist die Lösung des Problems, denn mit den neuen Befehlen aus diesem Projekt erhalten Sie die Process-ID des gestarteten Programms. Über diese ID kann das Script jederzeit feststellen, ob das Programm noch läuft. Das Programm läßt sich auf diese Weise auch jederzeit wieder beenden.
8.21.1 Programme starten: der herkömmliche Weg Schauen Sie sich zuerst an, wie Scripts normalerweise externe Programme steuern. Das nächste Script startet beispielsweise den Texteditor, und zwar asynchron: Der Editor startet, und Ihr Script läuft weiter.
8.21
Programme steuern und beenden
253
’ 8-58.vbs set wshshell = CreateObject("WScript.Shell") wshshell.Run "Notepad.exe" MsgBox "Das Script setzt die Arbeit sofort fort!", _ vbSystemModal
Auch synchrone Aufrufe sind möglich: Hier wartet das Script, bis das aufgerufene Programm wieder beendet wird. Wann das geschieht, kann das Script allerdings nicht kontrollieren: ’ 8-59.vbs set wshshell = CreateObject("WScript.Shell") ergebnis = wshshell.Run("Notepad.exe",1,true) MsgBox "Programm wurde wieder geschlossen!", _ vbSystemModal
8.21.2 Programme per API fernsteuern Wesentlich mehr Spielraum bekommen Sie mit den neuen Befehlen Ihres Projekts: Befehl
Bedeutung
Run IsTaskRunning WaitForTask EndProcess KillProcess
Startet ein Programm und liefert die Process-ID zurück Prüft, ob das Programm noch läuft Wartet, bis ein Programm beendet wird Schließt ein Programm auf freundliche Weise Schließt ein Programm ohne weitere Rückfragen. Nicht gespeicherte Arbeitsergebnisse gehen verloren Findet die Window-Handle des Programms heraus Findet die Window-Handle eines beliebigen Programms Liefert die Process-ID eines beliebigen Fensters Beendet beliebiges Programm Beendet beliebiges Programm sofort und ohne Rückfrage. Arbeitsergebnisse gehen verloren
8.21.3 Programme per API starten Das nächste Script zeigt, wie Sie Programme mit Ihren neuen Befehlen starten: ’ 8-60.vbs set tool = CreateObject("process.id") procID = tool.Run("NOTEPAD.EXE") MsgBox "Habe Editor gestartet und schließe ihn gleich wieder." _ & " Dies funktioniert, weil ich die Process-ID kenne: " _ & procID, vbSystemModal
254
Kapitel 8: Programmier-Trickkiste
tool.EndProcess procID MsgBox "Editor wurde wieder geschlossen!"
Erstaunlich, finden Sie nicht? Das Script kann ab sofort Programme nicht nur öffnen, sondern auf Wunsch auch jederzeit wieder beenden.
Bild 8.27: Programme starten und auch wieder scriptgesteuert beenden
Auf Wunsch schließt Ihr Script das betreffende Programm sogar auf jeden Fall, also auch dann, wenn der Benutzer den Versuch eigentlich abbricht: ’ 8-61.vbs set proc = CreateObject("process.id") pid = proc.Run("NOTEPAD.EXE") MsgBox "Habe den Editor gestartet und schließe ihn jetzt!", _ vbSystemModal if not proc.EndProcess(pid, 5000) then answer = MsgBox("Editor will nicht. Trotzdem schließen?", _ vbYesNo + vbQuestion) if answer = vbYes then proc.KillProcess(pid) end if end if
Das Script öffnet den Editor und schließt ihn dann wieder. Nichts besonderes also, auf den ersten Blick jedenfalls. Wenn Sie allerdings Text in den Editor eingeben und dann auf OK klicken, wird der Editor nicht sofort geschlossen. EndProcess sendet zwar den Wunsch an den Editor, aber der zückt sein »Wollen Sie speichern...«-Fenster. Ihr Script behält trotzdem die Kontrolle. Schließt der Anwender den Editor nicht innerhalb von 5 Sekunden, dann wird Ihr Script rabiat und bietet an, den Editor trotzdem zu schließen. Das gelingt über KillProcess.
8.21
Programme steuern und beenden
255
8.21.4 Prüfen, ob ein Programm noch läuft Ihr Script kann sogar herausfinden, ob ein Programm überhaupt noch läuft oder vielleicht vom Anwender bereits beendet wurde. Das nächste Script zeigt den Editor für maximal 8 Sekunden an. Hat der Anwender bis dahin das Fenster nicht geschlossen, dann wird der Editor beendet. ’ 8-62.vbs set tool = CreateObject("process.id") MsgBox "Sie haben 8 Sekunden, etwas einzugeben!" pid = tool.Run("NOTEPAD.EXE") ' wait for program to exit – check every second do WScript.Sleep 1000 ' sleep 1 sec counter = counter + 1 ' spätestens nach 8 Sekunden Geduld verlieren loop while counter<8 and tool.isTaskRunning(pid) ' Läuft Programm noch? if tool.isTaskRunning(pid) then ' ja, beenden tool.EndProcess(pid) MsgBox "Zeit abgelaufen!", vbSystemModal end if
8.21.5 Warten, bis ein Programm beendet wird Auf Wunsch wartet das Script, bis ein gestartetes Programm beendet wird. Ihr Script könnte also ein Programm starten, anschließend noch dies oder jenes erledigen und dann bis zum Ende des Programms schlafen gehen: ’ 8-63.vbs set tool = CreateObject("process.id") pid = tool.Run("NOTEPAD.EXE") WScript.Sleep 1000 MsgBox "Warte, bis Sie das Programm beenden!", _ vbSystemModal tool.WaitForTask pid MsgBox "Editor wurde beendet!"
8.21.6 Fremde Programme schließen Ihre Befehlserweiterung kann aber noch mehr: Sie schließt sogar fremde Programme, die Sie gar nicht gestartet haben. Alles, was Sie wissen müssen, ist der Name des Fensters:
256
Kapitel 8: Programmier-Trickkiste
’ 8-64.vbs set wshshell = CreateObject("WScript.Shell") wshshell.Run "Notepad.exe" MsgBox "Habe Programm auf normalem Wege geöffnet.", _ vbSystemModal
' schließt Programm "Unbenannt – Editor" set tool = CreateObject("process.id") windowname = "Unbenannt – Editor" ' maximal 10 Sekunden auf Programmende warten ' danach Programm mit Holzhammer entfernen closed = tool.EndProgram(windowname, 10000) if closed = -1 then MsgBox "Fenster wurde nicht gefunden!" elseif closed = 0 then result = MsgBox("Fenster noch offen – beenden?", vbYesNo) if result = vbYes then tool.KillProgram(windowname) end if elseif closed = 1 then MsgBox "Fenster geschlossen." end if
Diese Variante funktioniert allerdings nur mit einfachen Programmen. Programme, die ChildFenster in mehreren Instanzen beschäftigen, lassen sich damit nicht beenden. Dazu gehört der Explorer ebenso wie Winword.
8.22
Eigenschaften-Seiten anzeigen
Und noch eine undokumentierte API-Funktion läßt sich mit Gewinn nutzen. Das Projekt PROPERTY zeigt, wie Sie die Eigenschaften-Dialogseite einer jeden Datei öffnen. Das funktioniert sogar für Drucker. Befehl
Beschreibung
ShowProp IsNT
Zeigt die Eigenschaften-Dialogseite einer Datei, eines Ordners oder eines Druckers an True für Windows NT/2000
Tab. 8.22: Befehle des property.tool-Objekts
8.23
Zugriff auf die Registry
257
8.22.1 Eigenschaften von Laufwerken, Dateien, Druckern Das nächste Script zeigt, wie die Sache funktioniert: ’ 8-65.vbs set tool = CreateObject("property.tool") tool.ShowProp "C:\" tool.ShowProp "C:\MSDOS.SYS" ’ Hier einen bei IHNEN installierten ’ Druckernamen angeben!!! tool.ShowProp "HP Laserjet" WScript.Sleep 5000 MsgBox "Schließe Fenster wieder!", _ vbSystemModal
Alle Dialogfenster werden wieder geschlossen, sobald Ihr Script endet. Die Befehlserweiterung sucht zuerst nach Ordnern und Dateien, und wenn keine passenden gefunden werden, sucht es nach Druckern. Das ist der Grund, warum Sie eine Druckerfehlermeldung bekommen, wenn Sie einen nicht vorhandenen Ordner oder eine nicht vorhandene Datei angeben.
8.23
Zugriff auf die Registry
Zwar enthält das Wscript.Shell-Objekt einige Methoden, um Werte in die Registry zu schreiben und daraus zu lesen, aber diese Möglichkeiten sind beschränkt. Sie können zum Beispiel weder die Namen von unbekannten Unterschlüsseln auflisten noch Binärwerte schreiben. Dieses Manko behebt die nächste Befehlserweiterung namens REGISTRY: Befehl
Schlüssel oder Wert löschen Unterschlüssel auflisten Registry-Werte lesen Registry-Werte schreiben Windows-Version ermitteln Icons neu anlegen Informationen über System ermitteln Windows-Einstellungen aktivieren Nach einem Schlüssel suchen Nach einem Eintragsnamen suchen Nach einem Wert suchen
Tab. 8.23: Befehle des regtool.tob-Objekts
258
Kapitel 8: Programmier-Trickkiste
Die Besonderheit dieser Befehlserweiterung liegt darin, daß sie automatisch zwischen verschiedenen Windows-Plattformen unterscheidet. Sie können diese Hauptschlüssel einsetzen: Schlüssel
Registry-Branch
HKLM HKCU HKCR WINUSER WINMACHINE
HKEY_LOCAL_MACHINE: Allgemeine Einstellungen HKEY_CURRENT_USER: Benutzerspezifische Einstellungen HKEY_CLASSES_ROOT: Einstellungen über Dateien und COM-Objekte HKEY_CURRENT_USER\Software\Microsoft\Windows (NT)\CurrentVersion\ HKEY_LOCAL_MACHINE\Software\Microsoft\Windows (NT)\CurrentVersion\
Tab. 8.24: Schlüssel zum Zugriff auf die Registry-Zweige
8.23.1 Unterschlüssel auflisten Wie Sie die Unterschlüssel eines Schlüssels auflisten, zeigt das folgende Beispiel: ’ 8-66.vbs set regaddon = CreateObject("regtool.tob") set collection = regaddon.RegEnum("HKCR\") for each subkey in collection list = list & subkey & vbCr next MsgBox "Subkeys in HKEY_CLASSES_ROOT:" & vbCr & list
Tip: Schlüssel werden mit »\« markiert! Denken Sie daran: Wenn Sie einen Schlüssel ansprechen wollen, dann gehört an das Ende ein »\«-Zeichen. Wollen Sie dagegen einen Wert erfragen, dann verzichten Sie auf das abschließende »\«-Zeichen. Diese Unterscheidung ist wichtig und gilt auch für die Registry-Befehle des Wscript.Shell-Objekts.
8.23.2 Einträge in einem Registry-Schlüssel listen Wie wichtig das abschließende »\«-Zeichen im Registry-Schlüsselnamen ist, ziegt das nächste Beispiel. Es fragt diesmal nämlich nicht nach Unterschlüsseln, sondern listet alle Einträge auf, die in dem angegebenen Schlüssel vorkommen: ’ 8-67.vbs set regaddon = CreateObject("regtool.tob") set collection = regaddon.RegEnum("HKCU\Control Panel\Colors") for each subkey in collection list = list & subkey & vbCr next
8.23
Zugriff auf die Registry
259
MsgBox "Einträge in HKCU\Control Panel\Colors:" & vbCr & list
Bild 8.28: Registry-Zweige auslesen
Mit einer winzigen Änderung listet das Script nicht nur die Eintragsnamen, sondern auch die Werte, die darin gespeichert sind: ’ 8-68.vbs set regaddon = CreateObject("regtool.tob") key = "HKCU\Control Panel\Colors" set collection = regaddon.RegEnum(key) for each subkey in collection list = list & subkey & "=" _ & regaddon.RegRead(key & "\" & subkey) & vbCr next MsgBox "Einträge in HKCU\Control Panel\Colors:" & vbCr & list
8.23.3 Versionsunabhängige Scripts schreiben Windows 9x und Windows NT/2000 speichern einige wichtige Informationen an unterschiedlichen Stellen in der Registry. Bei Windows 9x stehen diese Informationen im Windows-Schlüssel, und bei Windows NT/2000 heißt dieser Schlüssel Windows NT. Damit Ihre Scripts trotzdem auf allen Windows-Versionen gleich gut laufen, bietet die Befehlserweiterung die beiden synthetischen Schlüssel WINUSER und WINMACHINE. Sie deuten immer
260
Kapitel 8: Programmier-Trickkiste
automatisch an die richtige Stelle. Nur deshalb findet das nächste Script immer den registrierten Windows-Benutzer heraus, egal, welche Windows-Version Sie einsetzen: ’ 8-69.vbs set tool = CreateObject("regtool.tob") MsgBox "Registrierter Benutzer: " _ & tool.RegRead("WINMACHINE\RegisteredOwner")
8.23.4 Variablentyp von Registry-Einträgen herausfinden Die Registry speichert Daten in drei unterschiedlichen Variablentypen: Text, Zahlen und Binärdaten. Welcher Variablentyp tatsächlich hinter einem Eintrag steckt, das findet das nächste Script heraus: ’ 8-70.vbs set tool = CreateObject("regtool.tob") dummy = tool.RegRead("HKCR\vbsfile\", regtype) MsgBox "Variablentyp: " & regtype
8.23.5 Binärdaten lesen und schreiben Ihre Befehlserweiterung kann sogar mit Binärdaten umgehen, solange die Daten nicht größer als 255 Bytes sind. Die Daten wandelt die Befehlserweiterung jeweils ins benutzerfreundliche Textformat um. So lesen Sie Binärdaten: ’ 8-71.vbs set tool = CreateObject("regtool.tob") idno = tool.RegRead("WINMACHINE\DigitalProductID") MsgBox "Produkt ID: " & vbCr & idno
Und so werden Binärdaten geschrieben: ’ 8-72.vbs set tool = CreateObject("regtool.tob") tool.RegWrite "HKCU\Software\mykey", _ "48 65 6C 6C 6F 20 57 6F 72 6C 64 21", "REG_BINARY" MsgBox "Daten geschrieben!"
8.23.6 Registry-Daten löschen Wenden Sie größte Vorsicht an, wenn Sie scriptgesteuert Registry-Daten löschen! Das nächste Script löscht den eben angelegten Schlüssel mit den Binärdaten wieder aus der Registry:
Tip: Löschen geht nicht – hier steht, warum! Bei Windows NT/2000 dürfen Sie keine Schlüssel löschen, die Unterschlüssel enthalten. Löschen Sie zuerst die Unterschlüssel. Außerdem kann es sein, daß Sie die Berechtigungen benötigen, um geschützte Schlüssel zu löschen.
8.23.7 Herausfinden, ob es einen bestimmten Schlüssel gibt Manchmal wollen Sie gar nicht an Registry-Daten heran, sondern nur testen, ob es einen bestimmten Schlüssel überhaupt gibt. Das leistet das nächste Script: ’ 8-74.vbs set tool = CreateObject("regtool.tob") if tool.KeyExists("HKCR\.doc\") then MsgBox "DOC Dateien sind registriert" else MsgBox "DOC Dateien sind NICHT registriert" end if
8.24
Bildschirmauflösung und Farbtiefe ändern
Sogar tiefgreifende Änderungen in die Einstellungen Ihrer Grafikkarte sind per Script möglich. Das Projekt SCREEN liefert alle Befehle, die dazu nötig sind. Damit schaltet Ihr Script schnell mal in eine andere Bildschirmauflösung oder Farbtiefe. Befehl
Ändert die Bildschirmauflösung Schaltet zu den Defaulteinstellungen zurück Ermittelt die Einstellungen der Grafikkarte Liefert alle verfügbaren Auflösungen Ihrer Grafikkarte Ermittelt die Bildwiederholrate der Grafikkarte Ändert die Bildwiederholrate der Grafikkarte
Tab. 8.25: Befehle des screen.tool-Objekts
262
Kapitel 8: Programmier-Trickkiste
8.24.1 Alle verfügbaren Grafikkarten-Einstellungen sehen Schauen Sie sich zuerst an, welche Auflösungen, Farbtiefen und Bildwiederholraten Ihre Grafikkarte eigentlich anzubieten hat: ’ 8-75.vbs set tool = CreateObject("screen.tool") set wshshell = CreateObject("WScript.Shell") wshshell.Popup tool.EnumModes
Bild 8.29: Auflösungen der aktuellen Grafikkarte
8.24.2 Aktuelle Grafikkarten-Einstellungen sichtbar machen Als nächstes soll Ihr Script herausfinden, auf welche Werte Ihre Grafikkarte zur Zeit eingestellt ist: ’ 8-76.vbs set tool = CreateObject("screen.tool") tool.GetDisplaySettings xres, yres, color, frequ MsgBox "Auflösung: " & xres & " x " & yres & vbCr _ & "Farben: " & 2^color & vbCr & "Frequenz: " _ & frequ & "Hz."
Bild 8.30: Bei dieser Grafikkarte kann die Bildwiederholfrequenz nicht bestimmt werden
8.24.3 Beste Bildwiederholrate ermitteln Die Bildwiederholfrequenz entscheidet, ob Ihr Monitor flimmert. Lassen Sie Ihr Script herausfinden, welche Bildwiederholraten die Grafikkarte für eine bestimmte Auflösung anzubieten hat!
8.25
Dateien kopieren und löschen
263
’ 8-77.vbs set tool = CreateObject("screen.tool") MsgBox tool.GetFrequency(1024, 768)
Das Script liefert die verfügbaren Frequenzen und Farbtiefen zurück.
8.24.4 Eine andere Bildwiederholfrequenz einstellen Ihr Script kann sogar aktiv Einstellungen ändern. Das nächste Script schaltet zum Beispiel auf augenfreundliche 75 Hz um, sofern Ihre Grafikkarte diese Bildwiederholfrequenz bei der aktuellen Auflösung und Farbtiefe unterstützt: ’ 8-78.vbs set tool = CreateObject("screen.tool") if tool.ChangeFrequency(75) then MsgBox "Frequenz geändert auf 75 Hz." else MsgBox "Frequenz nicht änderbar" end if
8.24.5 Bildschirmauflösung ändern Wenn Sie wollen, dann schaltet Ihr Script sogar die Bildschirmauflösung um. Das nächste Beispiel schaltet vorübergehend auf 640x480 Punkte. ’ 8-79.vbs set tool = CreateObject("screen.tool") if tool.ChangeDisplay(640,480,,0) then MsgBox "Auflösung geändert auf 640x480" tool.ResetDisplay else MsgBox "Auflösung konnte nicht geändert werden" end if
Wollen Sie die Einstellung permanent ändern, dann ersetzen Sie die 0 in ChangeDisplay durch 1 oder lassen das Argument ganz fort. Das dritte Argument, das in diesem Beispiel nicht genutzt wurde, bestimmt die Farbtiefe.
8.25
Dateien kopieren und löschen
Sicherlich: Auch das Scripting.FileSystemObject erlaubt Ihnen, Dateien und Ordner zu kopieren. Viel komfortabler geht das allerdings mit einigen undokumentierten API-Funktionen. Die zeigen während der möglicherweise langwierigen Kopieraktion nicht nur eine unterhaltsame Grafikani-
264
Kapitel 8: Programmier-Trickkiste
mation an. Sie können mit den neuen Befehlen des Projekts SHELLCOPY auch in den Papierkorb löschen und Dateiaktionen mit einer Undo-Funktion ausstatten: Befehl
In den Papierkorb löschen Kopieren An verschiedene Ziele kopieren Verschieben Generalfunktion zum Kopieren, Verschieben, Löschen Papierkorb leeren
Tab. 8.26: Befehle des shellcopy.tool-Objekts
8.25.1 TEMP-Dateien in den Papierkorb löschen Das nächste Script zeigt, wie Sie Dateien nicht einfach löschen, sondern in den Papierkorb verschieben. Von dort können die Dateien notfalls wiederbelebt werden.
Bild 8.31: Endlich komfortabel mit Dialogfenster kopieren und löschen
Das Script löscht als Test alle Dateien im Ordner TEMP, die älter sind als 2 Tage. Der Ordner TEMP enthält normalerweise temporäre Dateien Ihrer Programme und kann zu monströsen Ausmaßen anwachsen, wenn er nicht hin und wieder aufgeräumt wird – wie zum Beispiel mit dem nächsten Script: ’ 8-80.vbs set tool = CreateObject("shellcopy.tool") ’ alle Dateien im TEMP-Ordner markieren, ' die älter sind als 2 Tage set fs = CreateObject("Scripting.FileSystemObject") set temp = fs.GetSpecialFolder(2) for each file in temp.files if DateDiff("d",file.DateLastModified, date)>2 then list = list & file.path & chr(0) end if next
8.25
Dateien kopieren und löschen
265
’ ab in den Papierkorb: if len(list)>0 then MsgBox tool.Recycle(list) end if
8.25.2 Papierkorb löschen Ihre Scripts haben normalerweise keine Möglichkeit, den Windows-Papierkorb zu löschen. Mit Ihrer neuen Befehlserweiterung geht das durchaus, sogar sehr einfach: ’ 8-81.vbs set tool = CreateObject("shellcopy.tool") tool.EmptyRecycler MsgBox "Papierkorb gelöscht."
8.25.3 Backups anlegen Normalerweise sind Backup-Programme langsam und schwerfällig. Nicht so das nächste Script. Es legt automatisch ein Backup eines beliebigen Ordners einschließlich aller Unterordner an und demonstriert dabei die neuen Befehle. Die Besonderheit: Haben Sie erst einmal ein Backup angelegt und rufen dann Ihr Script erneut auf, so werden nur noch die geänderten und neuen Dateien kopiert. Das geht blitzschnell. Passen Sie im Tool lediglich den Ordnernamen mit den Originaldaten und den Ordner für das Backup an. Das Script ermittelt zuerst, welche Dateien kopiert werden müssen. Das kann eine Weile dauern. Danach beginnt der Kopierprozeß, der mit dem üblichen Kopieren-Dialogfenster begleitet wird. ’ 8-82.vbs set tool = CreateObject("shellcopy.tool") set fs = CreateObject("Scripting.FileSystemObject") ’ Quelle und Ziel des Backups source = "D:\SOURCES\" dest = "C:\BACKUP\" ’ Liste der zu kopierenden Dateien sourcelist = "" ’ Liste der Zieldateien destlist = "" ' geprüfte counter1 = ' kopierte counter2 =
Dateien: 0 Dateien: 0
266
Kapitel 8: Programmier-Trickkiste
’ korrekte Syntax? if not right(source,1)="\" then source = source & "\" if not right(dest,1)="\" then dest = dest & "\" ' zu kopierende Dateien auswählen BackupFolder fs.GetFolder(source) ' Kopieren, falls erforderlich if counter2>0 then tool.CopyMultiDest sourcelist, destlist ' Status zurückmelden MsgBox "Backup fertig:" & vbCr & counter1 & " Dateien geprüft." _ & vbCr & counter2 & " Dateien kopiert." _ & vbCr & counter1-counter2 & " Dateien aktuell." sub BackupFolder(folderobj) ' wie heißt der Zielordner? destfolder = dest & mid(folderobj.path, len(source)+1) ' Fehlende Ordner anlegen if not fs.FolderExists(destfolder) then fs.CreateFolder destfolder end if ' alle Dateien im Ordner prüfen for each file in folderobj.files ' wie heißt die zugehörige Backupdatei? destfilename = dest & mid(file.path, len(source)+1) counter1 = counter1 + 1 ' Auswählen, wenn Datei noch nicht existiert oder ' sich geändert hat (Archiv-Attribut gesetzt) if (not fs.FileExists(destfilename)) or _ ((file.Attributes and 32)=32) then counter2 = counter2 + 1 sourcelist = sourcelist & file.path & Chr(0) destlist = destlist & destfilename & Chr(0) ' Archiv-Attribut löschen file.Attributes = file.Attributes and not 14000 _ and not 32 end if next ' rekursiv alle Unterordner prüfen for each subfolder in folderobj.subfolders BackupFolder subfolder next end sub
8.26
8.26
Icons im Gerätefeld der Taskleiste anzeigen
267
Icons im Gerätefeld der Taskleiste anzeigen
Normalerweise sind Scripts lichtscheue Gesellen: Solange ein Script läuft, sehen und hören Sie nicht viel von ihm, und abbrechen können Sie es schon gar nicht. Eine Lösung bietet das nächste Projekt namens TRAY. Es blendet ein Icon im Gerätefeld der Taskleiste ein, solange Ihr Script läuft. Sie können das Script über dieses Icon jederzeit abbrechen. Befehl
Beschreibung
HandleEvents QuitOnDemand Quit
Events prüfen: Wurde auf Icon geklickt? Script beenden, wenn Icon angeklickt wurde Icon aus Taskleiste entfernen
Tab. 8.27: Befehle des tray.icon-Objekts
8.26.1 Scripts per Taskleisten-Icon steuern Hier ein kleines Anwendungsbeispiel: Solange das Script läuft, wird ein Icon in der Taskleiste eingeblendet. Klicken Sie auf das Icon, dann wird das Script vorzeitig abgebrochen. ’ 8-83.vbs set tool = WScript.CreateObject("tray.icon", "event_") call tool.QuitOnDemand ' Script beschäftigen for x = 1 to 1000 for y = 1 to 10000000 ' Icon-Klicks prüfen tool.HandleEvents test = left("teststring",1) + mid("testing", 3, 2) next next ' Icon aus Taskleiste ausblenden call tool.Quit ' wird aufgerufen, wenn jemand auf das Icon klickt sub event_QuitNow WScript.Quit end sub
QuitOnDemand ist ein Wolf im Schafspelz und akzeptiert viele optionale Argumente: call tool.QuitOnDemand("Beenden?", "shell32.dll", 3, "Info!")
Probieren Sie diese Zeile in Ihrem Script aus, dann wird als Taskleisten-Icon das 4. Icon (die Numerierung beginnt bei 0) aus der Datei SHELL32.DLL verwendet. Auch die Meldungen ändern sich.
268 8.27
Kapitel 8: Programmier-Trickkiste
Versionsinformationen über Dateien erhalten
DLL- und Programmdateien enthalten viele versteckte Informationen, zum Beispiel die Datei- und Programmversionen oder Copyright-Informationen. An diese Infos ist normalerweise nur schwer heranzukommen. Das Projekt VERSION macht es Ihnen leicht und zeigt nebenbei, wie Sie eigene Objekte definieren.
Bild 8.32: Detailinformationen aus EXE- und DLL-Dateien auslesen
Mit GetVersion erhalten Sie ein (selbstdefiniertes) neues Objekt, das die Geheiminformation der angegebenen Datei enthält.
8.27.1 Informationen über Dateien herausfinden Das nächste Script öffnet im Windows-Ordner die Datei EXPLORER.EXE und zeigt Ihnen allerhand interessante Infos: ’ 8-84.vbs set version = CreateObject("file.versioninfo") set wshshell = CreateObject("WScript.Shell") windir = wshshell.ExpandEnvironmentStrings("%WINDIR%") filename = "explorer.exe" set obj = version.GetVersion(windir & "\" & filename) if obj.isVer then msg = msg & "Version: " & obj.FileVersion & vbCr msg = msg & "Designed for: " & obj.OS & vbCr msg = msg & "Designed by: " & obj.CompanyName & vbCr msg = msg & "Beschreibung: " & obj.FileDescription & vbCr msg = msg & obj.LegalCopyright end if MsgBox "Information über " & filename & vbCr & msg
8.28
8.28
Eigene HTML-Dialogfenster verwenden
269
Eigene HTML-Dialogfenster verwenden
Inzwischen wissen Sie, wie leicht Sie mit der VB CCE ganz eigene Dialogfenster verwenden. Was aber, wenn Sie den Inhalt der Dialogfenster dynamisch gestalten wollen oder Sie einfach keine Lust haben, Dialogfenster mit der VB CCE zu entwerfen? In diesem Fall verwenden Sie einfach HTML als Vorlage für Ihre Dialogfenster. Windows bringt einen Allzweck-Webbrowser mit, der auch im Internet Explorer seinen Dienst versieht und mit dem Sie hervorragend HTML-Schablonen für Ihre ganz eigenen Dialogfenster verwenden können.
8.28.1 Einfache HTML-Dialogfenster verwenden Wie simpel und vielseitig Ihre neuen HTML-Dialogfenster sind, zeigt das folgende Script: ’ 8-85.vbs set tool = CreateObject("Web.dialog") ’ wo liegt das Script (in welchem Ordner)? myname = WScript.ScriptFullName cp = left(myname, InstrRev(myname, "\")) ’ template template = cp & "schablone1.htm" ’ size dialog tool.Width = 400 tool.Height = 300 tool.Title = "Eingabefenster" tool.SetIcon "shell32.dll", 3 tool.Resizable = true ’ Dialogfenster anzeigen set webcontrol = tool.ShowDialog(template) ’ alle benannten Elemente auslesen for each element in webcontrol on error resume next elname = element.name if not err.number=0 then ’ element has no name tag! elname = "unbenanntes Objekt vom Typ: " _ & TypeName(element) end if on error goto 0 list = list & elname & vbCr next MsgBox list
270
Kapitel 8: Programmier-Trickkiste
Damit es funktionieren kann, speichern Sie lediglich in demselben Ordner, in dem auch das Script lagert, Ihre HTML-Schablone als SCHABLONE1.HTM. Die könnte folgendermaßen aussehen: <style> p {font: 12pt Arial}
Ihr Name:
Wenn Sie mögen, gestalten Sie die Schablone einfach mit einem Web-Design-Tool, zum Beispiel mit Frontpage. Achten Sie nur darauf, alle Eingabefelder mit Namen zu versehen, denn das Script zeigt daß nur Felder mit Namen direkt angesprochen werden können.
Bild 8.33: Eigene Dialogfenster via HTML-Schablone
Noch ist Ihr Script allerdings nicht perfekt: Es liefert zwar alle Elemente der Schablone zurück, aber nicht die Werte darin. Damit Ihre HTML-Schablone zu einem echten Dialogfenster wird, mit dem man Fragen stellen und Antworten bekommen kann, formulieren Sie das Script nur ein wenig um: ’ 8-86.vbs set tool = CreateObject("Web.dialog") ’ wo liegt das Script (in welchem Ordner)? myname = WScript.ScriptFullName cp = left(myname, InstrRev(myname, "\")) ’ template template = cp & "schablone1.htm" ’ size dialog
8.28
Eigene HTML-Dialogfenster verwenden
271
tool.Width = 400 tool.Height = 300 tool.Title = "Eingabefenster" tool.SetIcon "shell32.dll", 3 tool.Resizable = true ’ Dialogfenster anzeigen set webcontrol = tool.ShowDialog(template) ’ Eingabe lesen if TypeName(webcontrol)="Nothing" then MsgBox "Abgebrochen!" else MsgBox "Ihr Name: " & webcontrol.namefeld.value end if
8.28.2 Schaltflächen mit Scriptprozeduren verbinden Bislang fristete die Hilfe-Schaltfläche in Ihrem Dialogfenster noch ein wenig aufregendes Dasein: Beim Klick auf die Schaltfläche passierte schlichtweg nichts. Kein Wunder, mit der Schaltfläche war keine weitere Aktion verbunden. Über den GetRef-Befehl kann Ihr Script jede beliebige Scriptprozedur mit der Schaltfläche verbinden, und genau das passiert im nächsten Beispiel: ’ 8-87.vbs set tool = CreateObject("Web.dialog") ’ Pfad zum Script und zur Schablone myname = WScript.ScriptFullName cp = left(myname, InstrRev(myname, "\")) ’ Vorlage template = cp & "schablone1.htm" tool.Width = 400 tool.Height = 300 tool.Title = "Willkommen!" set webcontrol = tool.LoadDialog(template) ' HILFE-Schaltfläche mit Script verbinden: webcontrol.help.onclick = GetRef("showhelp") set webcontrol = tool.DisplayDialog ' Ergebnis lesen if TypeName(webcontrol)="Nothing" then MsgBox "Abgebrochen!" else
272
Kapitel 8: Programmier-Trickkiste
MsgBox "Ihr Name: " & webcontrol.namefeld.value end if sub ShowHelp MsgBox "Bitte geben Sie Ihren Namen ein." end sub
Probieren Sie es aus: Wenn Sie diesmal auf Hilfe klicken, bekommen Sie einen kleinen Hilfetext geliefert.
8.28.3 Kommunikation zwischen HTML-Vorlage und Script Bis jetzt war Ihr Dialogfenster auf die eingebauten Schaltflächen Ihres COM-Objekts angewiesen, um die Eingabe zu übernehmen. Wenn Sie das wünschen, dann kann Ihre HTML-Vorlage diese Aufgabe allerdings auch selbst übernehmen. Sie können dann Ihre OK- und Abbrechen-Schaltflächen direkt in die HTML-Vorlage einbauen und gestalten, wie Sie wollen. Dazu brauchen Sie nur eine etwas erweiterte Schablone. Speichern Sie die nächste Schablone als SCHABLONE2.HTM in demselben Ordner, in dem Sie auch das Script aufbewahren: <style> p {font: 12pt Arial} <script language="VBScript"> set parentobj = Nothing sub Quit if not TypeName(parentobj)="Nothing" then parentobj.Quit false end if end sub sub Leave if not TypeName(parentobj)="Nothing" then parentobj.Quit true end if end sub
Die Schablone definiert die beiden Prozeduren Quit und Leave. Es stellt außerdem die nötigen Schaltflächen zur Verfügung, die diese Prozeduren aufrufen. Allein für sich bringen die Schaltflächen und Prozeduren nur wenig. Der Trick besteht darin, beim Laden der Vorlage in die Variable parentobj eine Referenz auf Ihr COM-Objekt zu laden. So kann Ihre HTML-Schablone auf Ihr COM-Objekt zugreifen und das Dialogfenster schließen.
Bild 8.34: Ihre HTML-Schablone steuert per Schaltfläche das Dialogfenster
Genau das passiert, wenn Sie das nächste Script verwenden: ’ 8-88.vbs set tool = CreateObject("Web.dialog") myname = WScript.ScriptFullName cp = left(myname, InstrRev(myname, "\")) template = cp & "schablone2.htm" tool.Width = 400 tool.Height = 300 tool.Title = "My Form" ' eigene Schaltflächen des COM-Objekts verschwinden ' lassen tool.ShowButtons false set webcontrol = tool.LoadDialog(template) webcontrol.help.onclick = GetRef("showhelp") set webcontrol = tool.DisplayDialog if TypeName(webcontrol)="Nothing" then MsgBox "Abbruch" else MsgBox "Eingabe: " & webcontrol.namefeld.value end if
274
Kapitel 8: Programmier-Trickkiste
sub ShowHelp MsgBox "Bitte Namen eingeben!" end sub
8.28.4 Luxus-Optionen für HTML-Dialoge Ihr HTML-Formular läßt sich noch luxuriöser gestalten. Vielleicht wollen Sie, daß sich das Dialogfenster automatisch schließt, sobald im Eingabefeld die [Eingabe]-Taste gedrückt wird. Verwenden Sie einfach diese Schablone und speichern Sie sie als SCHABLONE3.HTM: <style> p {font: 12pt Arial} <script language="VBScript"> set parentobj = Nothing sub Quit if not TypeName(parentobj)="Nothing" then parentobj.Quit false end if end sub sub Leave if not TypeName(parentobj)="Nothing" then parentobj.Quit true end if end sub sub document_onkeypress() keycode = window.event.keyCode if keycode = 13 then Leave elseif keycode = 27 then Quit end if end sub
Ihr Name:
8.28
Eigene HTML-Dialogfenster verwenden
275
onclick="Leave()">
Nun brauchen Sie nur noch Ihr vorangegangenes Script etwas zu ändern und anstelle der Schablone SCHABLONE2.HTM die neue Schablone SCHABLONE3.HTM einzutragen. Wenn Sie anschließend in Ihr Dialogfenster etwas eintragen und [Eingabe] drücken, schließt sich das Dialogfenster automatisch. Was allerdings noch stört: Der Cursor ist anfangs nicht im Textfeld, und der Anwender muß zuerst in dieses Feld klicken, um etwas eingeben zu können. Nicht mehr lange. Verwenden Sie die nächste Schablone, und speichern Sie sie als SCHABLONE4.HTM. Ändern Sie wieder Ihr Script, und schon steht der Cursor im Eingabefeld bereit: <style> p {font: 12pt Arial} <script language = "VBScript"> sub focusit document.all.namefeld.focus() end sub <script language="VBScript"> set parentobj = Nothing sub Quit if not TypeName(parentobj)="Nothing" then parentobj.Quit false end if end sub sub Leave if not TypeName(parentobj)="Nothing" then parentobj.Quit true end if end sub sub document_onkeypress() keycode = window.event.keyCode if keycode = 13 then
276
Kapitel 8: Programmier-Trickkiste
Leave elseif keycode = 27 then Quit end if end sub
8.28.5 Formulareingaben prüfen Ihre HTML-Vorlage kann sogar Eigenintelligenz enthalten und zum Beispiel prüfen, ob der Anwender auch Antworten eingegeben hat, die Ihnen genehm sind. Wie das funktioniert, zeigt die nächste Schablone, die Sie als SCHABLONE5.HTM speichern. Ändern Sie wieder Ihr Script, und schon weist Ihr Dialogfenster mit roter Farbe auf nicht ausgefüllte Felder hin: <style> p {font: 12pt Arial} <script language = "VBScript"> sub focusit document.all.namefeld.focus() end sub
<script language="VBScript"> set parentobj = Nothing sub Quit if not TypeName(parentobj)="Nothing" then parentobj.Quit false
8.28
Eigene HTML-Dialogfenster verwenden
277
end if end sub sub Leave if document.all.namefeld.value="" then document.all.namefeld.style.background = "#FF0000" MsgBox "Formular nicht ausgefüllt" document.all.namefeld.style.background = "#FFFFFF" document.all.namefeld.focus elseif not TypeName(parentobj)="Nothing" then parentobj.Quit true end if end sub sub checkkeyboard() keycode = window.event.keyCode if keycode = 13 then Leave elseif keycode = 27 then Quit end if end sub
8.28.6 Optionsfelder verwenden Der große Vorteil Ihrer HTML-Dialogfenster ist Ihre Gestaltungsfreiheit: Sie können alle nur erdenklichen HTML-Eingabeobjekte verwenden, zum Beispiel ein Optionsfeld. Das liefert die nächste Beispielschablone namens SCHABLONE6.HTM: <style> p {font: 12pt Arial} .mystyle {font: 10pt Arial; font-weight: bold}
278
Kapitel 8: Programmier-Trickkiste
Fragt sich nur, wie Sie die Optionsfelder per Script auslesen. Diese Aufgabe übernimmt das nächste Script:
Bild 8.35: Optionen wählen – auch das geht per HTML-Schablone ’ 8-89.VBS set tool = CreateObject("Web.dialog") myname = WScript.ScriptFullName cp = left(myname, InstrRev(myname, "\")) template = cp & "schablone6.htm" tool.Resizable =false tool.Width = 400 tool.Height = 200 tool.Title = "Option Dialog" set webcontrol = tool.ShowDialog(template) if TypeName(webcontrol)="Nothing" then MsgBox "Abgebrochen!" else for x=0 to (webcontrol.r1.length)-1 if webcontrol.r1(x).checked then optionval = webcontrol.r1(x).value end if next MsgBox "Ihre Wahl: " & optionval end if
279
9
Auf Datenbanken zugreifen: Universal Data Access
Windows wird immer modulartiger, und das ist gut so: Vielleicht erinnern Sie sich noch an die vielen »Insellösungen«, mit der die Computerindustrie begonnen hat. Ein schickes Programm konnte damals zwar maßgeschneidert perfekte Lösungen zaubern, war aber in sich ein geschlossenes Gebilde. Sobald man versucht, die Ergebnisse dieses Programms in ein anderes Programm einzufüttern, begann der Frust: Inkompatibilitäten sorgten – und sorgen sogar noch heute – dafür, daß Sie an die Ergebnisse erst über viel Handarbeit und Informationsverlust herankommen. Microsoft hat deshalb ein Dreischichten-Modell entwickelt. Das sorgt dafür, daß alle Programme, die Sie einsetzen, viel besser im Team miteinander arbeiten können. Die oberste Schicht ist die Präsentationsebene. Das ist sozusagen die Programmoberfläche, mit der Sie Fragen stellen und Antworten bekommen. In der Mitte liegt die Business Logic. Hier ackern die eigentlichen Programme und tun genau das, wofür sie erfunden wurden. Die dritte Schicht heißt Daten-Ebene: Hier lagern die Daten – Auftragsdaten, Kochrezepte oder was auch immer Sie als Datengrundlage verwenden. Springender Punkt bei diesem Dreischichten-Modell ist die Flexibilität: Durch die Auftrennung in drei Schichten verwendet Ihr Computer die effiziente Arbeitsteilung. Ein neues Programm braucht sich nicht darum zu kümmern, wo es seine Daten aufbewahrt. Es greift einfach über eine Standardschnittstelle auf die Daten-Ebene zu und speichert Sie dort. Es ist also ganz egal, ob Sie als Daten-Ebene eine Excel-Tabelle, eine Access-Datenbank oder gar einen Großrechner einsetzen. Diese Standardschnittstelle heißt ADO DB. Ihre Scripts können sie ebenso verwenden wie teure Profisoftware, und genau das ist hochinteressant. Scripts können nämlich auf diese Weise nicht nur elegant Datenbanken einsetzen, sondern funktionieren auf Wunsch auch als Daten-Transporteur, um Daten aus einem Programm in ein anderes zu überführen. Ganz nebenbei zeigen Ihnen die Scripts ohne viel Ballast, wie die Schnittstelle funktioniert. Sie werden überrascht sein, wie einfach das geht!
9.1
Wie kommt man an ADO DB heran?
ADO DB ist kostenlos, aber unter Umständen noch nicht auf Ihrem Computer vorhanden. ADO DB ist nämlich kein integraler Bestandteil von Windows. Statt dessen wandert ADO DB über Programme wie Microsoft Office oder andere Software in Ihr System ein. Erst bei Windows 2000 ist ADO DB nun endlich von Anfang an mit dabei.
280
Kapitel 9: Auf Datenbanken zugreifen: Universal Data Access
Bild 9.1: Ist bei Ihnen ADO schon startklar? Und wenn ja, in welcher Version?
Ob ADO bei Ihnen schon einsatzbereit ist und in welcher Version es vorliegt, verrät Ihnen das folgende Script: ’ 9-1.VBS set fs = CreateObject("Scripting.FileSystemObject") set wshshell = CreateObject("WScript.Shell") msg = "ADO status:" & vbCr & vbCr ’ ist ADODB.Connection vorhanden? on error resume next set dummy = CreateObject("ADODB.Connection") if not err.number = 0 then MsgBox msg & "ADODB.Connection fehlt!" WScript.Quit else msg = msg & "ADODB.Connection funktioniert." & vbCr end if on error goto 0 ’ retrieve files on error resume next clsid = wshshell.RegRead("HKCR\ADODB.Connection\CLSID\") exec = wshshell.RegRead("HKCR\CLSID\" & clsid & "\InProcServer32\") path = Left(exec, InstrRev(exec, "\")-1) path = Left(path, InstrRev(path, "\")-1) & "\Ole DB\" if not err.number=0 then MsgBox msg & "Konnte die Dateiversionen nicht bestimmen!" WScript.Quit end if on error goto 0 ’ check for ADO components filename = "msdadc.dll" if fs.FileExists(path & filename) then filever = fs.GetFileVersion(path &filename) msg = msg & filename & " vorhanden: Version " _ & filever & vbCr else
9.1
Wie kommt man an ADO DB heran?
281
msg = msg & filename & " fehlt." & vbCr end if filename = "oledb32.dll" if fs.FileExists(path & filename) then filever = fs.GetFileVersion(path &filename) msg = msg & filename & " vorhanden: Version " _ & filever & vbCr else msg = msg & filename & " fehlt." & vbCr end if
MsgBox msg, vbInformation
9.1.1
ADO DB Versionsdschungel: So blicken Sie durch
ADO DB besteht aus einer ganzen Reihe von Einzelteilen, und wie immer bei Microsoft geben sich die verschiedenen Versionen die Klinke in die Hand. Mit Hilfe des vorangegangenen Scripts finden Sie sich aber schnell zurecht: ADODB.Connection MSDADC.DLL
MDAC (Microsoft Data Access Components) nicht installiert MDAC 1.5c MDAC 2.0 MDAC 2.0 SP1/SP2 MDAC 2.1.0.3513.2 (SQL) MDAC 2.1.1.3711.6 (Internet Explorer 5) MDAC 2.1.1.3711.11 MDAC 2.5 (Windows 2000)
Falls das Script ein fehlendes oder inkomplettes ADO meldet, dann laden Sie sich das kostenlose ADO-Paket direkt von Microsoft aus dem Internet herunter. Generelle Infos bekommen Sie hier: www.microsoft.com/data/ado/default.htm. Das ADO-Nachrüstpaket gibt es kostenlos hier: www.microsoft.com/data/download.htm. Suchen Sie nach MDAC 2.1 oder höher. Richten Sie sich allerdings seelisch darauf ein, daß das Download mit mehr als 6 MB zu Buche schlägt. Tip: Aufpassen mit den verschiedenen ADO-Versionen! Wenn Sie bisher noch gar nicht mit ADO gearbeitet haben, dann besorgen Sie sich am besten per Internet die neueste ADO-Version. Vorsichtiger sollten Sie sein, wenn irgendwelche Anwendungen auf Ihrem Computer bereits per ADO Daten austauschen.
282
Kapitel 9: Auf Datenbanken zugreifen: Universal Data Access
Auch wenn die unterschiedlichen ADO-Versionen, die mittlerweile im Umlauf sind, eigentlich alle zueinander abwärtskompatibel sein sollen, ist das nicht immer so. Ihre Anwendung kann also möglicherweise nur mit der (veralteten) ADO-Version zusammenarbeiten, die bereits bei Ihnen installiert ist. Wenn also ADO schon im Einsatz ist, dann rüsten Sie besser nicht auf neuere Versionen auf. »Never change a running system!«
9.1.2
ADO DB-Version bestimmen: die Zweite
Damit Sie sich besser im Versionsdschungel von MDAC und ADO DB zurechtfinden, gibt es eigens dafür bei Windows 2000 sogar eine eigene Komponente. Die fischt vollautomatisch die aktuelle Version für Sie heraus – funktioniert aber nur bei Windows 2000. So könnte das passende Script aussehen: ’ 9-2.vbs set Version = CreateObject("MDACVer.Version") list list list list list
Wie Sie sehen, bekommen Sie über String die gesamte Versionsinformation und können über die Einzeleigenschaften Major, Minor, Build und Qfe die Detailinformationen auch einzeln abfragen. Praktisch!
9.2
Informationen aus einer Datenbank auslesen
Jetzt, wo ADO DB bei Ihnen einsatzbereit ist, stellt sich die Frage: Wie kann man damit scriptgesteuert Datenbanken anzapfen und auslesen? Das ist einfacher, als Sie denken! Ein kleines Beispiel finden Sie auf der Buch-CD. Kopieren Sie dazu den Ordner Scriptbeispiele/Kapitel9 auf Ihre Festplatte, öffnen Sie den Ordner, markieren Sie alle Einzelteile (zum Beispiel mit [Strg]+[A], und klicken Sie dann eine der markierten Dateien mit der rechten Maustaste an. Im Kontextmenü wählen Sie Eigenschaften. Nun schalten Sie das Attribut Schreibgeschützt ab und klicken auf OK. Jetzt stehen Ihren Experimenten keine Hindernisse mehr im Weg. Tip: Dateien auf CD – immer mit Schreibschutz! Der Umweg über die Dateiattribute ist keine Schikane – alle Dateien, die Sie auf eine CD-ROM brennen, bekommen automatisch das Schreibgeschützt-Attribut. Ob Sie wollen oder nicht.
9.2
Informationen aus einer Datenbank auslesen
283
Das allein wäre nicht schlimm, doch das Schreibgeschützt-Attribut bleibt der Datei selbst dann noch erhalten, wenn Sie sie von der CD auf die Festplatte kopieren. Deshalb: Nach solchen Kopieraktionen unbedingt dran denken, das Schreibgeschützt-Attribut manuell zu entfernen. Ansonsten können Ihre Scripts die Beispieldatenbank nicht verändern.
9.2.1
Den Inhalt einer Datenbank auflisten
Das Script 9-3.VBS zeigt, wie einfach Sie an den Inhalt der Datenbank herankommen. Wenn Sie es starten, stellt es eine ADO-Verbindung zu einer Access-Datenbank her – die liegt einfach nur zusammen mit Ihrem Script im Dateiordner. Sie brauchen noch nicht einmal MS Access installiert zu haben oder es zu besitzen. ’ 9-3.vbs ’ Ordnernamen finden, in dem das Script liegt myname = WScript.ScriptFullName mypath = Left(myname, InstrRev(myname, "\")) ' Datenbank öffnen set db = CreateObject("ADODB.Connection") db.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" _ & mypath & "SAMPLE.MDB") ' über SQL alle Informationen aus Tabelle "Info" auswählen sql = "select * from info" set rs = db.Execute(sql) ' Alle Ergebnisse auslesen (EOF = End Of File) do until rs.EOF for x = 0 to rs.fields.count-1 list = list & rs(x) & vbTab next list = list & vbCr rs.MoveNext loop ' output information MsgBox list
Die Beispieldatenbank enthält anfangs nur einen Datensatz. Daß dieses Script tatsächlich funktioniert und wirklich aktuelle Daten aus der Datenbank ausliest, können Sie auf zwei unterschiedliche Arten beweisen: Entweder besitzen Sie MS Access, dann öffnen Sie die Beispieldatenbank SAMPLE.MDB in Access und fügen einfach weitere Datensätze hinzu. Schauen Sie danach, ob Ihr Script diese ebenfalls ausgibt.
284
Kapitel 9: Auf Datenbanken zugreifen: Universal Data Access
Bild 9.2: Datensätze aus beliebigen Datenbanken auslesen – per Script
Oder aber Sie pfeifen auf Access und benutzen einfach wieder Ihre Scripts, um neue Datensätze in die Datenbank zu schreiben. ADO DB kann nämlich nicht nur Daten aus einer Datenbank lesen, sondern auch selbst dort hineinschreiben.
9.2.2
Eigene Daten in die Datenbank einfügen
Das Script 9-4.VBS fragt Sie nach einem Namen und einer E-Mail-Adresse. Beide Informationen werden dann in die Datenbank hineingeschrieben.
Bild 9.3: Per SQL kann Ihr Script mit Datenbanken sprechen
Außerdem zeigt Ihnen das Script, wie es die Daten in die Datenbank schreibt: Ein Dialogfenster präsentiert den entsprechenden SQL-Befehl. Sie werden gleich mehr zu SQL erfahren. ’ 9-4.vbs ’ Ordner finden, in dem Script (und Datenbank) liegen myname = WScript.ScriptFullName mypath = Left(myname, InstrRev(myname, "\")) ’ Daten erfragen name = InputBox("Name eingeben!") email = InputBox("Email-Adresse angeben!") ’ Verbindung zur Datenbank herstellen set db = CreateObject("ADODB.Connection") db.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" _ & mypath & "SAMPLE.MDB") ’ Mit SQL neue Daten eintragen sql = "insert into info (name, email) values (’" _ & name & "’, ’" & email & "’)" MsgBox "SQL: " & sql ' SQL ausführen set rs = db.Execute(sql) MsgBox "Infos hinzugefügt!"
9.2
Informationen aus einer Datenbank auslesen
285
Daß dieses Script tatsächlich Daten in die Datenbank eingefügt hat, können Sie sofort nachprüfen: Rufen Sie einfach noch einmal das Script 9-3.VBS auf. Tatsächlich: Ihre neuen Informationen werden aufgelistet!
9.2.3
Daten aus der Datenbank löschen
Ihre ersten Experimente mit 9-4.VBS haben wahrscheinlich eine Menge Datenmüll in die Datenbank eingetragen. Wie kommt der wieder heraus? Zum Glück kann ADO DB auch Daten in der Datenbank löschen. Wie das passiert, zeigt das nächste Script: ’ 9-5.vbs ’ Ordner mit Script und Datenbank ermitteln myname = WScript.ScriptFullName mypath = Left(myname, InstrRev(myname, "\")) ' Datenbank öffnen set db = CreateObject("ADODB.Connection") db.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" _ & mypath & "SAMPLE.MDB") ' mit SQL alle Datensätze auswählen sql = "select * from info" set rs = db.Execute(sql) ' alle Datensätze zur Auswahl anbieten do until rs.EOF for x = 0 to rs.fields.count-1 list = list & rs(x) & vbTab next list = list & vbCr rs.MoveNext loop ' welcher Datensatz soll gelöscht werden? delrec = InputBox(list & vbCr _ & "Geben Sie Kennzahl des Datensatzes an, " _ & "der gelöscht werden soll!") if delrec = vbEmpty then WScript.Quit sql = "DELETE FROM info WHERE id = " & delrec db.Execute sql MsgBox "Eintrag gelöscht."
286
Kapitel 9: Auf Datenbanken zugreifen: Universal Data Access
Bild 9.4: Löschen Sie Informationen aus Ihrer Datenbank einfach wieder
9.3
Wie’s funktioniert: ADO DB auf die Finger geschaut
Jetzt, wo Sie wissen, wie Sie Daten in Datenbanken auslesen, einfügen und wieder herauslöschen, ist es Zeit, sich die Mechanismen genauer anzusehen. Was passiert eigentlich in den Beispielscripten? Die Beispielscripte verwenden den sogenannten DSN-losen Datenbankzugriff. DSNlos bedeutet: Sie können irgendeine Datenbank verwenden, ohne bürokratischen Aufwand. Die Datenbank braucht also nirgends in Ihrem Computer angemeldet zu sein. Alles, was Sie brauchen, ist der Dateiname der Datenbankdatei. Tip: DSNlos – was steckt dahinter? Sie werden gleich noch den DSN-Zugriff auf Datenbanken kennenlernen. Beide Varianten haben Vorteile, aber der hier gezeigte DSNlose Zugriff ist der geheimnisumwittertste. Kaum irgendwo sonst werden Sie detaillierte Infos darüber finden, und das ist eigentlich schade. Denn der DSNlose Zugriff ist ungeheuer flexibel. Sie könnten damit zum Beispiel auf CD an Kunden Datenbanken weitergeben, die sofort einsatzbereit sind und keine weitere Einrichtung beim Kunden erfordern. Sie könnten ebensogut Access-MDBDateien auf Ihren Webserver hochladen und dann zum Beispiel per ASP-Webseiten direkt auf die Datenbank zugreifen.
Weil Datenbankdateien natürlich irgendwo gespeichert werden können und ich vermeiden wollte, Sie dazu zu zwingen, die Datenbankdatei auf Ihrem Computer in einem ganz bestimmten Ordner abzulegen, geht die Flexibilität noch einen Schritt weiter. Die Scripts sind schlau genug, selbst herauszufinden, in welchem Ordner sie gerade liegen. Diese Information liefert ScriptFullName, und das Script braucht nur noch den reinen Pfadanteil abzuschneiden. Solange Sie also dafür sorgen, daß die Datenbankdatei in genau demselben Ordner liegt wie die Scripts, die darauf zugreifen, brauchen Sie sich um nichts weiter zu kümmern. Natürlich sind Sie nicht dazu gezwungen. Sie könnten ebensogut auch einen vollkommen anderen Datenbank-Pfadnamen angeben.
9.3.1
Eine Datenbankverbindung herstellen
Der erste Schritt beim Zugriff auf Ihre Datenbank ist eine Datenbankverbindung. Die liefert das Objekt ADODB.Connection. Mit der Funktion Open geben Sie an, mit welcher Datenbank Sie ver-
9.4
SELECT: Daten auswählen
287
bunden werden wollen. Damit das klappt, müssen Sie die Art der Datenbank (in diesem Beispiel MS Access) und den Aufenthaltsort der Datenbank (in diesem Fall SAMPLE.MDB im Scriptordner) mit angeben.
9.3.2
Mit SQL die Datenbank »bedienen«
Sobald die Datenbankverbindung »steht«, können Sie mit der universellen Datenbanksprache SQL die Datenbank ausfragen oder verändern. SQL ist eine Standarddatenbanksprache, die für beinahe alle Datenbanktypen genau gleich funktioniert. Formulieren Sie dazu einfach Ihren SQL-Befehl, und lassen Sie ihn mit Execute ausführen. Das Ergebnis ist ein Recordset, das die gewünschten Informationen zurückliefert. Nur: Wie formuliert man SQL-Befehle? Und wie liest man das resultierende Recordset eigentlich aus? Gleich wissen Sie Bescheid!
9.4
SELECT: Daten auswählen
Schauen Sie sich dazu das Script LIES.VBS an. Es möchte gern alle Informationen der Datenbank auslesen. Dazu verwendet es den SQL-Befehl SELECT (select = auswählen). SELECT * FROM INFO bedeutet also frei übersetzt: Suche alles (* = alles) aus der Tabelle Info aus. SELECT kann aber noch viel mehr. Jede Datenbanktabelle besteht aus einzelnen Feldern. Diese Felder heißen in der Beispieldatenbank ID, NAME und EMAIL. Wenn Sie also zum Beispiel nur die Namen auslesen wollen, dann ändern Sie einfach Ihren SQL-Befehl: SELECT NAME FROM INFO
9.4.1
Nur ganz bestimmte Datensätze herausfischen
Sie könnten auch weitere Einschränkungen machen. Wollen Sie zum Beispiel einen ganz bestimmten Datensatz herausfischen, dann schreiben Sie: SELECT * FROM INFO WHERE ID = 1
Sogar Volltextrecherche ist möglich. Wollen Sie nur die Datensätze sehen, bei denen der Name mit »Tobias« beginnt, dann schreiben Sie: SELECT * FROM INFO WHERE NAME LIKE ’Tobias%’
Möchten Sie dagegen alle Datensätze sehen, in denen im Name-Feld irgendwo der Begriff »Welt« vorkommt, dann schreiben Sie: SELECT * FROM INFO WHERE NAME LIKE ’%Welt%’
288
Kapitel 9: Auf Datenbanken zugreifen: Universal Data Access
Tip: Jokerzeichen – können auch anders heißen! In der Standard-SQL-Sprache ist % das Jokerzeichen. Dummerweise gibt es verschiedene SQL-Dialekte. Sollte % bei Ihnen nicht funktionieren, dann versuchen Sie statt dessen den Stern (*). Und denken Sie daran: Text gehört innerhalb des SQL-Befehls in einfache Anführungszeichen.
9.4.2
Datenbank-Ergebnis sortieren
Wie Sie sehen, ist SQL (und sein SELECT-Befehl) überaus intelligent und fischt nicht nur blind alle Daten heraus, sondern kann sogar differenzieren. Sogar Sortieren ist möglich. Wollen Sie zum Beispiel alphabetisch nach Namen sortieren, dann verwenden Sie diesen SQLBefehl: SELECT * FROM INFO ORDER BY NAME ASC
Soll in umgekehrter Reihenfolge sortiert werden, dann ist dieser Befehl richtig: SELECT * FROM INFO ORDER BY NAME DESC
9.4.3
Wichtige Fallen rund um SELECT
Das wohl tückischste Zeichen im SQL-Befehl ist das einfache Anführungszeichen. Es begrenzt Textstellen. Was aber machen Sie, wenn Sie ein einfaches Anführungszeichen im Text angeben wollen, zum Beispiel, weil Sie es als Text in die Datenbank schreiben wollen? Einfacher Trick: Schreiben Sie zwei einfache Anführungszeichen! Die werden dann von SQL nicht als Textbegrenzer verstanden, sondern als das, was sie sind. Eine weitere wichtige Falle sind unterschiedliche SQL-Dialekte. Besonders das Jokerzeichen (»%«) muß bei manchen Datenbanktreibern durch einen Stern ersetzt werden (»*«). Ebenso wichtig: Wenn Sie mit Jokerzeichen nach Textstellen suchen, dann verwenden Sie nicht das Gleichheitszeichen, denn schließlich suchen Sie nicht nach exakt gleichen Textstellen. Verwenden Sie statt dessen so wie oben gezeigt den Operator LIKE (like = wie).
9.5
INSERT INTO: Neue Daten in die Datenbank schreiben
Mit INSERT INTO schreiben Sie eigene neue Datensätze in die Datenbank. Das ist das Grundprinzip von Script SCHREIB.VBS. Die genaue Syntax dieses SQL-Befehls sieht so aus: INSERT INTO Tabelle (FELD1, FELD2, ...) VALUES (Wert1, Wert2, ...)
Sie geben also den Tabellennamen und die Feldnamen an, in die Sie etwas schreiben wollen. Über VALUES fügen Sie dann die Datenfelder ein, die in die Felder geschrieben werden sollen. SQL legt automatisch einen neuen Datensatz an und speichert darin Ihre Werte.
9.5
9.5.1
INSERT INTO: Neue Daten in die Datenbank schreiben
289
Tücken rund um INSERT INTO
Damit Ihre Dateneingabe auch wirklich klappt, müssen Sie nur an zwei Dinge denken: • Erstens müssen die Daten, die Sie in das Feld schreiben, auch für das Feld geeignet sein. Ein Feld, das Sie in der Datenbank als Textfeld angelegt haben, kann keine Zahlen speichern – und umgekehrt. Grundsätzlich gilt einfach: In Textfelder schreiben Sie Text, den Sie in einfache Anführungszeichen setzen. Sie könnten also in ein Textfeld schreiben: ’12,67’, aber nicht 12,67. • Halten Sie sich immer vor Augen, daß einfache Anführungszeichen für SQL eine besondere Bedeutung haben: Sie begrenzen Text. Probieren Sie aus, wie leicht das zu einem Malheur führen kann. Starten Sie Script SCHREIB.VBS, und geben Sie als Name ein: ’Test. Als E-MailAdresse geben Sie ein, was Sie möchten. Schon erhalten Sie einen kapitalen Fehler, denn durch das einfache Anführungszeichen in der Eingabe kommt die schöne SQL-Syntax durcheinander, und SQL weiß nicht mehr, wo Ihr Text anfängt und aufhört. Um Eingabefehler zu verhindern, gibt es glücklicherweise einen einfachen Trick. Ersetzen Sie einfach in der Eingabe einzelne Anführungsstriche durch zwei aufeinanderfolgende Anführungszeichen. Schon ist das Problem gelöst. Um also das Script 9-4.VBS sicher zu machen, genügen nur wenige Ergänzungen: ’ 9-6.vbs ’ Ordner finden, in dem Script (und Datenbank) liegen myname = WScript.ScriptFullName mypath = Left(myname, InstrRev(myname, "\")) ’ Daten erfragen name = InputBox("Name eingeben!") email = InputBox("Email-Adresse angeben!") ' Einfache Anführungszeichen entschärfen name = Replace(name, "'", "''") email = Replace(email, "'", "''") ' Verbindung zur Datenbank herstellen set db = CreateObject("ADODB.Connection") db.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" _ & mypath & "SAMPLE.MDB") ' Mit SQL neue Daten eintragen sql = "insert into info (name, email) values ('" _ & name & "', '" & email & "')" MsgBox "SQL: " & sql ' SQL ausführen set rs = db.Execute(sql) MsgBox "Infos hinzugefügt!"
290 9.6
Kapitel 9: Auf Datenbanken zugreifen: Universal Data Access
DELETE – Informationen aus der Datenbank streichen
Über DELETE löschen Sie ganze Datensätze. Wie das geschieht, hat Script LOESCH.VBS bereits gezeigt. Die genaue Syntax des DELETE-Befehls sieht so aus: DELETE FROM Tabelle WHERE Kriterium
Klar wird sofort, daß Sie irgendein Kriterium brauchen, um die Datensätze auszuwählen, die gelöscht werden sollen. Natürlich könnten Sie SQL einen Befehl wie diesen geben: DELETE FROM INFO WHERE NAME = ’Test’
Hier würden alle Datensätze gelöscht, in deren Name-Feld Test eingetragen ist. Gerade bei größeren Tabellen ist solch ein Ansatz aber brandgefährlich, weil Sie nicht auf Anhieb abschätzen können, ob dabei vielleicht auch ganz andere Datensätze über den Jordan gehen. Viel sicherer und professioneller ist deshalb, Datensätze über eine eindeutige ID-Nummer anzusprechen. Die Beispieltabelle INFO verfügt über eine solche ID-Spalte, und diese Spalte ist vom besonderen Typ AutoNumber. AutoNumber bedeutet: Wann immer Sie einen neuen Datensatz einfügen, bekommt der von der Datenbankengine automatisch einen eigenen eindeutigen ID-Wert zugewiesen. Über den ID-Wert kann der Datensatz eindeutig identifiziert und gefahrlos gelöscht werden. Eine Nebenwirkung des AutoNumber-Feldes haben Sie vielleicht schon kennengelernt: Der automatische Zähler zählt immer weiter, selbst wenn Sie inzwischen Datensätze gelöscht haben. Die Zahlen in der ID-Spalte sind deshalb nicht unbedingt fortlaufend, sondern können Lücken haben. Lücken entstehen immer dann, wenn Sie Datensätze nachträglich löschen.
9.7
Die innere Struktur einer Datenbank aufdecken
Zwar habe ich Ihnen am Anfang des Kapitels verraten, daß die Beispieltabelle INFO aus den Feldern ID, NAME und EMAIL besteht, aber ohne meine Indiskretion hätten Sie dies nie herausgefunden. Wie also würden Sie wissen, welche Feldnamen Sie für Ihre SQL-Experimente verwenden können?
9.7.1
Feldnamen sichtbar machen
Wieder können Scripts helfen. Das nächste Script macht die unsichtbare Struktur einer Datenbanktabelle sichtbar, so daß Sie wissen, mit welchen Feldnamen Sie es zu tun haben und was für Informationen in den Feldern gespeichert werden: ’ 9-7.vbs ’ aktuellen Ordner finden myname = WScript.ScriptFullName mypath = Left(myname, InstrRev(myname, "\"))
9.7
Die innere Struktur einer Datenbank aufdecken
291
' Datenbank öffnen set db = CreateObject("ADODB.Connection") db.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" _ & mypath & "SAMPLE.MDB") ' Info auswählen sql = "select * from info" set rs = db.Execute(sql) ' Anzahl Felder fields = rs.fields.count ' Feldnamen ermitteln redim fieldnames(fields-1) for x=0 to fields-1 fieldnames(x) = rs.fields(x).name & " Variablentyp: " & rs.fields(x).type next ' Infos ausgeben msg = "Tabelle besteht aus " & fields & " Feldern:" & vbCr for x = 0 to fields-1 msg = msg & fieldnames(x) & vbCr next ' output information MsgBox msg
Bild 9.5: Scripts können sogar die interne Datenbankstruktur erforschen
9.7.2
Variablentypen der Felder entschlüsseln
Welche Art von Daten in den einzelnen Feldern gespeichert wird, verrät die type-Eigenschaft. Die nächste Tabelle enthüllt, welche Variablentypen hinter den Typ-Kennzahlen stecken: Variablentyp
Text Datum/Zeit Boolean (Wahr/Falsch) Spezielle Datentypen (Bilder, Binär, etc.) Zahlen
Tab. 9.1: Variablentypen und deren Codezahlen
292
Kapitel 9: Auf Datenbanken zugreifen: Universal Data Access
Sie sehen also auf einen Blick, daß die Beispieltabelle aus drei Feldern besteht, von denen das erste ein numerischer Wert ist. Die übrigen beiden Felder speichern Text.
9.7.3
Alle Tabellen in der Datenbank auflisten
Datenbanken brauchen nicht eine einzelne Tabelle zu enthalten. Sie können so viele Einzeltabellen in Ihrer Datenbank aufbewahren, wie Sie wollen. Die Beispieldatenbank SAMPLE.MDB enthält als Ausgangspunkt nur eine Tabelle namens Info, aber Sie werden gleich sehen, wie leicht es ist, scriptgesteuert neue Tabellen hinzuzufügen. Zuerst allerdings stellt sich die Frage: Woher weiß man eigentlich, welche Tabellen in einer Datenbank stecken? Diese (und viele andere) Antwort(en) liefert das Datenbank-Schema. Dieses Schema ist sozusagen das »Betriebshandbuch« Ihrer Datenbank mit allen Insider-Informationen. Wollen Sie also alle Tabellen in einer Datenbank auflisten, dann geht das so: ’ 9-8.vbs Const adTables = 20 ’ aktuellen Ordner finden myname = WScript.ScriptFullName mypath = Left(myname, InstrRev(myname, "\")) ' Datenbank öffnen set db = CreateObject("ADODB.Connection") db.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" _ & "sample.mdb") set tables = db.OpenSchema(adTables) do while not tables.eof list = list & tables("TABLE_NAME") & vbCr tables.MoveNext loop MsgBox list
Huch! Das Script funktioniert zwar, aber es liefert nicht nur die Beispieltabelle Info zurück, sondern gleich einen Schwung mehr. Hinter den Kulissen operieren bei Access-Datenbanken also offenkundig noch einige weitere Systemtabellen, die Sie mit Ihrem Script ins Licht der Öffentlichkeit gezerrt haben.
Bild 9.6: Eigentlich geheim: die System-Tabellen von MS Access
9.7
Die innere Struktur einer Datenbank aufdecken
293
Damit stellen sich schon wieder zwei Fragen: Wie funktioniert die Sache mit dem Schema genau, und wie kann man das Script umschreiben, damit es wirklich nur die »normalen« Tabellen auflistet?
9.7.4
Das Schema: So kommen Sie an Infos heran
Das Schema ist eigentlich nicht ein einzelnes Ding, sondern zahlreiche Recordsets (Ergebnismengen also) zu den verschiedensten Themen. Das Beispielscript von oben hat über OpenSchema die Ergebnismenge mit der Kennzahl adTables (20) angefordert und daraus den Wert TABLE_NAME ausgefragt. Interessant, oder? Welche Kennzahlen gibt es wohl außerdem, und welche Informationen schlummern in den Ergebnismengen wohl sonst noch? Vielleicht ist darunter ja die gesuchte Information, die Systemtabellen von normalen Tabellen unterscheidet. Wer weiß? Sie wissen! Das nächste Script prüft nämlich automatisch, welche Codezahlen bei Ihrer Datenbank funktionieren. Es listet vollautomatisch die Namen der Ergebnisfelder auf und fügt anschließend zuvorkommend die aktuellen Werte ein. Nicht schlecht also. So sieht das Script aus: ’ 9-9.vbs set fs = CreateObject("Scripting.FileSystemObject") set wshshell = CreateObject("WScript.Shell") Const adTables = 20 ’ aktuellen Ordner finden myname = WScript.ScriptFullName mypath = Left(myname, InstrRev(myname, "\")) ' Datenbank öffnen set db = CreateObject("ADODB.Connection") db.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" _ & "sample.mdb") for x=0 to 255 on error resume next set rs = db.OpenSchema(X) if not err.number=0 then err.clear on error goto 0 else on error goto 0 ausgabe = "C:\schema" & x & ".txt" set output = fs.CreateTextFile(ausgabe, vbTrue) ' Anzahl Felder fields = rs.fields.count ' Feldnamen ermitteln
294
Kapitel 9: Auf Datenbanken zugreifen: Universal Data Access redim fieldnames(fields-1) for y=0 to fields-1 fieldnames(y) = rs.fields(y).name next ’ Infos ausgeben output.writeLine "Codezahl #" & x & "#" output.writeline "Tabelle besteht aus " & fields _ & " Feldern:" for y = 0 to fields-1 output.writeline fieldnames(y) next output.Writeline "Aktuelle Werte aus der Datenbank:" do while not rs.eof output.WriteLine string(50, "*") for y = 0 to fields-1 on error resume next output.writeline fieldnames(y) & "=" _ & rs(fieldnames(y)) if not err.number=0 then err.clear output.writeline fieldnames(y) _ & "=(nicht lesbar)" end if on error goto 0 next rs.MoveNext loop
output.close ’ Eine Sekunde warten WScript.Sleep 1000 wshshell.run """" & ausgabe & """" end if next MsgBox "Info-Suche abgeschlossen."
9.7.5
Na also: Systemtabellen von normalen Tabellen unterscheiden
Tatsächlich werden Sie fündig: Schauen Sie sich schema20.txt an, also die Informationen, die Sie über Codezahl 20 anfordern. Die Textdatei entlarvt, daß es darin neben dem Feld TABLE_NAME unter anderem auch ein Feld namens TABLE_TYPE gibt.
9.7
Die innere Struktur einer Datenbank aufdecken
295
Bild 9.7: Schema 20 zeigt, wie Sie System-Tabellen von normalen Tabellen unterscheiden
Genau dieses Feld liefert die gesuchte Information, und deshalb können Sie nun per Script tatsächlich alle »normalen« Tabellen heraussuchen, die sich in einer Datenbank verbergen: ’ 9-10.vbs Const adTables = 20 ’ aktuellen Ordner finden myname = WScript.ScriptFullName mypath = Left(myname, InstrRev(myname, "\")) ' Datenbank öffnen set db = CreateObject("ADODB.Connection") db.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" _ & "sample.mdb") set tables = db.OpenSchema(adTables) do while not tables.eof if tables("TABLE_TYPE")="TABLE" then list = list & tables("TABLE_NAME") & vbCr end if tables.MoveNext loop MsgBox list
296
Kapitel 9: Auf Datenbanken zugreifen: Universal Data Access
Wie Sie die übrigen Informationen, die Ihnen das Schema liefert, sinnvoll einsetzen, zeige ich Ihnen gleich. Einstweilen haben wir alle wichtigen Informationen beisammen, um aus der Beispieldatenbank Ihre eigene, ganz persönlich angepaßte Projektdatenbank für dieses und jenes zu machen.
Bild 9.8: Na also: Nur noch User-Tabellen werden gemeldet, Systemtabellen nicht
9.8
Eigene Tabellen anlegen
Ohne MS Access und irgendwelche Zusatzkosten können Sie jede beliebige Tabelle zu einer Datenbank hinzufügen, also frisch und neu anlegen. Alles, was Sie dafür brauchen, ist ein kleines Script. Damit Sie für Ihre eigenen Projekte nicht auf der Beispieldatenbank aufbauen müssen, sondern tatsächlich eine ganz neue Datenbank verwenden können, kopieren Sie zuerst SAMPLE.MDB und bekommen so Ihre ganz eigene Datenbank. Dazu ziehen Sie SAMPLE.MDB mit der rechten Maustaste ein Stück im Ordner und lassen die Maustaste dann los. Im Kontextmenü wählen Sie Hierher kopieren. Drücken Sie auf [F2], und geben Sie der Kopie dann einen anständigen Namen: TEST.MDB [Enter]!
9.8.1
Alle Tabellen in einer Datenbank löschen
Ihre neue Datenbank-Kopie enthält wie das Original die Beispieltabelle INFO. Damit Sie frisch mit einer leeren Datenbank beginnen können, löschen Sie als erstes alle Tabellen darin: ’ 9-11.vbs Const adTables = 20 ’ aktuellen Ordner finden myname = WScript.ScriptFullName mypath = Left(myname, InstrRev(myname, "\")) ' Datenbank öffnen set db = CreateObject("ADODB.Connection") db.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" _ & "test.mdb") set tables = db.OpenSchema(adTables) list = "Protokoll:" & vbCr do while not tables.eof if tables("TABLE_TYPE")="TABLE" then
9.8
Eigene Tabellen anlegen
297
sql = "DROP TABLE " & tables("TABLE_NAME") db.Execute sql list = list & "Tabelle """ & tables("TABLE_NAME") _ & """ gelöscht." & vbCr end if tables.MoveNext loop list = list & "Operation abgeschlossen." MsgBox list
Das Script gibt Ihnen zum Schluß seinen Tätigkeitsbericht:
Bild 9.9: Alle Tabellen der Datenbank wurden gelöscht. Die Datenbank ist wieder „frisch“
9.8.2
Eigene neue Datenbank-Tabellen anlegen
Ihre Beispieldatenbank TEST.MDB ist jetzt leer. Nun können Sie damit beginnen, eigene Tabellen darin anzulegen. Dabei hilft das Script 9-12.VBS. ’ 9-12.vbs ’ Automatisch SQL-Befehl anlegen, der neue Tabelle definiert tabname = InputBox("Wie soll die neue Tabelle heißen?") sql = "CREATE TABLE " & tabname & " (" cc = 0 do cc = cc + 1 feldname = InputBox("Name des " & cc & ". Feldes?") feldtyp = InputBox("Typ des neuen Feldes?") sql = sql & feldname & " " & feldtyp & "," antwort = MsgBox("Noch ein Feld anlegen?", vbYesNo + vbQuestion) loop until antwort = vbNo ' letztes Komma entfernen sql = left(sql, len(sql)-1) sql = sql & ")" antwort = MsgBox("SQL-Befehl ist fertiggestellt:" & _ sql & vbCr & "Neue Tabelle anlegen?", vbYesNo + vbQuestion)
298
Kapitel 9: Auf Datenbanken zugreifen: Universal Data Access
if antwort = vbYes then ’ aktuellen Ordner bestimmen myname = WScript.ScriptFullName mypath = Left(myname, InstrRev(myname, "\")) ’ Datenbank öffnen set db = CreateObject("ADODB.Connection") db.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" _ & mypath & "TEST.MDB") ' SQL ausführen db.Execute sql MsgBox "Tabelle hinzugefügt!" else MsgBox "SQL-Befehl verworfen!" end if
Wenn Sie es aufrufen, fragt es Sie zuerst nach einem Namen für Ihre neue Tabelle. Anschließend fragt es nach den Feldnamen und den Variablentypen. Verwenden Sie als Variablentyp eine der folgenden Schlüsselwörter: Schlüsselwort
Bedeutung
BYTE COUNTER CURRENCY DATETIME DOUBLE LONG LONGTEXT SHORT SINGLE TEXT(Anzahl)
Ganzzahl zwischen 0 und 255 AutoWert-Feld Währung Datum/Zeit, in #-Zeichen einzufassen Gleitkommazahl doppelter Genauigkeit Ganzzahl Text bis max. 1,2 GB, in '-Zeichen einzufassen Ganzzahl zwischen –32.768 und 32.767 Gleitkommazahl einfacher Genauigkeit Textfeld bis max. 255 Zeichen, zum Beispiel TEXT(100) für ein Feld mit 100 Zeichen, in '-Zeichen einzufassen
Tab. 9.2: Variablentypen für Ihre neuen Tabellenfelder
Tip: Aufpassen: unterschiedliche Dialekte! Beim Anlegen einer neuen Tabelle finden Sie leider die meisten Inkonsistenten zwischen den zugrundeliegenden Datenbanken. Die Tabelle oben bezieht sich auf Access-Datenbanken. Bei einer SQL ServerDatenbank würden Sie zum Beispiel autonumerierte Felder über das Schlüsselwort IDENTITY festlegen. COUNTER als Variablentyp ist hier unbekannt.
Angenommen, Sie wollen eine neue Tabelle anlegen, die eine ID-Spalte, ein Datumsfeld, ein Textfeld mit 100 Zeichen, ein Textfeld mit beliebig viel Text und ein Feld für ganze Zahlen enthalten soll:
9.8
Geplante Felder
Feldtypen
ID Datum Name Kommentar Alterszahl
COUNTER DATETIME TEXT(100) LONGTEXT SHORT
Eigene Tabellen anlegen
299
Tab. 9.3: Planungsschema für simple Testdatenbank
So gehen Sie vor: 1. Starten Sie das Script 9-12.VBS. Geben Sie als Tabellen-Name den neuen Namen für Ihre Tabelle ein, also ADRESSBUCH [Enter]. 2. Geben Sie als ersten Feldnamen ein: ID [Enter]. Als Feldtyp geben Sie ein: COUNTER [Enter]. Verfahren Sie dann ebenso mit den übrigen Feldern, die Sie anlegen wollen, und halten Sie sich für dieses Beispiel genau an die Tabelle oben. 3. Sobald alle Felder angelegt worden sind, klicken Sie auf Nein, um keine weiteren Felder anzulegen. Die Tabelle wird in die Datenbank TEST.MDB eingefügt.
Bild 9.10: Automatisch neue Tabellen per Script anlegen
Um den Erfolg zu prüfen, ändern Sie das Script 9-10.VBS etwas ab: Tragen Sie den Namen Ihrer neuen Datenbank ein: TEST.MDB. Tatsächlich: Ihre neue Tabelle wird aufgelistet. Die ursprüngliche Beispieltabelle INFO dagegen wird nicht mehr gefunden. Sie haben sich eine komplett neue Datenbank generiert! Tip: Die Tücken liegen im Detail: reservierte Wörter Vielleicht haben Sie sich gewundert, warum ich das Feld mit dem Alter Alterszahl genannt habe und nicht einfach Alter. Das war die Folge einer schmerzlichen Erfahrung. Alter ist nämlich ein reserviertes SQLWort (alter = verändern). Der SQL-Befehl führte zu ständigen sonderbaren Fehlermeldungen, und erst nachdem ich das reservierte Wort durch einen unbedenklicken Namen ersetzt hatte, funktionierte alles wie geschmiert. Die Lehre daraus: breit denken! Wenn Ihnen selbst Fehler passieren, dann können die unmöglichsten Gründe dafür die Ursache sein.
300 9.8.3
Kapitel 9: Auf Datenbanken zugreifen: Universal Data Access
Das steckt dahinter: Variablentypen auflisten
Die Tabelle von oben listet die gebräuchlichsten Datentypen auf, die Sie für Ihr Datenbank-Design verwenden können. Es sind aber längst nicht alle!
Bild 9.11: Das Schema 30 enthält alle definierten Feldtypen
Welche Datentypen (und Schlüsselwörter) Sie genau verwenden können, verrät Ihnen wieder das Schema aus Kapitel 9.7.4. Schauen Sie einfach in die Datei SCHEMA30.TXT, und Sie sehen auf einen Blick alle Schlüsselwörter aller Variablentypen.
Bild 9.10: COUNTER ist ein synthetischer Variablentyp
9.9
Die innere Struktur Ihrer Datenbankzugriffe
301
Nicht alle Variablentypen aus dieser Liste sind wirklich echte Datentypen Ihrer Datenbank. Einige sind einfach »synthetisiert«, also simuliert. Welche das sind, sehen Sie, wenn Sie sich SCHEMA22.TXT ansehen. Im Feld TYPE_NAME lesen Sie den Variablentyp, zum Beispiel COUNTER. Dahinter verbirgt sich, wie Sie inzwischen wissen, ein Auto-Numerierfeld. In Wirklichkeit, das enthüllt die Datei nun, steckt hinter der Auto-Numerierung der echte Variablentyp 3 (Integer). Sie sehen außerdem, daß AUTO_UNIQUE_VALUE auf true/wahr steht – das Feld gibt sich also selbsttätig einen eindeutigen Wert. Ebenfalls interessant: COLUMN_SIZE ist auf 10 eingestellt, der Auto-Numerierwert ist also auf zehn Stellen begrenzt. SCHEMA22.TXT gibt noch viel mehr interessante Infos bekannt. Alle Variablentypen mit CHAR im Namen speichern Text, und die Felder LITERAL_PREFIX und LITERAL_SUFFIX vermelden, daß der Inhalt des Feldes über das einzelne Anführungszeichen abgegrenzt werden muß. DATETIME dagegen speichert Daten und Zeiten, und diese Eingaben werden über das #-Zeichen abgegrenzt. Interessant, oder? Wenn nicht, dann ignorieren Sie diese Details einfach. Lebenswichtig sind sie nicht.
9.9
Die innere Struktur Ihrer Datenbankzugriffe
Jetzt wo die generelle Infrastruktur Ihrer Datenbankzugriffe vorgestellt ist, geht’s eine Stufe tiefer. Mitkommen kann jeder, aber diese Tour ist freiwillig und nicht lebensnotwendig.
Bild 9.13: Der Scripting Spy entlarvt das gesamte ADO DB-Objektmodell
302
Kapitel 9: Auf Datenbanken zugreifen: Universal Data Access
Schauen Sie sich zuerst an, welche Objekte an einem Datenbankzugriff beteiligt sind. Da ist zunächst ein Connection-Objekt, das Sie über ADODB.Connection anfordern. Es stellt die Verbindung zu Ihrer Datenbank her. Anschließend lassen Sie über Execute SQL-Anweisungen ausführen. Das Ergebnis von Execute ist ein Recordset-Objekt. Es enthält für jeden zurückgelieferten Datensatz genau ein Record-Objekt. Das ist alles. All diese Objekte können Sie auch direkt besuchen. Dabei hilft wiederum der Scripting Spy von der Buch-CD (siehe auch Kapitel 2).
Bild 9.14: Selbst die geheimnisvollsten Funktionen listet der Scripting Spy für Sie auf
Suchen Sie sich im Modul aussuchen-Register den Eintrag ADODB.Connection heraus, wenn Sie das Innenleben des Connection-Objekts begutachten wollen. Dort finden Sie auch ADODB.Recordset und ADODB.Record sowie einige weitere Objekte: Objekt
Bedeutung
Connection RecordSet Record Command Parameter
Verbindung zu einer Datenbank Sammlung der Ergebnismenge einer Abfrage Einzelergebnis innerhalb eines Recordsets Befehl, der direkt an die Datenbank gerichtet wird Aufruf einer »Gespeicherten Prozedur« in einem Datenbankserver wie z.B. SQL Server
9.10
Objekt
Bedeutung
Error ErrorLookup Stream
Fehlerhandling Fehlerhandling –
System-DSN: Datenbanken systemweit administrieren
303
Tab. 9.4: ADODB-Objekte, mit denen Datenbanken gesteuert werden
9.10
System-DSN: Datenbanken systemweit administrieren
Bislang haben Ihre Scripts von sich aus alle nötigen Verbindungsdetails zur Datenbank angegeben. Das wird DSNlose Verbindung genannt und ist in vielen Fällen erwünscht. Die Alternative hierzu ist die systemweite Administration einer Datenbank. Dabei legen Sie als Systemadministrator fest, wo sich eine Datenbank befindet und welchen Typs sie ist. Ihre Scripts – und alle anderen Anwendungen, die die Datenbankinhalte nutzen sollen – brauchen sich so nicht weiter um diese Details zu kümmern. Haben Sie erst einmal eine System-Datenbank festgelegt, dann kann jedes Programm und jedes Script über ein einfaches Schlüsselwort auf diese Datenbank zugreifen. Schauen Sie sich am besten einfach an, was dahintersteckt. Sie brauchen kaum etwas dazulernen, denn DSN handelt nur davon, die Verbindungsdetails aus den Scripts (und Programmen) umzuverlagern und systemweit zu speichern.
9.10.1 Eine neue System-Datenbank anlegen In diesem Beispiel soll die Beispieldatenbank SAMPLE.MDB als Systemdatenbank verankert werden. Dazu öffnen Sie die Systemsteuerung auf dem Computer, auf dem Sie die Datenbank gespeichert haben. Suchen Sie nach dem Modul 32bit ODBC Datenquellen. Je nach MDAC-Version kann es auch anders heißen und bei Windows 2000 zum Beispiel in der Untergruppe Verwaltung zu finden sein.
Bild 9.15: Über dieses Systemsteuerungsmodul werden Systemdatenquellen definiert
Klicken Sie dann auf das Register System-DSN.
304
Kapitel 9: Auf Datenbanken zugreifen: Universal Data Access
Bild 9.16: Wählen Sie den Treiber für Ihren Datenbanktyp aus, zum Beispiel MS Access
Tip: Benutzer-DSN – das ist der Unterschied Prinzipiell ist es egal, ob Sie das Register System-DSN oder Benutzer-DSN verwenden. Die folgenden Handgriffe sind in beiden Fällen gleich, allerdings nicht das Ergebnis: Eine System-Datenbank steht allen Benutzern des Computers zur Verfügung. Die Verbindungsdetails werden in der Registry im allgemeinen Schlüssel HKEY_LOCAL_MACHINE vermerkt. Nicht so, wenn Sie eine Benutzerdatenbank anlegen. Die wird im persönlichen Registry-Schlüssel HKEY_LOCAL_USER des gerade angemeldeten Benutzers gespeichert, und sie steht auch nur diesem zur Verfügung.
Klicken Sie nun auf Hinzufügen, und wählen Sie den Typ Ihrer Datenbank aus. Prinzipiell tun Sie nun dasselbe wie Ihre Beispielscripte von oben, nur elegant Dialogfenster-unterstützt. Sie legen den Typ (Treibertyp) der Datenbank fest und geben an, wo die Datenbank zu finden ist.
Bild 9.17: Geben Sie an, wo und wie Ihre Datenbank anzutreffen ist
Als Datenbanktyp für SAMPLE.MDB ist Microsoft Access Treiber (*.mdb) die richtige Wahl. Klicken Sie dann auf Auswählen, um die MDB-Datei anzugeben. Stellen Sie im Dialogfenster den Ort ein, wo Sie SAMPLE.MDB (oder jede andere MDB-Datei, die Sie zugänglich machen wollen) aufbewahren.
9.10
System-DSN: Datenbanken systemweit administrieren
305
Im Feld Datenquellenname geben Sie den Klartextnamen an, unter dem Sie die Datenbank künftig ansprechen wollen. Dieser Name ist extrem wichtig, denn diesen Namen verwenden Ihre Scripts künftig. Wählen Sie im Beispiel den Namen meinedatenbank.
9.10.2 Auf eine DSN-Datenbank zugreifen Sobald Sie die Beispieldatenbank verfügbar gemacht haben, können Ihre Scripts besonders leicht darauf zugreifen, und zwar so: Wenden Sie dieselben Scripts an wie oben, doch geben Sie im Open-Befehl nur den Namen Ihrer DSN-Datenbank an, den Sie oben im Feld Datenquellenname angegeben haben. Das ist alles.
307
10 ADSI: Netzwerk und Benutzerkonten verwalten
Sie wollen sehen, welche Computer in Ihrem Netzwerk gerade online sind? Sie möchten sich vollautomatisch eine Liste aller angemeldeten Benutzer ausgeben lassen? Oder vielleicht wollen Sie sogar noch tiefer einsteigen und selbst ganz neue Konten anlegen oder Kennwörter ändern – können Sie auch! Dank ADSI (Active Directory Service Interface) haben Ihre Scripts vollen Zugriff auf alle Sicherheitsund Netzwerkinformationen – ganz ohne aufwendige Eigenentwicklungen. ADSI ist serienmäßig Teil von Windows 2000, aber anders als sein Name impliziert funktioniert es auch auf Windows NT und sogar Windows 9x. Hier muß ADSI lediglich nachgerüstet werden. www.microsoft.com/ adsi hat alle Hintergrundinfos und die nötigen Downloads parat für Sie. Allerdings ist ADSI nur bedingt abwärtskompatibel. Sie können damit zwar Benutzerkonten auch auf einem NT Domänencontroller verwalten, doch ist es nicht möglich, damit lokale Einstellungen eines Windows NT- oder 9x-Computers zu verwalten. Richtig effektiv wird ADSI deshalb erst mit Einzug von Windows 2000. Wer darauf (noch) nicht umsteigen will, kann viel ADSI-Funktionalität allerdings auch heute schon nutzen – per selbstgeschriebener Script-Befehlserweiterung (siehe Kapitel 7). Tip: NT-Sicherheit und Benutzerkonten per API managen Sie sind nicht auf ADSI angewiesen. Wenn Ihnen die ADSI-Möglichkeiten nicht reichen, oder wenn Sie in einem reinen NT-Netzwerk ohne Windows 2000 tief in die Sicherheitseinstellungen eingreifen wollen, dann schauen Sie mal in Kapitel 8.19. Dort zeige ich Ihnen, wie Sie auch ohne ADSI allein mit der Windows-API die nötigen Funktionen selbst zusammenbasteln.
10.1
ADSI – die Geheimtür in die Netzwerkwelt aufstoßen
Sobald ADSI auf Ihrem Computer installiert ist – das ist bei Windows 2000 von Anfang an der Fall –, können Sie über das Schlüsselwort ADs: in die ADSI-Welt einsteigen. Direkt hinter der Falltür in die geheime ADSI-Welt begegnen Ihnen zuerst die unterschiedlichen Provider. Provider sind Module, die Ihnen Zugriff auf die unterschiedlichsten Datenquellen liefern. Ein wichtiger Provider heißt WinNT: und bietet Ihnen vollen Zugriff auf Computer, Benutzerkonten und Netzwerkverbindungen. Benutzen Sie nicht Windows 2000, dann muß ADSI zuerst installiert werden. Das kostenlose Download für Windows NT und 9x finden Sie hier: www.microsoft.com/adsi.
308
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
10.1.1 Welche Datenquellen kann ADSI sichtbar machen? Welche Informations-Provider Ihr ADSI ausfragen kann, findet das nächste Script galant für Sie heraus: ’ 10-1.vbs set namespace = GetObject("ADs:") list = "Unterstützte Provider:" & vbCr & vbCr for each provider in namespace list = list & provider.name & vbCr next MsgBox list, vbInformation
Hinter den Abkürzungen verbergen sich die folgenden Informationsdienste: Provider
Beschreibung
WinNT:
Computerverwaltung (lokale Windows 2000-Rechner und Windows 2000 oder -NT Domänen-Controller) Novell NetWare 3.0 Novell NetWare Directory Service Lightweight Directory Access Protocol, Zugriff zum Beispiel auf das Active Directory oder Exchange Internet Information Server (Webserver)
NWCOMPAT: NDS: LDAP: IIS:
Tab. 10.1: ADSI-Provider, die Zugriff auf unterschiedliche Informationsräume bieten
In diesem Kapitel beschränke ich mich auf den WinNT:-Provider. Die übrigen installierten Provider machen aber deutlich: Über ADSI greifen Sie auf genau demselben Wege auch auf ganz andere Informationen zurück und könnten zum Beispiel einen Exchange-Server managen oder Informationen via LDAP: aus dem Active Directory auslesen. ADSI ist damit ein generischer Ansatz, um Informationen jeglicher Art abzufragen. Doch zurück zur Praxis. Wie funktioniert der Zugriff auf einen Provider?
10.2
WinNT: Computerverwaltung par excellence
Schauen Sie sich doch einfach mal an, was WinNT: zu bieten hat. Das geht ganz einfach, nämlich so: ’ 10-2.vbs set adsi = GetObject("WinNT:")
10.2
WinNT: Computerverwaltung par excellence
309
for each object in adsi list = list & object.name & vbCr next MsgBox list, vbInformation
Erstaunlich, oder? Dieses Miniscript listet Ihnen alle Arbeitsgruppen und Domänen auf, die derzeit in Ihrem Netzwerk online sind.
Bild 10.1: Alle Arbeitsgruppen und Domänen auflisten
Die oberste Stufe in der WinNT:-Hierarchie sind also die Arbeitsgruppen und Domänen. Tip: WinNT: unterscheidet zwischen Groß- und Kleinschreibung! Denken Sie daran: WinNT:, der Provider-Name, funktioniert nur, wenn Sie ihn genauso verwenden wie hier gezeigt. Zwischen Groß- und Kleinschreibung wird unterschieden, und WINNT: würde zum Beispiel mißlingen.
10.2.1 Alle Computer auflisten, die momentan online sind Was können Sie mit diesen Informationen anfangen? Sie können zum Beispiel in Arbeitsgruppen und Domänen hineinschauen und herausfinden, welche Computer zur Zeit online sind: ’ 10-3.vbs
set adsi = GetObject("WinNT:") ' alle Domänen auskundschaften... for each domain in adsi list = list & "Domäne online: " & domain.name & vbCr ' alle Computer in der Domäne auflisten ' Inhalt beschränken auf Elemente, ' die vom Typ "Computer" sind domain.Filter = Array("Computer") ' alle Computer auflisten: for each computer in domain list = list & " Computer online: " _
310
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten & computer.name & vbCr
next next MsgBox list, vbInformation
Spätestens hier bemerken Sie, daß nur Windows 2000-Computer und Windows NT-Domänencontroller von ADSI erkannt werden. Hängt auch ein Windows 98-Rechner in Ihrem Netzwerk, der nicht Mitglied der Windows NT-Domäne ist, dann bleibt er unsichtbar.
Bild 10.2: Alle Computer im Netzwerk auflisten
Wie die Sache funktioniert... So funktioniert die Magie hinter den Kulissen: Mit GetObject greifen Sie zuerst auf WinNT: zu und bekommen ein Objekt zurück. Es ist eine Auflistung aller Domänen und Arbeitsgruppen, die derzeit in Ihrem Netzwerk online sind. Weil das Script nur an Computern interessiert ist, setzt es einen Filter. Damit fischt es sich nur die Objekte in der Arbeitsgruppe oder Domäne heraus, deren Typ (Klasse) »Computer« lautet. Tip: Filter kann mehrere Klassen kombinieren! Filter will immer mit einem Variablenfeld gefüttert werden. Deshalb verwendet das Script den VBScriptBefehl Array, der ein Variablenfeld generiert. Der Vorteil: Ihr Variablenfeld – oder Filter – braucht sich nicht auf eine bestimmte Klasse festzulegen. Wenn Sie mögen, dann filtern Sie doch neben Computern außerdem auch Benutzerkonten heraus! Dazu ersetzen Sie Array("Computer") einfach durch Array("Computer", "User"). Und wenn Sie sich den Effekt von Filter genauer vornehmen wollen, dann lassen Sie die Filter-Zeile einfach weg. Jetzt werden alle Objekte aufgelistet, die in der Arbeitsgruppe oder Domäne zu finden sind.
Anschließend listet eine weitere for each...next-Schleife alle Objekte des Typs »Computer« auf. Das Ergebnis ist die gesuchte Liste aller Computer, die in Ihrem Netzwerk momentan online sind.
10.3
Spionage: Welche Informationen liefert ein Objekt eigentlich?
Bevor Sie tiefer in die ADSI-Welt einsteigen, schauen Sie sich an, wie leicht Sie herausfinden, welche Informationen ein Objekt eigentlich anzubieten hat. Es stellt sich zum Beispiel die Frage, welche Informationen in einem Domänen-Objekt verborgen sind. Das nächste Script beantwortet diese Frage:
10.3
Spionage: Welche Informationen liefert ein Objekt eigentlich?
311
’ 10-4.vbs ’ Zugang zum Namespace: set winnt = GetObject("WinNT:") ' erste gefundene Domäne herausgreifen: for each domain in winnt exit for next ' Schema erfragen ' (das Schema enthält die Infos über das Objekt) set schema = GetObject(domain.schema) list = domain.name & vbCr list = list & "Standard-Eigenschaften:" & vbCr ' Standard-Eigenschaften abfragen for each prop in schema.MandatoryProperties list = list & prop & vbCr next list = list & vbCr & "Optionale Eigenschaften:" & vbCr ' optionale Eigenschaften abfragen for each prop in schema.OptionalProperties list = list & prop & vbCr next MsgBox list, vbInformation
Tip: Domänennamen direkt angeben Dieses und die folgenden Scripts greifen sich wahllos die erste auffindbare Domäne heraus, die es finden kann. Für Ihre Zwecke wesentlich geeigneter ist, die Domäne direkt anzugeben. Streichen Sie die ersten Zeilen des Scripts, und schreiben Sie: set domain = GetObject("WinNT://DOMAINNAME"). Mit dieser Zeile würden Sie die Domäne »Domainname« direkt ansprechen.
Bild 10.3: Informationen, die in einem Domänen-Objekt schlummern
312
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
Arbeitsgruppen und Domänen verfügen also über diese optionalen Eigenschaften: Eigenschaft
Mindestlänge neuer Kennwörter Mindestalter eines Kennworts in Sekunden, bevor es geändert werden kann Maximale Anzahl von Fehleingaben des Kennworts, bevor das Benutzerkonto gesperrt wird (0=keine Sperrung) Maximales Alter eines Kennworts in Sekunden. Ist das Alter überschritten, dann muß das Kennwort geändert werden. Zusätzliche Eigenschaften für Kennworte Maximale Anzahl von Plätzen in der Kennwortliste. Kennwörter in dieser Liste kann der Benutzer nicht neu vergeben, wenn er sein Kennwort ändert Mindestzeit in Sekunden, bevor ein Benutzerkonto automatisch wieder aktiviert wird, wenn es deaktiviert worden ist Überwachungszeit in Sekunden; loggt sich der User innerhalb dieser Zeit mehr als die in MaxBadPasswordsAllowed erlaubten Versuche vergeblich ein, dann wird das Konto gesperrt.
Tip: Arbeitsgruppen »ticken« anders als echte Domänen Zwar verfügen auch ganz normale Arbeitsgruppen über die oben genannten Eigenschaften, allerdings nur »pro forma«. Echte Informationen können Sie nur erwarten, wenn Sie eine echte NT- oder Windows 2000-Domäne ansprechen.
10.3.1 Domänen-Informationen ausfragen Nachdem Sie jetzt wissen, welche Informationen ein Domänen-Objekt zu bieten hat, fragen Sie doch mal nach, welche Informationen das genau sind: ’ 10-5.vbs ’ Zugang zum Namespace: set winnt = GetObject("WinNT:") ' erste gefundene Domäne herausgreifen: for each domain in winnt exit for next ' Schema erfragen ' (das Schema enthält die Infos über das Objekt) set schema = GetObject(domain.schema) list = "Infos zur Domäne " & domain.name & vbCr
10.3
Spionage: Welche Informationen liefert ein Objekt eigentlich?
313
for each prop in schema.MandatoryProperties list = list & prop & "=" & Ask(domain, prop) & vbCr next for each prop in schema.OptionalProperties list = list & prop & "=" & Ask(domain, prop) & vbCr next MsgBox list, vbInformation function Ask(obj, property) ’ fragt eine Eigenschaft ab ’ zuerst Fehlerhandling abschalten on error resume next ’ Information abfragen Ask = obj.get(property) ’ fehlerfrei? if not err.number=0 then ’ nein, Fehler! err.clear Ask = "kein Ergebnis" end if end function
Die Get-Funktion liest Eigenschaften aus einem Objekt aus.
Bild 10.4: Einstellungen der Domäne kontrollieren
Informationen bekommen Sie allerdings nur, wenn Sie eine echte Domäne ansprechen. Bei einfachen Arbeitsgruppen sind keine Informationen verfügbar.
10.3.2 Standardeigenschaften der Domäne ändern Die meisten Informationen können Sie nicht nur auslesen, sondern auch ändern. Bevor Sie das tun, denken Sie aber an diese beiden Fakten:
Die Eigenschaften funktionieren nur bei »echten« Domänen, nicht bei einfachen Arbeitsgruppen.
314
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
Ihre Änderungen wirken sich sofort aus und können folgenschwere Konsequenzen haben, die Sie sich vor Augen halten sollten. Setzen Sie zum Beispiel MinPasswordLength auf 10, dann hat dies zwar keinen Einfluß auf schon existierende Benutzerkonten. Neue Kennwörter werden aber nur noch akzeptiert, wenn sie aus mindestens 10 Zeichen bestehen.
So setzen Sie Eigenschaften einer Domäne: ’ 10-6.vbs
’ Zugang zum Namespace: set winnt = GetObject("WinNT:") ' erste gefundene Domäne herausgreifen: for each domain in winnt exit for next ' Minimale Kennwortlänge auf 3 Zeichen einstellen: domain.MinPasswordLength = 3 domain.SetInfo MsgBox "Mindestlänge des Kennworts gesetzt auf 3!"
Neue Einstellungen können direkt über den Namen der Eigenschaft im Objekt gespeichert werden. Aktiviert werden die neuen Einstellungen aber erst, wenn Sie SetInfo aufrufen. Dieser Befehl schreibt die Daten aus dem Objekt zurück in die NT-Richtlinien und die Sicherheitsdatenbank.
10.4
Das Schema: »Bedienungsanleitung« eines Objekts
ADSI schachtelt Informationen in Objekten, so viel ist inzwischen klar. Das WinNT:-Objekt enthält zum Beispiel alle Arbeitsgruppen und Domänen. Eine Domäne enthält wiederum – neben anderen Dingen – die Computer. In einem Computer-Objekt finden Sie dann zum Beispiel lokale Benutzerkonten. Und damit endlich sind Sie am Boden der Hierarchie angekommen: Ein Benutzerkonto enthält nur noch Informationen, aber keine weiteren Objekte in seinem Bauch. Woher wissen Sie aber, ob ein Objekt ein Container ist, und falls es ein Container ist, welche Informationen darin gespeichert sein könnten? Diese Information liefert das Schema des Objekts. Das Schema haben Sie eben schon kennengelernt. Das Schema ist sozusagen die Bedienungsanleitung eines Objekts, in der – über MandatoryProperties und OptionalProperties – die Eigenschaften des Objekts beschrieben sind. Darüber hinaus liefert das Schema-Objekt weitere wichtige Informationen. Hier alle Schema-Eigenschaften in der Übersicht:
10.4
Das Schema: »Bedienungsanleitung« eines Objekts
315
Schema-Eigenschaft
Bedeutung
MandatoryProperties
Eigenschaften, die auf jeden Fall festgelegt sein müssen, bevor dieses Objekt neu angelegt werden kann Eigenschaften, die wahlweise zusätzlich angelegt sein können True, wenn das Objekt ein Container ist, also weitere Objekte enthält. Diese Objekte können dann mit for each...next ausgelesen werden Ist das Objekt ein Container, dann liefert Containment eine Liste der Objekttypen, die in diesem Container vorkommen können
OptionalProperties Container Containment
Tab. 10.3: Befehle eines Schema-Objekts
Interessant, oder? Probieren Sie doch mal aus, ob ein Domänenobjekt tatsächlich als Container erkannt wird und welche Objekttypen es enthalten kann: ’ 10-7.vbs ’ Zugang zum Namespace: set winnt = GetObject("WinNT:") ' erste gefundene Domäne herausgreifen: for each domain in winnt exit for next ' Schema erfragen ' (das Schema enthält die Infos über das Objekt) set schema = GetObject(domain.schema) MsgBox "Ist Objekt ein Container? " & schema.Container if schema.Container then list = "Liste der möglichen Objekttypen:" & vbCr for each typ in schema.Containment list = list & typ & vbCr next MsgBox list, vbInformation end if
Tatsächlich: Das Domänenobjekt wird korrekt als Container identifiziert, und ADSI meldet, daß darin Objekte der Typen User, Group und Computer vorkommen können. Aha.
Bild 10.5: Welche Objekte können in einem Domänen-Container liegen?
316
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
Probieren Sie dasselbe mit einem Computer aus! In diesem Beispiel findet das Script automatisch den Computernamen Ihres lokalen Computers heraus: ’ 10-8.vbs ’ Welchen Namen hat Ihr eigener Computer im Netzwerk? Set network = CreateObject("Wscript.Network") Computer = network.ComputerName ’ Zugang zum Namespace: set computer = GetObject("WinNT://" & computer) ’ Schema erfragen ' (das Schema enthält die Infos über das Objekt) set schema = GetObject(computer.schema) MsgBox "Ist Objekt ein Container? " & schema.Container if schema.Container then list = "Liste der möglichen Objekttypen:" & vbCr for each typ in schema.Containment list = list & typ & vbCr next MsgBox list, vbInformation end if
Auch hier funktioniert die Sache, und Sie erfahren nicht nur, daß Computer Container sind, sondern daß in diesen Containern Objekte vom Typ User, Group, Service, Print Queue und FileService gespeichert werden können. Nochmal aha!
10.4.1 Welche Objekte gibt es eigentlich? Hier eine Gesamtübersicht über alle Objekte, die der WinNT: Provider kennt: Objektname
Beschreibung
Domain Computer User Group Service FileService PrintQueue
Domäne oder Arbeitsgruppe Computer im Netzwerk Benutzerkonto Benutzergruppe Dienst eines Windows NT/2000-Rechners Datei- und Druckerfreigabedienst Druckerwarteschlange eines Netzwerkdruckers
Tab. 10.4: Alle Objekte des WinNT:-Providers
Zusammen mit Filter könnten Sie nun beispielsweise herausfinden, welche Computer in Ihrem Netzwerk einen Netzwerkdrucker zur Verfügung stellen (siehe unten).
10.4
Das Schema: »Bedienungsanleitung« eines Objekts
317
10.4.2 Den Typ eines beliebigen Objekts herausfinden Jetzt brauchen Sie eigentlich nur noch eins zu wissen: Wie finden Sie heraus, was für eine Art von Objekt Sie vor sich haben? Wie können Sie wissen, zu welchem Typ ein bestimmtes Objekt gehört? Diese wichtige Information liefert die Eigenschaft Class. Das nächste Script listet alle Objekte auf, die in einem Computer anzutreffen sind, und gibt zusätzlich den Typ des Objekts aus: ’ 10-9.vbs ’ Welchen Namen hat Ihr eigener Computer im Netzwerk? Set network = CreateObject("Wscript.Network") Computer = network.ComputerName ’ Zugang zum Namespace: set computer = GetObject("WinNT://" & computer) MsgBox "Habe ein Objekt vom Typ " & computer.class & " gefunden!" for each object in computer list = list & "Typ: " & object.class _ & " Name: " & object.name & vbCr next MsgBox list
Bild 10.6: ADSI kommt an Dienste, Benutzerkonten und vieles mehr heran
318
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
10.4.3 Objekte und deren Inhalt managen Bislang haben Sie ADSI-Container vor allem als Vehikel gebraucht, um Informationen über Ihren Computer und Ihr Netzwerk herauszufinden. Objekte können aber noch weitaus mehr. Jeder Container verfügt über diese Funktionen: Funktion
Bedeutung
Filter
Will mit einem Variablenfeld gefüttert werden, das festlegt, auf welche Objekttypen dieses Objekt beschränkt wird; Sie können damit filtern, welche Objekttypen aufgelistet werden, die in diesem Container lagern Liefert ein ADSI-Objekt zurück, das dem angegebenen ADSI-Pfadnamen entspricht Legt ein neues Objekt des gewünschten Typs im Container an Löscht das angegebene Objekt aus dem Container Kopiert ein Objekt, das Sie angeben, in diesen Container hinein Verschiebt ein Objekt, das Sie angeben, in diesen Container hinein
GetObject Create Delete Copyhere Movehere
Tab. 10.5: Funktionen eines ADSI-Containers
Sie werden gleich zahlreiche Beispiele für all diese Funktionen finden.
10.5
ADSI-Fehler: Wissen, was schiefläuft
Klar, daß in den besten Scripts auch Fehler vorkommen. Ein falsch geschriebener Benutzerkontenname beispielsweise oder ein Tippfehler an anderer Stelle. Ebenso denkbar: Sie versuchen, an die Informationen eines Netzwerkcomputers heranzukommen, aber der ist zur Zeit leider ausgeschaltet und also nicht erreichbar. Solchen Fehlern kommt VBScript natürlich schnell auf die Schliche und präsentiert dann sein herrlich sprödes Fehlermeldungs-Fenster. Dummerweise nur enthält dieses Fenster in vielen Fällen keine sinnvollen Fehlerbeschreibungen, sondern bloß astronomisch große Fehlerzahlen. Wie soll man da herausfinden, was der Grund für den Fehler war?
10.5.1 Wichtige ADSI-Fehler abfangen Glücklicherweise stammen die meisten ADSI-Fehler immer aus derselben Fehlergruppe. Alle Fehlercodes, die mit 0x80005 beginnen, stammen von ADSI selbst. Hier eine Liste der Ursachen: Fehlercode
Beschreibung
0x80005000 0x80005001 0x80005002 0x80005003
ADSI-Pfadname war ungültig Domäne unbekannt Benutzerkonto unbekannt Computer unbekannt
Unbekanntes Objekt wurde angefordert ADSI-Eigenschaft ist nicht gesetzt (nicht vorhanden) ADSI-Eigenschaft wird nicht unterstützt ADSI-Eigenschaft ist ungültig Einer oder mehrere Eingabewerte sind ungültig Angegebenes Objekt ist nicht im Objekt enthalten Die angegebene Eigenschaft wurde nicht geändert Die angegebene Eigenschaft wurde geändert ADSI Variablentyp kann nicht konvertiert werden Die angegebene Eigenschaft kann nicht im Property Cache gefunden werden Das Objekt existiert bereits Aktion steht im Konflikt zu den Schema-Vorgaben Die angegebene Spalte wurde während einer Abfrage nicht definiert Während einer Abfrage sind Fehler aufgetreten Keine weiteren Zeilen abfragbar Keine weiteren Spalten abfragbar Suchfilter ist ungültig
Tab. 10.6: ADSI-Fehlercodes
In aller Regel werden Sie mit dem WinNT:-Provider aber gar keine ADSI-Fehler empfangen, sondern Win32-Fehler. Die beginnen mit 0x8007. Der DOS-Befehl NET HELPMSG verwandelt solche Fehler in Klartext. Allerdings steht dieser Befehl nur bei Windows NT/2000 zur Verfügung. Für Windows 9x-Benutzer habe ich im Anschluß eine Idee anzubieten. Konzentrieren Sie sich auf die letzten vier Zahlen der Fehlermeldung und wandeln diese mit einem Taschenrechner in dezimale Schreibweise um. Anschließend füttern Sie in einem DOS-Fenster den Befehl NET HELPMSG mit dieser Zahl. Oder einfacher: Verwenden Sie das nächste Script. In der InputBox des Scripts steht bereits 8007. Fügen Sie die zusätzlichen vier Zahlen der Fehlermeldung hinzu. Geben Sie zum Beispiel ein: 80070C85. ’ 10-10.vbs fehlercode = InputBox("Bitte geben Sie den Fehlercode ein:" _ ,,"8007") if not left(fehlercode,4)="8007" then MsgBox "Diesen Fehlercode kann ich nicht entschlüsseln!" end if ' spezifischen Anteil holen: errcode = Fix("&H" & mid(fehlercode, 5)) MsgBox "Fehlercode lautet: " & errcode
Es fragt nach der Fehlernummer und errechnet daraus die dezimale Fehlerzahl. Anschließend gehen Sie so vor:
320
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
1. Wählen Sie im Startmenü Ausführen, und geben Sie ein: %COMSPEC% [Enter]. Ein DOS-Fenster öffnet sich. 2. Geben Sie ein: NET HELPMSG, fügen Sie ein Leerzeichen und dann die Fehlernummer ein, und drücken Sie [Enter]. Das alles wird vom nächsten Script automatisiert: ’ 10-11.vbs fehlercode = InputBox("Bitte geben Sie den Fehlercode ein:" _ ,,"8007") if not left(fehlercode,4)="8007" then MsgBox "Diesen Fehlercode kann ich nicht entschlüsseln!" end if ' spezifischen Anteil holen: errcode = Fix("&H" & mid(fehlercode, 5)) ' an DOS-Befehl verfüttern set wshshell = CreateObject("WScript.Shell") cmd = "%COMSPEC% /K NET HELPMSG " & errcode wshshell.Run cmd
Wenn Sie mögen, können Sie sich auch dynamisch eine Liste aller Fehler ausgeben lassen. Das nächste Script erstellt eine HTML-Referenz, die alle Win32-Fehlermeldungen auflistet. Das kann einige Minuten dauern: ’ 10-12.vbs MsgBox "Ermittle alle Win32-Fehlermeldungen. " _ & "Das kann eine Weile dauern..." set wshshell = CreateObject("WScript.Shell") set fs = CreateObject("Scripting.FileSystemObject") tempfile = "C:\CODE.TXT" ausgabe = "C:\LISTE.HTM" set ausgeben = fs.CreateTextFile(ausgabe,true) ausgeben.WriteLine "
" for x = 0 to 65535 cmd1 = "NET HELPMSG " & x cmd2 = "%COMSPEC% /C NET HELPMSG " & x & " > " & tempfile ' temporäre Ausgabedatei löschen, falls vorhanden if fs.FileExists(tempfile) then fs.DeleteFile tempfile end if ' schauen, ob Fehlermeldung erlaubt ist result = wshshell.Run(cmd1,0,true) if result = 0 then
10.5
ADSI-Fehler: Wissen, was schiefläuft
321
’ ja, erlaubt, also Meldung ausfragen result = wshshell.Run(cmd2,0,true) ’ Ergebnis einlesen set einlesen = fs.OpenTextFile(tempfile) ausgeben.Write "
Daneben gibt es Fehlermeldungen, die mit 0x80004 beginnen. Diese Fehlermeldungen stammen direkt vom OLE-Subsystem und liefern in der Regel keine nützlichen Hinweise auf die eigentliche Fehlerursache. Leider. Fehlernummer
Ursprung
0x80004... 0x80005… 0x8007…
OLE-Subsystem ADSI Win32
Tab. 10.7: Hexadezimale Fehlernummern und deren Ursprung
10.5.2 Fehlerursachen direkt erfragen: eigene Befehlserweiterung Natürlich ist es schlichtweg unmöglich, in einem Script alle nur denkbaren Fehlernummern abzufangen und entsprechende Meldungen auszugeben. Das ist in den meisten Fällen auch gar nicht nötig. Oft läßt sich von vornherein abschätzen, welche der Fehler unter Umständen auftreten könnten, und es genügt, sich auf diese Fehlermeldungen zu konzentrieren. Ein wesentlich effektiverer Ansatz ist eine kleine Befehlserweiterung, die ich für Sie geschrieben habe. Die wandelt auto-
322
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
matisch die unleserlichen Fehlernummern des Win32-Subsystems in Klartext um. Sie finden die Befehlserweiterung auf der Buch-CD im Ordner OLEERR. Damit Sie sie einsetzen können, genügt es, die OCX-Datei auf Ihrem System registrieren zu lassen: 1. Kopieren Sie die Datei OLEERROR.OCX von der Buch-CD in Ihren Windows-Systemordner. 2. Wählen Sie im Startmenü Ausführen, und geben Sie ein: REGSVR32 OLEERROR.OCX [Enter]. Anschließend können Ihre Scripts ganz leicht den passenden Klartextnamen zu jeder Fehlermeldung erfragen. So wird’s gemacht: ’ 10-13.vbs set oleerr = CreateObject("OLE.Err") fehlernummer = InputBox("Geben Sie die Fehlernummer ein!") ’ hexadezimale Zahl in dezimale Zahl umwandeln fehlernummer = Fix("&H" & fehlernummer) MsgBox oleerr.OLEError(fehlernummer)
Das Script fragt nach der vollständigen hexadezimalen Fehlernummer. Geben Sie beispielsweise 0 ein, dann meldet das Script »Der Vorgang wurde erfolgreich beendet.«. Geben Sie statt dessen 80070035 ein, dann meldet das Script »Der Netzwerkpfad wurde nicht gefunden.« Damit können Sie ab sofort alle kritischen Script-Teile mit komfortablem Fehlerhandling ausstatten. Ohne Ihre neue Befehlserweiterung sähe der Scriptcode so aus: ’ 10-14.vbs ’ mit Netzwerkcomputer verbinden ’ eingebautes Fehlerhandling abschalten: on error resume next ’ Verbindung aufnehmen: set computer = GetObject("WinNT://computer12,computer") ’ nachsehen, ob alles glatt ging if not err.number=0 then ’ Fehler aufgetreten MsgBox "Konnte Verbindung nicht herstellen: " _ & err.description err.clear else MsgBox "Verbindung wurde hergestellt." end if ’ Fehlerhandling wieder aktivieren on error goto 0
Sie können Fehler zwar abfangen, bekommen aber keine vernünftige Fehlerbeschreibung.
Mit der neuen Befehlserweiterung sieht die Sache so aus: ’ 10-15.vbs set oleerr = CreateObject("OLE.Err") ’ mit Netzwerkcomputer verbinden ’ eingebautes Fehlerhandling abschalten: on error resume next ’ Verbindung aufnehmen: set computer = GetObject("WinNT://computer12,computer") ’ nachsehen, ob alles glatt ging if not err.number=0 then ’ Fehler aufgetreten MsgBox "Konnte Verbindung nicht herstellen: " _ & oleerr.OLEError(err) err.clear else MsgBox "Verbindung wurde hergestellt." end if ’ Fehlerhandling wieder aktivieren on error goto 0
Schon wesentlich besser. Hier noch zwei Dinge, an die Sie danken müssen:
In einfachen Fällen wie diesem Beispiel brauchen Sie die Befehlserweiterung nicht unbedingt. Bekommen Sie nach versuchter Verbindungsaufnahme einen Fehler (err.Number ist dann nicht null), so wissen Sie in der Regel die Ursache. Bei komplexeren Scripts sind die Fehlermeldungen der Befehlserweiterung dagegen auf jeden Fall Gold wert.
Wenn Sie mit on error resume next die Fehlerbehandlung abschalten, dann denken Sie unbedingt daran, die Fehlerbehandlung zum frühest möglichen Zeitpunkt mit on error goto 0 wieder einzuschalten. Ansonsten würden Fehler, die später auftreten und an die Sie gar nicht gedacht haben, ebenfalls verschluckt. Schalten Sie außerdem bei einem Fehler den Fehlermelder wieder mit err.clear »in Ruhe«, weil der Fehlerstatus sonst weiter aktiv wäre und beim nächsten Fehlercheck erneut gemeldet würde.
324 10.6
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
Informationen über Computer erfragen
Sie kennen nun alle ADSI-Grundfunktionen. Wie universell sie sich einsetzen lassen, zeigen die nächsten Scripts. Probieren Sie die Scripts einfach aus, und vergessen Sie bitte nicht, wo nötig den vorgegebenen Computernamen //SCENIC1 durch den Computernamen zu ersetzen, den Sie in Ihrem Netzwerk tatsächlich untersuchen wollen.
10.6.1 Alle Computer sehen, die gerade online sind Das nächste Script listet alle ADSI-fähigen Computer einer jeglichen Arbeitsgruppe oder Domäne auf: ’ 10-16.vbs set winnt = GetObject("WinNT:") for each domain in winnt domain.Filter = Array("Computer") for each computer in domain list = list & computer.name & vbCr next next MsgBox list
Das folgende Script listet nur die Computer in einer bestimmten Domäne/Arbeitsgruppe auf: ’ 10-17.vbs set domain = GetObject("WinNT://Arbeitsgruppe") domain.Filter = Array("Computer") for each computer in domain list = list & computer.name & vbCr next MsgBox list
10.6.2 Details über Computer erfragen Das nächste Script findet automatisch heraus, welche Eigenschaften das Computer-Objekt zur Verfügung stellt, und listet dann die Ergebnisse auf: ’ 10-18.vbs ’ Zugang zum Computer set comp = GetObject("WinNT://scenic1")
10.6
Informationen über Computer erfragen
325
’ Schema erfragen ' (das Schema enthält die Infos über das Objekt) set schema = GetObject(comp.schema) list = "Infos zu Computer " & comp.name & vbCr for each prop in schema.MandatoryProperties list = list & prop & "=" & Ask(comp, prop) & vbCr next for each prop in schema.OptionalProperties list = list & prop & "=" & Ask(comp, prop) & vbCr next MsgBox list, vbInformation function Ask(obj, property) ' fragt eine Eigenschaft ab ' zuerst Fehlerhandling abschalten on error resume next ' Information abfragen Ask = obj.get(property) ' fehlerfrei? if not err.number=0 then ' nein, Fehler! err.clear Ask = "kein Ergebnis" end if end function
Bild 10.8: Diese Informationen über Computer stellt ADSI zur Verfügung
10.6.3 Hardware-Inventurliste erstellen Mit nur einer kleinen Änderung bekommen Sie automatisch eine kleine Hardware-Inventarliste in Ihrem Netzwerk:
326
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
’ 10-19.vbs logfile = "C:\inventar.txt" ’ Datei anlegen set fs = CreateObject("Scripting.FileSystemObject") set ausgabe = fs.CreateTextFile(logfile, true) ' Zugang zu Domänen set domains = GetObject("WinNT:") ' in allen Domänen nachsehen for each domain in domains domain.Filter = Array("Computer") for each computer in domain ausgabe.WriteLine computer.name ausgabe.WriteLine vbTab & computer.Get("OperatingSystem") _ & " " & computer.Get("OperatingSystemVersion") ausgabe.WriteLine vbTab & computer.Get("Processor") ausgabe.WriteLine vbTab & computer.Get("ProcessorCount") next next ' Ausgabedatei schließen und anzeigen ausgabe.close set wshshell = CreateObject("WScript.Shell") wshshell.Run """" & logfile & """"
10.6.4 Alle Drucker im Netzwerk auflisten Wollen Sie herausfinden, welche Drucker im Netzwerk online sind? Das nächste Script verrät es Ihnen: ’ 10-20.vbs set adsi = GetObject("WinNT:") ' alle Domänen finden for each domain in adsi domname = domain.name ' alle Computer in der Domäne auflisten ' Inhalt beschränken auf Elemente, ' die vom Typ "Computer" sind domain.Filter = Array("Computer") ' alle Computer durchsuchen
10.7
Benutzerkonten verwalten
327
for each computer in domain compuname = computer.name ' Ergebnis nur auf Netzwerkdrucker beschränken computer.Filter = Array("PrintQueue") for each printer in computer list = list & domname & "/" & compuname _ & "/" & printer.name & vbCr next next next MsgBox list, vbInformation
Lesen Sie auch weiter unten, wie Sie nachschauen, an welchen Druckaufträgen ein Drucker gerade arbeitet und wie Sie Druckaufträge in der Warteschlange nach vorn mogeln.
Bild 10.9: Alle Drucker im Netzwerk auflisten, die online sind
10.7
Benutzerkonten verwalten
Benutzerkonten lassen sich komplett über ADSI verwalten. In diesem Kapitel zeige ich Ihnen, wie Sie die bestehenden Benutzerkonten eines Netzwerkcomputers auflisten, Änderungen an den Einstellungen vornehmen und sogar ganz neue Konten schnell und zügig anlegen.
10.7.1 Alle Benutzerkonten eines Computers auflisten Das nächste Script zeigt Ihnen, wie Sie die lokalen Benutzerkonten eines Computers auflisten: ’ 10-21.vbs ’ Welchen Namen hat Ihr eigener Computer im Netzwerk? Set network = CreateObject("Wscript.Network") Computer = network.ComputerName ’ Zugang zum Namespace: set computer = GetObject("WinNT://" & computer) ’ alle Benutzerkonten auflisten computer.Filter = Array("User") ’ Liste generieren
328
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
for each user in computer list = list & user.name & vbCr next MsgBox list, vbInformation
Bild 10.10: Benutzerkonten eines lokalen Computers
Tip: Globale Benutzerkonten einer Domäne verwalten Möchten Sie nicht die lokalen Benutzerkonten eines bestimmten Computers verwalten, sondern die globalen Benutzerkonten einer Domäne, dann verbinden Sie sich nicht mit dem lokalen Computer, sondern mit der Domäne. Das nächste Script listet beispielsweise die globalen Benutzerkonten der Domäne WIN2000GER auf. ’ 10-22.vbs ' Zugang zur Domäne set domain = GetObject("WinNT://WIN2000GER") ' alle Benutzerkonten auflisten domain.Filter = Array("User") ' Liste generieren for each user in domain list = list & user.name & vbCr next MsgBox list, vbInformation
Bild 10.11: Benutzerkonten eines Domänencontrollers auflisten
10.7
Benutzerkonten verwalten
329
10.7.2 Ein neues Benutzerkonto anlegen Jedes Container-Objekt bietet Ihnen den Create-Befehl an. Mit Create können Sie neue Objekte in diesem Container anlegen. Create funktioniert also genau gleich, ganz egal, ob Sie Ihr Script mit einer Domäne oder einem lokalen Computer verbunden haben. Im ersten Fall legt das Script globale Benutzerkonten in der Domäne an, im zweiten Fall lokale Benutzerkonten auf dem angegebenen Computer. ’ 10-23.vbs ’ neues lokales Benutzerkonto anlegen ’ Details abfragen: username = Frage("Benutzername des neuen Kontos?") fullname = Frage("Nennen Sie den Klartextnamen des Benutzers!") describe = Frage("Nennen Sie eine Beschreibung des Kontos!") password = Frage("Geben Sie ein Kennwort ein!") ’ Welchen Namen hat Ihr eigener Computer im Netzwerk? Set network = CreateObject("Wscript.Network") Computer = network.ComputerName ’ Zugang zum Namespace: set computer = GetObject("WinNT://" & computer) ’ neues Benutzerkonto anlegen: set kontoneu = computer.Create("User", username) ’ wirksam werden lassen: kontoneu.SetInfo ’ Kennwort eintragen: kontoneu.SetPassword password ’ andere Details eintragen: kontoneu.FullName = fullname kontoneu.Description = describe ' Änderungen wirksam werden lassen: kontoneu.SetInfo MsgBox "Konto wurde erfolgreich angelegt!"
function Frage(prompt) Frage = InputBox(prompt, "Neues Konto anlegen") if Frage = vbEmpty then MsgBox "Abbruch!", vbCritical WScript.Quit end if end function
330
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
Prüfen Sie den Erfolg der Aktion mit den Benutzerlist-Scripts von oben. Tatsächlich: Es listet Ihr neues Benutzerkonto auf! Das neue Konto ist allerdings noch in keiner Gruppe Mitglied und wird deshalb im einfachen Benutzerfenster von Windows 2000 noch nicht angezeigt. Trotzdem existiert es. Wie Sie neue Benutzerkonten zum Mitglied in beliebigen Gruppen machen, zeige ich Ihnen in einem Moment. Tip: Neue Konten aus einer Datenbank anlegen Hier wird das modulare Konzept des Scripting Hosts deutlich! Meine Beispielscripte sind extrem schlank gehalten, damit die wesentlichen Punkte nicht im Wust der Programmzeilen untergehen. In der Praxis können Sie diese Rezepte und Sofortlösungen beliebig miteinander kombinieren. Vielleicht haben Sie schon mal in Kapitel 9 geschaut: Dort sehen Sie, wie Scripts Datenbanken auslesen und anlegen können. Es wäre nur ein Aufwand von wenigen Minuten, zwei Scripts zu kombinieren, um beispielsweise neue Benutzerkonten direkt aus den Informationen einer Datenbank heraus anzulegen.
10.7.3 Benutzerkonten wieder entfernen Ebenso leicht, wie Sie scriptgesteuert Benutzerkonten angelegt haben, verschwinden diese auf Wunsch auch wieder. Verwenden Sie einfach anstelle der Create-Methode die Delete-Methode des Containers. Das nächste Script zeigt, wie das funktioniert. Es löscht auf Wunsch lokale Benutzerkonten Ihres Computers. Tip: Vorsicht – Änderungen werden sofort wirksam! Bei aller Freude am Experimentieren: Das nächste Script schießt scharf! Es löscht Benutzerkonten unwiderruflich. Legen Sie am besten zuerst mit dem vorangegangenen Script ein Testkonto an, das Sie danach mit dem folgenden Script wieder gefahrlos entsorgen können. ’ 10-24.vbs ' lokales Benutzerkonto löschen ' Details abfragen: username = Frage("Wie heißt das Konto, das Sie löschen wollen?") ' Welchen Namen hat Ihr eigener Computer im Netzwerk? Set network = CreateObject("Wscript.Network") Computer = network.ComputerName ' Zugang zum Namespace: adsistring = "WinNT://" & computer & "/" & username & ",user" MsgBox "So komme ich an das Benutzerkonto heran:" & vbCr & adsistring ' prüfen, ob Konto wirklich vorhanden ist: on error resume next set user = GetObject(adsistring)
10.7
Benutzerkonten verwalten
331
if not err.number=0 then ’ es ist ein Fehler passiert MsgBox "Benutzerkonto existiert nicht oder anderer Fehler." WScript.Quit end if on error goto 0 ’ in "user" liegt jetzt das Benutzerkonto ’ wir brauchen aber den Container, in dem es liegt ’ also mit Parent nachfragen set computer = GetObject(user.Parent) msg = "Wollen Sie das Konto " & username _ & " UNWIDERRUFLICH löschen?" antwort = MsgBox(msg, vbYesNo + vbCritical) if antwort = vbYes then computer.Delete "user", username MsgBox "gelöscht..." end if function Frage(prompt) Frage = InputBox(prompt, "Neues Konto anlegen") if Frage = vbEmpty then MsgBox "Abbruch!", vbCritical WScript.Quit end if end function
10.7.4 Kennwörter ändern Kennen Sie das auch? Ein User hat sein Kennwort vergessen, und nun braucht er ein neues. Vielleicht wollen Sie auch Ihr eigenes Kennwort gegen ein anderes austauschen, um es Hackern schwieriger zu machen. Beides geht galant per Script. Das erste Script ändert ein Kennwort, wenn Sie das alte Kennwort wissen: ’ 10-25.vbs ’ Welchen Namen hat Ihr eigener Computer im Netzwerk? Set network = CreateObject("Wscript.Network") Computer = network.ComputerName username = InputBox("Wie heißt Ihr Benutzerkonto?") pwdalt = InputBox("Wie heißt Ihr derzeit gültiges Kennwort?") pwdneu = InputBox("Wie soll das Kennwort lauten?") pwdcheck = InputBox("Geben Sie das NEUE Kennwort zur Kontrolle ein!") if pwdcheck<>pwdneu then MsgBox "Sie haben sich vertippt. Ich breche ab." WScript.Quit
332
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
end if ’ mit Benutzerkonto verbinden set konto = GetObject("WinNT://" & computer & "/" & username & ",user") on error resume next konto.ChangePassword pwdalt, pwdneu if err.number=0 then MsgBox "Kennwort geändert." else MsgBox "Fehler!" end if err.clear on error goto 0
Sie können das Script auch so umformulieren, daß der jeweils eingeloggte Benutzer sein eigenes Kennwort ändern kann. Dazu sind nur minimale Änderungen nötig: ’ 10-26.vbs ’ Welchen Namen hat Ihr eigener Computer im Netzwerk? Set network = CreateObject("Wscript.Network") Computer = network.ComputerName username = network.UserName pwdalt = InputBox("Wie heißt Ihr derzeit gültiges Kennwort?") pwdneu = InputBox("Wie soll das Kennwort lauten?") pwdcheck = InputBox("Geben Sie das NEUE Kennwort zur Kontrolle ein!") if pwdcheck<>pwdneu then MsgBox "Sie haben sich vertippt. Ich breche ab." WScript.Quit end if ' mit Benutzerkonto verbinden set konto = GetObject("WinNT://" & computer & "/" _ & username & ",user") on error resume next konto.ChangePassword pwdalt, pwdneu if err.number=0 then MsgBox "Kennwort geändert." else MsgBox "Fehler!" end if err.clear on error goto 0
Ebenso einfach könnten Sie Klartext-Fehlermeldungen einbauen. Hier ein Beispiel, das die Befehlserweiterung von oben nutzt. Achtung: Dieses Script funktioniert nur, wenn Sie zuvor wie oben beschrieben die Befehlserweiterung auf Ihrem Computer startklar gemacht haben:
10.7
Benutzerkonten verwalten
333
’ 10-27.vbs set oleerr = CreateObject("ole.err") ’ Welchen Namen hat Ihr eigener Computer im Netzwerk? Set network = CreateObject("Wscript.Network") Computer = network.ComputerName username = network.UserName pwdalt = InputBox("Wie heißt Ihr derzeit gültiges Kennwort?") pwdneu = InputBox("Wie soll das Kennwort lauten?") pwdcheck = InputBox("Geben Sie das NEUE Kennwort zur Kontrolle ein!") if pwdcheck<>pwdneu then MsgBox "Sie haben sich vertippt. Ich breche ab." WScript.Quit end if ' mit Benutzerkonto verbinden on error resume next set konto = GetObject("WinNT://" & computer & "/" & username & ",user") DoCheck(err) on error goto 0 on error resume next konto.ChangePassword pwdalt, pwdneu DoCheck(err) on error goto 0 MsgBox "Fertig." sub DoCheck(fehlernr) if not fehlernr=0 then antwort = MsgBox(oleerr.oleError(fehlernr) & vbCr _ & "Abbrechen?",vbYesNo+vbQuestion) if antwort = vbYes then WScript.Quit end if end sub
Wenn Sie bei diesem Script zur Legitimation ein falsches Kennwort eingeben, bekommen Sie die passende Fehlermeldung auf den Tisch. Zudem fragt das Script nach, ob Sie die weitere Ausführung abbrechen wollen. DoCheck erledigt die allgemeine Fehlerprüfung und kann bei allen kritischen Stellen im Script eingesetzt werden. Das spart Code und macht Ihr Script übersichtlicher.
Vergessene Kennwörter reparieren: Schlüsseldienst Was aber, wenn Sie oder ein anderer Anwender sein Kennwort vergessen hat? In diesem Fall hilft die Macht des Administrators. Das nächste Script wird in der Hand eines Administrators zum allgemeinen Schlüsseldienst, mit dem Benutzerkonten neue Kennwörter vergeben werden können, auch wenn das alte nicht bekannt ist.
334
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
Während also bei den vorangegangenen Scripts das alte Kennwort die Legitimation darstellte, ist es bei diesem Script der Administratorenstatus desjenigen, der das Script aufruft. Wird es von einem Nicht-Administrator bedient, dann verweigert es die Mitarbeit. ’ 10-28.vbs ’ Welchen Namen hat Ihr eigener Computer im Netzwerk? Set network = CreateObject("Wscript.Network") Computer = network.ComputerName username = InputBox("Wie heißt das Benutzerkonto?") pwdneu = InputBox("Wie soll das Kennwort lauten?") pwdcheck = InputBox("Geben Sie das NEUE Kennwort erneut ein!") if pwdcheck<>pwdneu then MsgBox "Sie haben sich vertippt. Ich breche ab." WScript.Quit end if ' mit Benutzerkonto verbinden set konto = GetObject("WinNT://" & computer & "/" _ & username & ",user") on error resume next konto.SetPassword pwdneu konto.SetInfo if err.number=0 then MsgBox "Kennwort geändert." else MsgBox "Fehler!" end if err.clear on error goto 0
10.7.5 Spezielle Einstellungen des Benutzerkontos setzen Ein Benutzerkonto besteht aus wesentlich mehr Informationen als nur dem Benutzernamen und dem Kennwort. Vielleicht wollen Sie, daß ein Benutzerkonto nur eine beschränkte Zeit zur Verfügung steht, also temporäre Konten einrichten. Ebenfalls wichtig: Vielleicht möchten Sie den Benutzer zwingen, bei seinem nächsten Login sein Kennwort zu ändern. All das ist über ADSI steuerbar. Welche Einzelinformationen in einem beliebigen Benutzerkonto stecken, verrät das folgende Script: ’ 10-29.vbs ’ Welchen Namen hat Ihr eigener Computer im Netzwerk? Set network = CreateObject("Wscript.Network") Computer = network.ComputerName username = InputBox("Wie heißt das Benutzerkonto?")
10.7
Benutzerkonten verwalten
335
set konto = GetObject("WinNT://" & computer & "/" _ & username & ",user") ’ Schema des Kontos erfragen set schema = GetObject(konto.Schema) for each property in schema.MandatoryProperties list = list & property & " = " & konto.Get(property) & vbCr next for each property in schema.OptionalProperties list = list & property & " = " & konto.Get(property) & vbCr next MsgBox list, vbInformation
Allerdings wird dieses Script in den meisten Fällen einen Fehler produzieren. Der Grund: Wird eine Eigenschaft des Kontos abgefragt, die noch gar nicht festgelegt ist, dann nörgelt ADSI. Andere Fehlerursachen: Eigenschaften wie LoginHours liefern die Informationen in einem Variablenformat, mit dem VBScript nichts anfangen kann.
Bild 10.12: Alle Daten eines Benutzerkontos abfragen
Es gilt also, diese Fehler abzufangen: ’ 10-30.vbs ’ Welchen Namen hat Ihr eigener Computer im Netzwerk? Set network = CreateObject("Wscript.Network") Computer = network.ComputerName username = InputBox("Wie heißt das Benutzerkonto?") set konto = GetObject("WinNT://" & computer & "/" & username & ",user")
336
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
’ Schema des Kontos erfragen set schema = GetObject(konto.Schema) for each property in schema.MandatoryProperties list = list & property & " = " & GetInfo(konto, property) & vbCr next for each property in schema.OptionalProperties list = list & property & " = " & GetInfo(konto, property) & vbCr next MsgBox list, vbInformation function GetInfo(obj, prop) on error resume next GetInfo = obj.Get(prop) if VarType(GetInfo)=8209 then GetInfo = "(ByteArray)" else GetInfo = GetInfo & " als " & TypeName(GetInfo) end if if not err.number=0 then GetInfo = "(undefiniert)" end if end function
10.7.6 Wie lange ist ein Kennwort bereits in Benutzung? Interessant, oder? Die Eigenschaft PasswordAge berichtet zum Beispiel beredt darüber, wie lange ein Benutzer bereits sein Kennwort nutzt. Die Angabe ist sekundengenau. Um also herauszufinden, wann ein Benutzer das letzte Mal sein Kennwort geändert hat, könnten Sie dieses Script verwenden: ’ 10-31.vbs ’ Welchen Namen hat Ihr eigener Computer im Netzwerk? Set network = CreateObject("Wscript.Network") Computer = network.ComputerName username = InputBox("Wie heißt das Benutzerkonto?") set konto = GetObject("WinNT://" & computer & "/" & username & ",user") alter = konto.Get("PasswordAge") ' Sekunden in Tage umwandeln: tage = Fix(alter/60/60/24) MsgBox "Das Kennwort ist " & tage & " Tage alt."
10.7
Benutzerkonten verwalten
337
Bild 10.13: Alter eines Kennworts herausfinden
Vielleicht wollen Sie lieber eine Statistik über alle Benutzerkonten und deren Alter. Das funktioniert so: ’ 10-32.vbs set fs = CreateObject("Scripting.FileSystemObject") ’ Ausgabedatei anlegen: name = "C:\LISTE.HTM" set ausgabe = fs.CreateTextFile(name, true) ausgabe.WriteLine "
" ’ Welchen Namen hat Ihr eigener Computer im Netzwerk? Set network = CreateObject("Wscript.Network") Computer = network.ComputerName set comp = GetObject("WinNT://" & computer & ",computer") comp.Filter = Array("User") ’ alle Benutzerkonten durchforsten: for each user in comp ausgabe.Write "
" & user.name & "
" on error resume next alter = user.Get("PasswordAge") if err.number=0 then tage = Fix(alter/60/60/24) else tage = "(nicht festgelegt)" end if err.clear on error goto 0 ausgabe.WriteLine "
" & tage & "
" next ausgabe.WriteLine "
" ausgabe.close set wshshell = CreateObject("WScript.Shell") wshshell.Run name
Auch hier ist das Fehlerhandling wieder wichtig, denn sollte für ein Konto noch niemals ein Kennwort festgelegt worden sein, dann kann die Kennwort-Lebensdauer auch nicht abgefragt werden. Das Script listet alle lokalen Benutzerkonten Ihres Computers auf und berichtet, wie lange die einzelnen Nutzer bereits Ihr Kennwort verwenden. Wollen Sie statt dessen die Benutzerkonten einer
338
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
Domäne überwachen, dann verbinden Sie sich nicht mit einem Computer, sondern mit einer Domäne. Zum Beispiel so: set comp = GetObject("WinNT:Domänenname,domain")
Allerdings brauchen Sie die notwendigen Berechtigungen. Sie müssen also Mitglied der Gruppe der Domänen-Admins sein.
10.7.7 Wann hat ein Benutzer sich das letzte Mal eingeloggt? Wie mächtig Ihr neues Wissen ist, zeigt das nächste Beispiel. Es fragt in den Benutzerkonten die Eigenschaft LastLogin ab und kann so herausfinden, wann die einzelnen Benutzerkonten zum letzten Mal verwendet worden sind. Als Firmenchef wäre es so ein leichtes, nachzuhaken, wer warum am Wochenende in der Firma gearbeitet hat, als die Firmendatenbank zusammenkrachte... Das Script ist im Grundgerüst genauso aufgebaut wie das vorangegangene: ’ 10-33.vbs set fs = CreateObject("Scripting.FileSystemObject") ’ Ausgabedatei anlegen: name = "C:\LISTE.HTM" set ausgabe = fs.CreateTextFile(name, true) ausgabe.WriteLine "
" ’ Welchen Namen hat Ihr eigener Computer im Netzwerk? Set network = CreateObject("Wscript.Network") Computer = network.ComputerName set comp = GetObject("WinNT://" & computer & ",computer") comp.Filter = Array("User") ’ alle Benutzerkonten durchforsten: for each user in comp ausgabe.Write "
" & user.name & "
" on error resume next datum = user.Get("LastLogin") if not err.number=0 then datum = "(nicht festgelegt)" end if err.clear on error goto 0 ausgabe.WriteLine "
" & datum & "
" next ausgabe.WriteLine "
" ausgabe.close set wshshell = CreateObject("WScript.Shell") wshshell.Run name
10.7
Benutzerkonten verwalten
339
Tip: Sicherheitsrisiko Uralt-Konten – und die Lösung! Wissen Sie eigentlich, ob wirklich alle Benutzerkonten in Ihrem Unternehmen noch in Gebrauch sind? Über die Zeit haben sich vielleicht Konten von längst ausgeschiedenen Mitarbeitern angesammelt. Mit dem vorangegangenen Script ist es nun kinderleicht, alle Konten zu finden, die seit Urzeiten nicht mehr benutzt worden sind. Die können Sie anschließend umweltfreundlich entsorgen, und wenn Sie wollen, erledigt beides ein Script in einem Aufwasch.
10.7.8 Details der Benutzerkonten selbst festlegen Die meisten Zusatzinformationen eines Benutzerkontos können natürlich nicht nur gelesen werden, sondern lassen sich auch verändern. Der Counterpart zu Get heißt Put. Vielleicht wollen Sie von vornherein festlegen, daß ein Benutzerkonto nach einer bestimmten Zeit gesperrt wird. Für einen Kongreß brauchen Sie vielleicht Konten, die nur 5 Tage »haltbar« sind und anschließend von allein gesperrt werden. Mit dem folgenden Script begrenzen Sie die Lebensdauer eines beliebigen Benutzerkontos. Testen Sie das Script an einem Testkonto, nicht an einem Konto, das Sie für die tägliche Arbeit benötigen. Mit Skript 10-30.vbs kontrollieren Sie anschließend, ob die Eigenschaft wie gewünscht gesetzt wurde: ’ 10-34.vbs ’ Welchen Namen hat Ihr eigener Computer im Netzwerk? Set network = CreateObject("Wscript.Network") Computer = network.ComputerName username = InputBox("Wie heißt das Benutzerkonto?") set konto = GetObject("WinNT://" & computer _ & "/" & username & ",user") set konto = GetObject(konto.ADsPath) msg = "Wie lange soll das Konto gültig sein?" limit = InputBox(msg) if not isNumeric(limit) then MsgBox "Sie haben keine Zahl eingegeben!" WScript.Quit end if konto.Put "AccountExpirationDate", _ CDate(DateAdd("d", now, limit)) konto.SetInfo MsgBox "Erledigt."
Umgekehrt geht es ebenfalls: Wollen Sie das Haltbarkeitsdatum eines Kontos entfernen, so daß es wieder für unbeschränkte Zeit nutzbar ist, dann verwenden Sie das nächste Script:
340
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
’ 10-35.vbs ’ Welchen Namen hat Ihr eigener Computer im Netzwerk? Set network = CreateObject("Wscript.Network") Computer = network.ComputerName username = InputBox("Wie heißt das Benutzerkonto?") set konto = GetObject("WinNT://" & computer _ & "/" & username & ",user") set konto = GetObject(konto.ADsPath) konto.Put "AccountExpirationDate", CDate("1.1.1970") konto.SetInfo MsgBox "Erledigt."
Der Trick ist simpel: Wenn Sie als Ablaufdatum den 1.1.1970 angeben, dann wird das Ablaufdatum entfernt. Skript 10-30.vbs beweist: das Ablaufdatum ist nach dieser Operation wieder »undefiniert«.
10.7.9 Benutzer-Flags des Kontos setzen Ganz besonders geheimnisvoll ist die Eigenschaft UserFlags. Sie enthält nur einen Zahlenwert, der auf Anhieb wenig freundlich aussieht. Tatsächlich verbergen sich hinter diesem Zahlenwert ganz unterschiedliche mächtige Einstellungen. Jede Einstellung belegt genau ein Bit im Zahlenwert, und dies ist die geheime Bitbelegung: Bit
Script Konto abgeschaltet Heimatverzeichnis gefordert Konto gesperrt Kein Kennwort erforderlich Kennwort kann nicht verändert werden Vorübergehendes Konto Normales Konto Interdomain Trust Konto Workstation Trust Konto Server Trust Konto Kennwort läuft nicht ab MNS Logon Konto
Tab. 10.8: Flags für Spezialeinstellungen am Benutzerkonto
Um diese Informationen zu lesen oder zu verändern, müssen die einzelnen Bits einer Zahl herausgefischt werden. Das gelingt über die Befehle AND, OR und XOR. Schauen Sie sich die Sache in Ruhe an:
10.7
Benutzerkonten verwalten
341
10.7.10 Ein Konto sperren Wollen Sie ein Konto sperren? Dann hilft das nächste Script, das zeigt, wie Sie mit den Bits umspringen müssen. Das Script liefert eine Liste mit allen lokalen Benutzerkonten und berichtet, ob die Konten aktiv, abgeschaltet oder gesperrt sind: ’ 10-36.vbs
set fs = CreateObject("Scripting.FileSystemObject") ’ Ausgabedatei anlegen: name = "C:\LISTE.HTM" set ausgabe = fs.CreateTextFile(name, true) ausgabe.WriteLine "
" ’ Welchen Namen hat Ihr eigener Computer im Netzwerk? Set network = CreateObject("Wscript.Network") Computer = network.ComputerName set comp = GetObject("WinNT://" & computer & ",computer") comp.Filter = Array("User") ’ alle Benutzerkonten durchforsten: for each user in comp ausgabe.Write "
" & user.name & "
" on error resume next userflags = user.Get("UserFlags") if not err.number=0 then typ = "(nicht festgelegt)" else if (userflags AND 2)<>0 then typ = "abgeschaltet" elseif (userflags AND 16)<>0 then typ = "gesperrt" else typ = "aktiv" end if end if err.clear on error goto 0 ausgabe.WriteLine "
" & typ & "
" next ausgabe.WriteLine "
" ausgabe.close set wshshell = CreateObject("WScript.Shell") wshshell.Run "iexplore.exe " & name
342
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
Nur aktive Konten können verwendet werden. Konten, die abgeschaltet sind, stehen nicht zur Verfügung. Das Gast-Konto ist zum Beispiel anfangs abgeschaltet und muß explizit eingeschaltet werden, damit Gast-Logins (anonyme Logins) möglich werden. Gesperrte Konten spielen in einer etwas anderen Liga. Sie können Konten nicht manuell sperren (nur abschalten). Konten werden automatisch gesperrt, sobald der Benutzer mehrere Male vergeblich versucht hat sich, anzumelden. Wie viele Einloggversuche in welcher Zeit gescheitert sein müssen, damit das Konto gesperrt wird, das legen Sie in den Sicherheitsrichtlinien Ihres Computers (oder der Domäne) fest. Als Vorgabe gibt es keinen Sperrmechanismus. Es sind so viele Einloggversuche erlaubt, wie Sie wollen. Wie Sie einzelne Konten per Script verwalten, zeigt das nächste Script. Damit sperren (und entsperren) Sie jedes lokale Benutzerkonto. Wollen Sie lieber globale Domänenkonten verwalten, dann verwenden Sie anstelle des Computernamens den Namen der Domäne. ’ 10-37.vbs
’ Welchen Namen hat Ihr eigener Computer im Netzwerk? Set network = CreateObject("Wscript.Network") Computer = network.ComputerName username = InputBox("Name des Benutzerkontos?") set user = GetObject("WinNT://" & computer & "/" & username & ",user") ’ Ist Konto momentan gesperrt? userflags = user.Get("UserFlags") sperrung = (userFlags and 2)<>0 if sperrung then msg = "Konto ist gesperrt. Aufschließen?" sperrung = userflags and not 2 else msg = "Konto ist aktiv. Sperren?" sperrung = userflags or 2 end if antwort = MsgBox(msg, vbYesNo + vbQuestion) if antwort = vbYes then user.Put "UserFlags", sperrung user.SetInfo MsgBox "Erledigt." end if
Testen Sie das Script zum Beispiel mit dem Konto Gast, und kontrollieren Sie den Erfolg zum Beispiel mit Skript 10-30.vbs. Vergessen Sie aber nicht, das Gastkonto wieder in den Ausgangszustand zurückzuversetzen. Ein aktiviertes Gast-Konto kann eine erhebliche Sicherheitslücke darstellen!
10.7
Benutzerkonten verwalten
343
Bild 10.14: Benutzerkonten sperren und aufschließen
Hier noch ein nützliches Beispiel: Hat sich ein Benutzer durch zu viele vergebliche Anmeldeversuche ausgeschlossen, dann hilft das nächste Script. Es listet sofort alle verschlossenen Konten auf und gibt Ihnen die Möglichkeit, die Sperrung aufzuheben. Wenn Sie Administratorrechte haben. Sonst natürlich nicht. ’ 10-38.vbs
’ Welchen Namen hat Ihr eigener Computer im Netzwerk? Set network = CreateObject("Wscript.Network") Computer = network.ComputerName set comp = GetObject("WinNT://" & computer & ",computer") comp.Filter = Array("User") ’ alle Benutzerkonten durchforsten: counter = 0 for each user in comp on error resume next userflags = user.Get("UserFlags") if err.number=0 then if (userflags AND 16)<>0 then list = list & user.name & vbCr counter = counter + 1 end if end if err.clear on error goto 0 next
if counter > 0 then frage = list & "Welches Konto wollen Sie ent-sperren?" antwort = InputBox(frage,"Entsperrung") if antwort = vbEmpty then WScript.Quit set user = GetObject("WinNT://" & computer & "/" _ & antwort & ",user") user.Put "UserFlags", user.Get("UserFlags") and not 16 user.SetInfo
344
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
MsgBox "Konto entsperrt!" else MsgBox "Momentan ist kein Konto gesperrt." end if
10.7.11 Beim nächsten Einloggen Kennwortänderung erzwingen Noch ein Beispiel: Wie zwingt man einen Benutzer dazu, beim nächsten Einloggen sein Kennwort zu ändern? Zuständig hierfür ist die Eigenschaft PasswordExpired. So erzwingen Sie die KennwortÄnderung: ’ 10-39.vbs ’ Welchen Namen hat Ihr eigener Computer im Netzwerk? Set network = CreateObject("Wscript.Network") Computer = network.ComputerName username = InputBox("Name des Benutzerkontos?") set user = GetObject("WinNT://" & computer _ & "/" & username & ",user") user.PasswordExpired = CLng(1) user.SetInfo MsgBox "Erledigt."
Wenn Sie mögen, kombinieren Sie Ihr neues Wissen einfach! Schreiben Sie sich zum Beispiel ein Script, das bei allen Konten ein neues Kennwort erzwingt, wenn das Kennwort schon länger als zum Beispiel 30 Tage in Benutzung ist.
10.7.12 Kennwortänderungen verbieten Umgekehrt geht es natürlich genauso: Vielleicht wollen Sie verbieten, daß ein Benutzer das von Ihnen zugewiesene Kennwort einfach ändert. Solchen Eigenmächtigkeiten schiebt das nächste Script einen Riegel vor: ’ 10-40.vbs ’ Welchen Namen hat Ihr eigener Computer im Netzwerk? Set network = CreateObject("Wscript.Network") Computer = network.ComputerName username = InputBox("Name des Benutzerkontos?") set user = GetObject("WinNT://" & computer & "/" & username & ",user") ' Darf Kennwort geändert werden? userflags = user.Get("UserFlags") sperrung = (userFlags and 64)<>0
10.8
Gruppen-Verwaltung
345
if sperrung then msg = "Kennwortänderungen verboten. Erlauben?" sperrung = userflags and not 64 else msg = "Kennwortänderungen erlaubt. Verbieten?" sperrung = userflags or 64 end if antwort = MsgBox(msg, vbYesNo + vbQuestion) if antwort = vbYes then user.Put "UserFlags", sperrung user.SetInfo MsgBox "Erledigt." end if
10.8
Gruppen-Verwaltung
Windows NT und Windows 2000 nutzen zwei verschiedene Mechanismen für die Sicherheit: Jeder Benutzer bekommt ein eigenes Benutzerkonto, und darüber hinaus können Benutzer Mitglied in Gruppen werden. Gruppen sind ein exzellentes Mittel, um Arbeit zu sparen. Anstatt allen Mitarbeitern in der Verwaltung einzeln und von Hand die nötigen Rechte zu verleihen, erzeugen Sie einfach eine Gruppe namens »Verwaltung« und machen alle Verwaltungsleute zu Mitgliedern. Anschließend weisen Sie nur der Gruppe »Verwaltung« die nötigen Rechte zu – und können viele Stunden früher Feierabend machen. Gruppen sind natürlich nicht nur aus Gründen der Arbeitserleichterung erfunden worden. Sie sind auch ein wichtiger Sicherheitsgrundpfeiler. Wer konsequent Gruppen verwendet, behält viel einfacher die Übersicht in der Rechtevergabe.
10.8.1 Welche Gruppen gibt es überhaupt? Lassen Sie Ihre Scripts zuerst herausfinden, welche Gruppen es eigentlich auf Ihrem Computer gibt. Das erledigen Sie so: ’ 10-41.vbs ’ Welchen Namen hat Ihr eigener Computer im Netzwerk? Set network = CreateObject("Wscript.Network") Computer = network.ComputerName ’ Zugang zum Namespace: set computer = GetObject("WinNT://" & computer) computer.filter = Array("Group")
346
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
for each group in computer list = list & group.name & vbCr next MsgBox list, vbInformation
Wieder gilt: Wenn Sie anstelle der lokalen Gruppen eines Computers lieber die globalen Gruppen einer Domäne sehen wollen, dann ersetzen Sie den Computernamen durch den Namen der Domäne.
Bild 10.15: Gruppen auflisten
10.8.2 Welche Eigenschaften bieten Gruppen-Objekte? Lassen Sie sich als nächstes zeigen, welche Eigenschaften Sie bei Gruppen-Objekten erfragen können. Diese Antwort liefert wieder das Schema des Objekts: ’ 10-42.vbs ’ Welchen Namen hat Ihr eigener Computer im Netzwerk? Set network = CreateObject("Wscript.Network") Computer = network.ComputerName ’ herausfinden, welche Eigenschaften Gruppen zu bieten haben ’ am Beispiel der Gruppe "Administratoren" set gruppe = GetObject("WinNT://" & computer & "/"
& "Administratoren,group")
’ Schema erfragen set schema = GetObject(gruppe.Schema) for each property in schema.MandatoryProperties list = list & property & " = " & GetInfo(gruppe, property) & vbCr next for each property in schema.OptionalProperties list = list & property & " = " & GetInfo(gruppe, property) & vbCr next MsgBox list, vbInformation function GetInfo(obj, prop) on error resume next
10.8
Gruppen-Verwaltung
347
GetInfo = obj.Get(prop) if VarType(GetInfo)=8209 then GetInfo = "(ByteArray)" else GetInfo = GetInfo & " als " & TypeName(GetInfo) end if if not err.number=0 then GetInfo = "(undefiniert)" end if end function
Zusätzlich zu diesen Eigenschaften bietet jedes Gruppen-Objekt die folgenden wichtigen Methoden: Methode
Beschreibung
Members IsMember Add Remove
Listet die Mitglieder der Gruppe auf Prüft, ob ein Benutzerkonto Mitglied der Gruppe ist Fügt neues Benutzerkonto in die Gruppe ein Entfernt Benutzerkonto aus der Gruppe
Tab. 10.9: Befehle eines Gruppen-Objekts
Sie werden gleich die passenden Beispielscripte kennenlernen.
10.8.3 In welchen Gruppen ist ein Benutzer Mitglied? Als erste Frage soll Ihr Script klären, in welchen Gruppen ein Benutzer eigentlich zur Zeit Mitglied ist. Dazu verwendet das Script die Methode Groups des User-Objekts: ’ 10-43.vbs Set net = WScript.CreateObject("WScript.Network") local = net.ComputerName ’ get user user = InputBox("Name des Benutzers?") set user = GetObject("WinNT://" & local & "/" & user) list = "Mitglied in diesen Gruppen:" & vbCr for each group in user.Groups list = list & group.name & vbCr next MsgBox list, vbInformation
348
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
Bild 10.16: Herausfinden, in welchen Gruppen jemand Mitglied ist
Umgekehrt können Sie natürlich ebenfalls vorgehen und auflisten lassen, wer Mitglied in einer bestimmten Gruppe ist. Das gelingt mit der Members-Methode des Gruppen-Objekts, die alle Mitgliedskonten auflistet: ’ 10-44.vbs Set network = CreateObject("Wscript.Network") Computer = network.ComputerName name = InputBox("Name der Gruppe?",,"Administratoren") ’ Zugang zum Namespace: set gruppe = GetObject("WinNT://" & computer & "/" & name & ",group") set mitglieder = gruppe.Members list = "Mitglieder in Gruppe """ & name & """:" & vbCr for each konto in mitglieder list = list & konto.name & vbCr next MsgBox list
Oder aber Sie wollen nur prüfen, ob ein bestimmtes Konto Mitglied in einer bestimmten Gruppe ist. Dazu verwenden Sie IsMember: ’ 10-45.vbs Set network = CreateObject("Wscript.Network") Computer = network.ComputerName name = InputBox("Name des Kontos?") ' Prüfen, ob Konto Mitglied in der Gruppe der Administratoren ist: set gruppe = GetObject("WinNT://" & computer _ & "/Administratoren,group") ' Dieser Benutzer soll geprüft werden: set user = GetObject("WinNT://" & computer & "/" _ & name & ",user")
10.8
Gruppen-Verwaltung
349
’ na, Mitglied? istMitglied = gruppe.IsMember(user.ADsPath) ’ Ergebnis ausgeben if istMitglied then MsgBox "Konto """ & name _ & """ ist Mitglied in Gruppe ADMINISTRATOREN" else MsgBox "Konto """ & name _ & """ ist KEIN Mitglied in Gruppe ADMINISTRATOREN" end if
Das Script prüft nicht, ob das Konto, das Sie angeben, tatsächlich existiert. Hier könnten Sie also bei Bedarf das Fehlerhandling nachrüsten. Und so funktioniert die Sache: Da IsMember eine Methode des Gruppen-Objekts ist, öffnen Sie zuerst die Gruppe, in der Sie das Benutzerkonto vermuten. Anschließend wird es etwas tückisch: IsMember verlangt nämlich nicht etwa nach dem Namen des Benutzerkontos, sondern nach dem vollständigen ADsPath. Der einfachste Weg, diesen ADsPath richtig und vollständig zu erhalten, funktioniert so: Sie verbinden sich wie im Script mit dem Benutzerkonto, das Sie prüfen wollen, und verwenden dann die ADsPath-Eigenschaft des resultierenden User-Objekts. Hört sich furchtbar kompliziert an, ist aber eigentlich ganz simpel: Das Script von oben demonstriert, wie das Prinzip in der Praxis funktioniert. IsMember ist zum Beispiel dann nützlich, wenn Sie ein Benutzerkonto einer Gruppe hinzufügen wollen (siehe unten). Sie können dann nämlich bereits im Vorfeld testen, ob der Benutzer nicht vielleicht schon Mitglied in der Gruppe ist.
10.8.4 Eine neue Benutzergruppe anlegen Auf den nächsten Seiten zeige ich Ihnen, wie Sie Benutzerkonten in Gruppen einfügen und auch wieder daraus entfernen. Damit dabei nichts schiefläuft, legen Sie sich am besten zuerst eine Testgruppe an. Schauen Sie also, wie einfach Sie per ADSI neue Gruppen ins Leben rufen: ’ 10-46.vbs Set network = CreateObject("Wscript.Network") Computer = network.ComputerName ’ neue lokale Gruppe anlegen ' Gruppe soll "Testgruppe" heißen neuegruppe = "Testgruppe" set computer = GetObject("WinNT://" & computer & ",computer") ' neues leeres Gruppen-Objekt beschaffen
350
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
set gruppe = computer.Create("group", neuegruppe) ’ Gruppe anlegen gruppe.SetInfo MsgBox "Gruppe """ & neuegruppe & """ wurde angelegt"
Tip: Vorsicht mit Namenskonflikten! Gruppen und Benutzerkonten spielen – was die Namensgebung angeht – in einer gemeinsamen Liga. Das bedeutet: Wenn es bei Ihnen bereits ein Benutzerkonto namens xyz gibt, dann darf unter diesem Namen keine Gruppe angelegt werden – und umgekehrt.
Das Prinzip des Scripts kennen Sie schon: Es öffnet den »Container«, in dem es die neue Gruppe anlegen will, also Ihren lokalen Computer. Mit Create legt es ein neues Gruppen-Objekt an und schreibt es mit SetInfo in die Benutzerdatenbank.
10.8.5 Benutzerkonten in die neue Gruppe einfügen Leere Gruppen nützen Ihnen nur begrenzt, und deshalb schauen Sie sich als nächstes an, wie Sie Benutzerkonten zum Mitglied in Ihrer neuen Gruppe machen. Das nächste Script verfrachtet das Benutzerkonto Administrator in die neue Gruppe Testgruppe. ’ 10-47.vbs Set network = CreateObject("Wscript.Network") Computer = network.ComputerName ' gruppe öffnen, in die Konto eingefügt werden soll set gruppe = GetObject("WinNT://" & computer _ & "/testgruppe,Group") ' Konto hinzufügen gruppe.Add "WinNT://" & computer & "/Administrator" gruppe.SetInfo MsgBox "Konto hinzugefügt."
Mit Ihrem neuen Wissen können Sie ab sofort echte Administrationsarbeit erledigen. In Kapitel 10.7.2 haben Sie gesehen, wie Sie neue Benutzerkonten anlegen. Nun wissen Sie außerdem, wie Sie Konten in Gruppen zum Mitglied machen. Damit können Sie nun – neben vielen anderen Dingen – neue Konten anlegen und sofort zum Mitglied in einer der Standardgruppen machen. Das nächste Script zeigt, wie das funktioniert. Es legt neue Benutzerkonten an und macht diese Konten zu Mitgliedern in der vordefinierten Gruppe der Hauptbenutzer.
10.8
Gruppen-Verwaltung
’ 10-48.vbs ’ neues lokales Benutzerkonto anlegen ’ Details abfragen: username = Frage("Nennen Sie den Benutzernamen des neuen Kontos!") fullname = Frage("Nennen Sie den Klartextnamen des Benutzers!") describe = Frage("Nennen Sie eine Beschreibung des Kontos!") password = Frage("Geben Sie ein Kennwort ein!") ’ Welchen Namen hat Ihr eigener Computer im Netzwerk? Set network = CreateObject("Wscript.Network") cname = network.ComputerName ’ Zugang zum Namespace: set computer = GetObject("WinNT://" & cname) ’ neues Benutzerkonto anlegen: set kontoneu = computer.Create("User", username) ’ wirksam werden lassen: kontoneu.SetInfo ’ Kennwort eintragen: kontoneu.SetPassword password ’ andere Details eintragen: kontoneu.FullName = fullname kontoneu.Description = describe ' Änderungen wirksam werden lassen: kontoneu.SetInfo ' Konto zum Mitglied in Gruppe "Hauptbenutzer" machen pfad = "WinNT://" & cname & "/Hauptbenutzer,group" set gruppe = GetObject(pfad) gruppe.Add kontoneu.ADsPath gruppe.SetInfo MsgBox "Konto wurde erfolgreich mit Status " _ & "HAUPTBENUTZER angelegt!" function Frage(prompt) Frage = InputBox(prompt, "Neues Konto anlegen") if Frage = vbEmpty then MsgBox "Abbruch!", vbCritical WScript.Quit end if end function
351
352
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
10.8.6 Benutzer aus einer Gruppe entfernen Umgekehrt geht es ebenfalls: Wenn Sie das Administrator-Konto wieder aus der Gruppe Testgruppe entfernen wollen, verwenden Sie das nächste Script. Es zeigt, wie Sie das Gegenstück zu Add einsetzen: Remove. ’ 10-50.vbs Set network = CreateObject("Wscript.Network") Computer = network.ComputerName ' gruppe öffnen, aus der Konto entfernt werden soll set gruppe = GetObject("WinNT://" & computer _ & "/testgruppe,Group") ' Konto entfernen gruppe.Remove "WinNT://" & computer & "/Administrator" gruppe.SetInfo MsgBox "Konto-Mitgliedschaft wurde entfernt."
10.8.7 Benutzergruppen löschen Auch ganze Gruppen lassen sich löschen. Wollen Sie zum Beispiel die Gruppe Testgruppe, die Sie oben testweise angelegt hatten, wieder entfernen, dann machen Sie es so: ’ 10-51.vbs Set network = CreateObject("Wscript.Network") Computer = network.ComputerName set computer = GetObject("WinNT://" & computer & ",computer") computer.Delete "group", "Testgruppe"
10.9
Services – Windows-Dienste verwalten
Services sind Programme, die wichtige Dienstleistungen bereitstellen. Der Internet Information Server ist zum Beispiel solch ein Dienst. Er veröffentlicht Ordner und Dateien im Inter- und Intranet, ist also ein Webserver. ADSI kann Dienste via Netzwerk nicht nur auflisten, sondern auch kontrollieren. So können Sie ferngesteuert Dienste starten, pausieren lassen oder beenden. Auch das Startverhalten (automatisch oder von Hand zu starten) legen Sie via ADSI und Script sehr einfach fest.
10.9
Services – Windows-Dienste verwalten
353
10.9.1 Welche Dienste laufen gerade? Services sind immer an einen Computer gebunden. Klar, denn schließlich ist es der Computer, der die Dienste ausführt. Wollen Sie sich also ansehen, welche Dienste es auf einem bestimmten Computer überhaupt gibt, dann setzen Sie dieses Script ein: ’ 10-52.vbs Set network = CreateObject("Wscript.Network") Computer = network.ComputerName set computer = GetObject("WinNT://" & computer & ",computer") computer.filter = Array("Service") for each service in computer list = list & service.name & vbCr next MsgBox list, vbInformation
Huch, ganz schön viele Dienste, die das Script ausspuckt! Fragt sich, welche Dienstleistungen sich hinter den klingonischen Namen verbergen und wie man die Dienste steuert.
10.9.2 Welche Eigenschaften bieten Dienste? Fragen Sie als erstes im Schema nach, welche Eigenschaften ein Dienst zu bieten hat! Das nächste Script zeigt, wie das funktioniert. Es pickt sich wahllos einen beliebigen Dienst heraus und listet dann die Eigenschaften auf: ’ 10-53.vbs Set network = CreateObject("Wscript.Network") cname = network.ComputerName set computer = GetObject("WinNT://" & cname & ",computer") computer.Filter = Array("Service") ’ x-beliebigen Dienst herauspicken for each service in computer set schema = GetObject(service.Schema) exit for next for each property in schema.MandatoryProperties list = list & property & vbCr next for each property in schema.OptionalProperties list = list & property & vbCr next MsgBox list, vbInformation
354
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
Zusätzlich bietet jedes Service-Objekt diese Eigenschaften und Methoden: Eigenschaft/Methode
Bedeutung
Status Continue Pause Start Stop SetPassword
Gegenwärtiger Zustand des Dienstes Dienst fortsetzen Dienst anhalten Dienst starten Dienst stoppen Kennwort für das Dienstkonto setzen
Tab. 10.10: Eigenschaften und Methoden des Service-Objekts
10.9.3 Zustandsbericht über alle Dienste erstellen Zuerst soll Ihr Script mehr über die Dienste in Erfahrung bringen, die auf Ihrem Computer vorhanden sind. Wofür sind die Dienste zuständig, und welche Grundvoraussetzungen müssen erfüllt sein, damit der Dienst funktionieren kann? Das folgende Script beantwortet diese Fragen und nutzt dazu die Eigenschaften des Service-Objekts. ’ 10-54.vbs set fs = CreateObject("Scripting.FileSystemObject") ausgabe = "C:\dienste.htm" set file = fs.CreateTextFile(ausgabe,true) file.WriteLine "
" Set network = CreateObject("Wscript.Network") cname = network.ComputerName set computer = GetObject("WinNT://" & cname & ",computer") computer.Filter = Array("Service") for each service in computer file.write "
" & service.name & "
" file.write "
" & GetInfo(service,"DisplayName") & "
" file.writeline "
" & GetInfo(service,"Dependencies") & "
" next file.Writeline "
" file.close set wshshell = CreateObject("WScript.Shell") wshshell.run "iexplore.exe " & ausgabe function GetInfo(obj, prop)
10.9
Services – Windows-Dienste verwalten
355
on error resume next GetInfo = obj.Get(prop) if VarType(GetInfo)=8209 then GetInfo = "(ByteArray)" else GetInfo = CStr(GetInfo) end if if not err.number=0 then GetInfo = "(undefiniert)" end if end function
Das Ergebnis ist eine höchst aufschlußreiche Liste mit Dienstnamen, in der zweiten Spalte den Klartextnamen und in der dritten Spalte den Abhängigkeiten, also den Namen des Dienstes, auf den der aktuelle Dienst aufsetzt. Wird in der dritten Spalte ein Dienst genannt, dann wissen Sie also, daß der aktuelle Dienst diesen Dienst der dritten Spalte als Grundlage benötigt, damit er funktionieren kann.
Bild 10.17: Zustandsbericht und Klartextnamen aller Dienste – lokal oder remote
Das Script ist ein Universalhilfsmittel. Sie können es mit geringstem Aufwand umdressieren. Wenn Sie zum Beispiel lieber eine Liste mit dem augenblicklichen Status der Dienste sehen wollen, dann verwenden Sie diese Variation:
356
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
’ 10-55.vbs set fs = CreateObject("Scripting.FileSystemObject") ausgabe = "C:\dienste.htm" set file = fs.CreateTextFile(ausgabe,true) file.WriteLine "
" Set network = CreateObject("Wscript.Network") cname = network.ComputerName set computer = GetObject("WinNT://" & cname & ",computer") computer.Filter = Array("Service") for each service in computer file.write "
" & GetInfo(service,"DisplayName") & "
" file.write "
" & service.status & "
" file.writeline "
" & GetInfo(service,"ServiceType") & "
" next file.Writeline "
" file.close set wshshell = CreateObject("WScript.Shell") wshshell.run "iexplore.exe " & ausgabe function GetInfo(obj, prop) on error resume next GetInfo = obj.Get(prop) if VarType(GetInfo)=8209 then GetInfo = "(ByteArray)" else GetInfo = CStr(GetInfo) end if if not err.number=0 then GetInfo = "(undefiniert)" end if end function
Als Ergebnis sehen Sie jetzt, ob ein Dienst gerade läuft oder nicht und was für eine Art von Dienst sich dahinter verbirgt. Dummerweise sind diese Informationen kodiert, und wenn Sie nicht gerade wissen, daß die Codezahl 4 einen gestarteten Dienst markiert, sagen Ihnen die Zahlenwerte nicht viel. Das nächste Script wandelt die Zahlencodes automatisch in Klartextnamen um, so daß auf den ersten Blick klar wird, was ein bestimmter Dienst gerade so treibt:
" Set network = CreateObject("Wscript.Network") cname = network.ComputerName set computer = GetObject("WinNT://" & cname & ",computer") computer.Filter = Array("Service") for each service in computer file.write "
" & GetInfo(service,"DisplayName") _ & "
" file.write "
" & statuscodes(service.status) & "
" typ = GetInfo(service,"ServiceType") typname = "" if (typ and 1)<>0 then typname = "Kernel Driver " end if if (typ and 2)<>0 then typname = typname & "FileSystem Driver " end if if (typ and 16)<>0 then typname = typname & "Own Process " end if if (typ and 32)<>0 then typname = typname & "Shared Process" end if file.writeline "
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
function GetInfo(obj, prop) on error resume next GetInfo = obj.Get(prop) if VarType(GetInfo)=8209 then GetInfo = "(ByteArray)" else GetInfo = CStr(GetInfo) end if if not err.number=0 then GetInfo = "(undefiniert)" end if end function
Sicherheitsinformationen können Sie ebenfalls erfragen.
Bild 10.18: Kleine Änderung, große Wirkung: Status der Dienste ermitteln
Wieder verwendet das Script dasselbe Grundmuster und gibt diesmal das Konto an, unter dem der Dienst ausgeführt wird. In der dritten Spalte verrät die Liste, wie der Dienst gestartet wird oder ob er womöglich zur Zeit deaktiviert ist: ’ 10-57.vbs startkeys = Split("boot,system,auto,manual,disabled",",") set fs = CreateObject("Scripting.FileSystemObject") ausgabe = "C:\dienste.htm"
10.9
Services – Windows-Dienste verwalten
359
set file = fs.CreateTextFile(ausgabe,true) file.WriteLine "
" Set network = CreateObject("Wscript.Network") cname = network.ComputerName set computer = GetObject("WinNT://" & cname & ",computer") computer.Filter = Array("Service") for each service in computer file.write "
" & GetInfo(service,"DisplayName") _ & "
" file.write "
" & GetInfo(service,"ServiceAccountName") _ & "
" file.writeline "
" & startkeys(service.StartType) _ & "
" next file.Writeline "
" file.close set wshshell = CreateObject("WScript.Shell") wshshell.run "iexplore.exe " & ausgabe function GetInfo(obj, prop) on error resume next GetInfo = obj.Get(prop) if VarType(GetInfo)=8209 then GetInfo = "(ByteArray)" else GetInfo = CStr(GetInfo) end if if not err.number=0 then GetInfo = "(undefiniert)" end if end function
Natürlich können Sie auch alle Informationen gemeinsam für einen bestimmten Dienst In Erfahrung bringen. Dazu müssen Sie nur den Namen des Dienstes wissen: ’ 10-58.vbs Set network = CreateObject("Wscript.Network") cname = network.ComputerName dienst = InputBox("Name des Dienstes?",,"Alerter") set service = GetObject("WinNT://" & cname & "/" & dienst & ",service") set schema = GetObject(service.schema)
360
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
for each property in schema.MandatoryProperties list = list & property & " = " & GetInfo(service, property) & vbCr next for each property in schema.OptionalProperties list = list & property & " = " & GetInfo(service, property) & vbCr next MsgBox list, vbInformation function GetInfo(obj, prop) on error resume next GetInfo = obj.Get(prop) if VarType(GetInfo)=8209 then GetInfo = "(ByteArray)" else GetInfo = GetInfo & " als " & TypeName(GetInfo) end if if not err.number=0 then GetInfo = "(undefiniert)" end if end function
Tip: EXE-Datei eines Dienstes finden Besonders interessant ist die Path-Eigenschaft. Sie verrät, welche EXE-Datei eigentlich hinter dem jeweiligen Dienst steckt.
10.9.4 Einen Dienst starten oder beenden Sie können auch selbst handfest ins Geschehen eingreifen! Um einen Dienst manuell zu starten, pausieren zu lassen, oder den Dienst zu beenden, verwenden Sie die folgenden Methoden Start, Stop, Pause und Continue. Das nächste Script läßt den Dienst WinMgmt stoppen. Dieser Dienst ist für die Remote-Verwaltung zuständig (Kapitel 11), und solange der Dienst nicht läuft, kann niemand via Netzwerk Ihren Computer überwachen: ’ 10-59.vbs Set network = CreateObject("Wscript.Network") cname = network.ComputerName set service = GetObject("WinNT://" & cname & "/WinMgmt,service") service.Stop service.SetInfo MsgBox "WinMgmt gestoppt."
10.9
Services – Windows-Dienste verwalten
361
Tip: Dienste können von allein wieder lebendig werden! Selbst wenn Sie einen Dienst wie WinMgmt stoppen, kann es sein, daß dieser Dienst kurze Zeit später wieder von ganz allein munter umherspringt. Der Grund: Je nach Sicherheits- und Registry-Einstellungen können Dienste automatisch gestartet werden, sobald ihre Dienstleistungen von irgend jemandem angefordert werden.
Wollen Sie einen anderen Dienst stoppen, dann ersetzen Sie einfach im Script WinMgmt durch den Kurznamen des gewünschten Dienstes. Denken Sie daran: Obwohl dieses Script automatisch die Dienste Ihres lokalen Computers verwaltet, könnten Sie auf demselben Weg auch Dienste auf jedem anderen Netzwerkcomputer verwalten – vorausgesetzt, Sie haben die nötigen Berechtigungen. Um den Dienst wieder zu starten, verwenden Sie Start: ’ 10-60.vbs Set network = CreateObject("Wscript.Network") cname = network.ComputerName set service = GetObject("WinNT://" & cname & "/WinMgmt,service") service.Start service.SetInfo MsgBox "WinMgmt gestartet."
10.9.5 Das Startverhalten von Diensten ändern Auch das generelle Startverhalten eines Dienstes kann geändert werden. Wenn Sie zum Beispiel wollen, daß der WinMgmt-Dienst nur manuell gestartet werden kann, aber nicht automatisch beim Windows-Start mitstartet, dann verwenden Sie dieses Script: ’ 10-61.vbs Set network = CreateObject("Wscript.Network") cname = network.ComputerName set service = GetObject("WinNT://" & cname & "/WinMgmt,service") service.Put "StartType", 3 service.SetInfo MsgBox "WinMgmt: manueller Start"
Um den Dienst wieder auf automatischen Start umzuschalten (die Vorgabe), verwenden Sie dieses Script: ’ 10-62.vbs Set network = CreateObject("Wscript.Network") cname = network.ComputerName set service = GetObject("WinNT://" & cname & "/WinMgmt,service") service.Put "StartType", 2 service.SetInfo MsgBox "WinMgmt: Autostart"
362
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
Wie Sie sehen, sind die Scripts weitgehend identisch und verwenden lediglich die unterschiedlichen Startcodes: Konstante
Beschreibung
0 1 2 3 4
Automatischer Start beim Booten Automatischer Start bei der Betriebssystem-Initialisierung Automatischer Start vom Service Control Manager Manueller Start Dienst ist gesperrt
Tab. 10.11: Startvarianten für NT/2000-Dienste
Besonders interessant ist dabei Code 4: Mit diesem Code sperren Sie einen Dienst. Er kann dann auf keinen Fall verwendet werden. Die RAS-Dienste für den Remote-Zugriff sind beispielsweise anfangs auf diese Art geschützt und müssen erst freigeschaltet werden, indem Sie den Dienst zum Beispiel mit dem Script von oben auf automatischen oder manuellen Start umschalten.
10.10 Freigegebene Ordner verwalten Ein Netzwerkanschluß macht Ihren Computer noch lange nicht zum gläsernen Computer. Erst wenn Sie Ordner freigeben, können andere den Inhalt via Netzwerk nutzen. Ein wichtiges Arbeitsfeld Ihrer Scripts ist deshalb, freigegebene Ordner zu verwalten. Lassen Sie sich zum Beispiel auflisten, welche Ordner bei Ihnen »gläsern« sind, ziehen Sie Freigaben zurück, und schauen Sie nach, wer gerade (und seit wann) mit welchen Ihrer Daten hantiert.
10.10.1 Alle freigegebenen Ordner auflisten Zuerst soll Ihr Script herausfinden, welche Ordnerfreigaben es auf Ihrem Computer überhaupt gibt. Ordnerfreigaben werden vom LanmanServer-Objekt des Computers verwaltet. Das nächste Script listet alle Freigaben auf: ’ 10-63.vbs set fs = CreateObject("Scripting.FileSystemObject") ausgabe = "C:\shares.htm" set file = fs.CreateTextFile(ausgabe,true) file.WriteLine "
" Set network = CreateObject("Wscript.Network") cname = network.ComputerName set lanman = GetObject("WinNT://" & cname & "/LanmanServer") for each share in lanman
Das Ergebnis läßt sich allerdings noch kräftig optimieren. Die Angabe des HostComputers ist zum Beispiel überflüssig.
Bild 10.19: Alle freigegebenen Ordner und viele wichtige Detailinfos
Hier eine optimierte Fassung: ’ 10-64.vbs set fs = CreateObject("Scripting.FileSystemObject") ausgabe = "C:\shares.htm" set file = fs.CreateTextFile(ausgabe,true) file.WriteLine "
"
364
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
Set network = CreateObject("Wscript.Network") cname = network.ComputerName set lanman = GetObject("WinNT://" & cname & "/LanmanServer") for each share in lanman ’ Infos holen: on error resume next name = share.name pfad = share.path limitusers = share.MaxUserCount if limitusers = -1 then limit = "beliebig viele" else limit = "max. " & limitusers & " Zugriffe" end if counter = share.CurrentUserCount desc = share.Description ’ ausgeben, wenn kein Fehler passiert ist if err.number=0 then on error goto 0 file.write "
Tip: Versteckte Freigaben bleiben unsichtbar Administrative Freigaben (wie zum Beispiel C$) werden von ADSI nicht aufgelistet.
10.10 Freigegebene Ordner verwalten
365
10.10.2 Einen neuen freigegebenen Ordner anlegen Erinnern Sie sich noch an die Methoden des Scripting.FileSystemObject? Mit CreateFolder konnten Sie dort einen neuen lokalen Ordner anlegen, und mit ADSI läßt sich dieser Ordner nun sogar freigeben. Das nächste Script legt automatisch einen Ordner an und gibt ihn im Netzwerk frei. Denken Sie allerdings daran, daß der neue freigegebene Ordner anfangs für jedermann voll zugänglich ist und meist zusätzlich mit Sicherheitsattributen ausgestattet werden muß. ’ 10-65.vbs ’ neuen freigegebenen Ordner anlegen neu = "C:\MEINE FREIGABE" netzname = "Scriptfreigabe" beschreibung = "Testfreigabe, per Script erstellt" ’ Ordner anlegen, falls erforderlich set fs = CreateObject("Scripting.FileSystemObject") if not fs.FolderExists(neu) then ' bei verschachtelten Ordnern muß der übergeordnete ' Ordner bereits bestehen! fs.CreateFolder neu end if ' Ordner freigeben Set network = CreateObject("Wscript.Network") cname = network.ComputerName set lanman = GetObject("WinNT://" & cname & "/LanmanServer") on error resume next set shareneu = lanman.Create("fileshare", netzname) if not err.number=0 then MsgBox "Fehler, Freigabe existiert womöglich schon." WScript.Quit end if on error goto 0 shareneu.Path = neu shareneu.Description = beschreibung shareneu.MaxUserCount = -1 ' unlimitierte Verbindungen ' anlegen shareneu.SetInfo MsgBox "Freigabe eingerichtet!"
Tatsächlich: Dieses Script legt automatisch einen neuen Ordner an und gibt ihn im Netzwerk frei.
366
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
10.10.3 Eine Freigabe rückgängig machen Freigaben lassen sich umgekehrt auch scriptgesteuert zurücknehmen. Oben haben Sie ein neues Objekt vom Typ FileShare angelegt und in den Container LanmanServer gespeichert. Dieses Objekt ist die Freigabe, und um die Freigabe ungeschehen zu machen, brauchen Sie das Objekt nur zu löschen. Diese Löschaktion betrifft lediglich die Freigabe. Der zugrundeliegende Ordner bleibt natürlich unberührt. Wollen Sie auch den Ordner löschen, dann schauen Sie sich die Methoden des Scripting.FileSystemObject an. So entfernen Sie die Freigabe, die Sie gerade angelegt haben: ’ 10-66.vbs netzname = "Scriptfreigabe" ’ Zugriff auf LanmanServer herstellen Set network = CreateObject("Wscript.Network") cname = network.ComputerName set lanman = GetObject("WinNT://" & cname & "/LanmanServer") ' Freigabeobjekt löschen on error resume next lanman.Delete "fileshare", netzname if not err.number=0 then MsgBox "Fehler, Freigabe existiert womöglich " _ & "gar nicht (mehr): 0x" & hex(err) WScript.Quit end if on error goto 0 MsgBox "Freigabe entfernt!"
10.10.4 Schauen, wer welche Freigaben zur Zeit nutzt Das LanmanServer-Objekt beschäftigt noch zwei weitere Unterobjekte, die ebenfalls interessante Informationen liefern. Das Session- und das Resource-Objekt listen penibel auf, wer im Augenblick welche freigegebenen Ressourcen nutzt. Glauben Sie nicht? Ausprobieren! ’ 10-67.vbs set fs = CreateObject("Scripting.FileSystemObject") ausgabe = "C:\snapshot.htm" set file = fs.CreateTextFile(ausgabe,true)
10.10 Freigegebene Ordner verwalten
367
file.WriteLine "
" ’ auf LanmanServer zugreifen: Set network = CreateObject("Wscript.Network") cname = network.ComputerName set lanman = GetObject("WinNT://" & cname & "/LanmanServer") file.write "
Name
User
Computer
" file.write "
Connect
Idle
" for each session in lanman.Sessions ’ Infos holen: on error resume next name = session.name user = session.user computer = session.computer ct = session.ConnectTime it = session.IdleTime ’ ausgeben, wenn kein Fehler passiert ist if err.number=0 then on error goto 0 file.write "
Dieses Script listet Ihnen alle Zugriffe auf, die von außen auf Ihre Freigaben erfolgen. ConnectTime und IdleTime listen sekundengenau auf, wie lange die Verbindung besteht und wie lange (Idle) die Verbindung ungenutzt ist. Das Resource-Objekt liefert detailliertere Informationen: Hier sehen Sie, welcher Benutzer auf welche Dateien und Ordner zugreift: ’ 10-68.vbs set fs = CreateObject("Scripting.FileSystemObject") ausgabe = "C:\snapshot.htm"
368
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
set file = fs.CreateTextFile(ausgabe,true) file.WriteLine "
" ’ auf LanmanServer zugreifen: Set network = CreateObject("Wscript.Network") cname = network.ComputerName set lanman = GetObject("WinNT://" & cname & "/LanmanServer") file.write "
Name
User
Path
" file.write "
Lock Count
" for each resource in lanman.Resources ’ Infos holen: on error resume next name = resource.name user = resource.user path = resource.Path lc = resource.LockCount ’ ausgeben, wenn kein Fehler passiert ist if err.number=0 then on error goto 0 file.write "
10.11 Netzwerkdrucker – Druckaufträge managen Auch Drucker können im Netzwerk freigegeben und gemeinsam via Netzwerk genutzt werden. Und auch hier kann ADSI mächtig helfen. Mit ADSI finden Sie auf einen Schlag heraus, welche Drucker zur Zeit online sind. Sie können sich die Druckerauslastung ansehen und sogar einzelne Druckaufträge in der Warteschlange nach vorne mogeln. Dinge also, für die Sie an jeder Supermarktkasse gesteinigt würden.
10.11 Netzwerkdrucker – Druckaufträge managen
369
10.11.1 Welche Drucker stehen im Netzwerk zur Verfügung? Welche Drucker stehen in Ihrem Netzwerk eigentlich zur Verfügung? Anstatt sich auf Listen verlassen zu müssen, setzen Sie doch einfach ein ADSI-Script ein! Es findet automatisch alle Drucker, die gerade online sind. Dazu durchsucht es alle Domänen und Arbeitsgruppen und schaut nach, ob die gefundenen Computer Objekte vom Typ PrintQueue anzubieten haben: ’ 10-69.vbs set adsi = GetObject("WinNT:") ' alle Domänen finden for each domain in adsi domname = domain.name ' alle Computer in der Domäne auflisten ' Inhalt beschränken auf Elemente, ' die vom Typ "Computer" sind domain.Filter = Array("Computer") ' alle Computer durchsuchen for each computer in domain compuname = computer.name ' Ergebnis nur auf Netzwerkdrucker beschränken computer.Filter = Array("PrintQueue") for each printer in computer list = list & domname & "/" & compuname _ & "/" & printer.name & vbCr next next next MsgBox list, vbInformation
10.11.2 Die Eigenschaften der Drucker-Warteschlangen Wie schon bei den vorangegangenen Objekten lohnt es sich auch bei Netzwerkdruckern, alle Eigenschaften sichtbar zu machen, die dieses Objekt unterstützt. Dazu muß allerdings mindestens ein Netzwerkdrucker tatsächlich online sein. Das nächste Script schnappt sich den ersten verfügbaren Netzwerkdrucker und listet dann die Eigenschaften eines PrintQueue-Objekts auf: ’ 10-70.vbs set adsi = GetObject("WinNT:") ' alle Domänen finden
370
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
for each domain in adsi domname = domain.name domain.Filter = Array("Computer") for each computer in domain compuname = computer.name computer.Filter = Array("PrintQueue") for each printer in computer set testprinter = GetObject(printer.ADsPath) gefunden = true exit for next next if gefunden then exit for next ’ Schema des Objekts erfragen set schema = GetObject(testprinter.Schema) for each property in schema.MandatoryProperties list = list & property & " = " & _ GetInfo(testprinter, property) & vbCr next for each property in schema.OptionalProperties list = list & property & " = " & _ GetInfo(testprinter, property) & vbCr next MsgBox list, vbInformation function GetInfo(obj, prop) on error resume next GetInfo = obj.Get(prop) if VarType(GetInfo)=8209 then GetInfo = "(ByteArray)" else GetInfo = GetInfo & " als " & TypeName(GetInfo) end if if not err.number=0 then GetInfo = "(undefiniert)" end if end function
Zusätzlich zu den Eigenschaften eines Druckers bietet das PrintQueue-Objekt diese interessanten Methoden:
10.11 Netzwerkdrucker – Druckaufträge managen
Methode
Beschreibung
Status Pause Resume Purge
Druckerstatus Drucker anhalten Drucker fortsetzen Alle Druckjobs abbrechen und löschen
371
Tab. 10.12: Befehle des PrintQueue-Objekts
Das vorangegangene Script mußte einen relativ großen Aufwand treiben, weil es sich automatisch irgendeinen Drucker aus dem Netzwerk herausgepickt hat. Wenn Sie einen ganz bestimmten Drucker ansprechen wollen, geht es sehr viel einfacher. Sie brauchen nur den korrekten ADSI-Pfad zum Drucker anzugeben. Ersetzen Sie in den folgenden Scripts also den ADSI-Pfad zu Ihrem Drucker. Möchten Sie beispielsweise erfahren, an welchem Port der Drucker hängt, dann genügt dieses Script: ’ 10-71.vbs
set drucker = _ GetObject("WinNT://ARBEITSGRUPPE/SCENIC1/LexmarkColor") MsgBox "Port: " & drucker.Get("PrintDevices")
Auf die gleiche Weise können Sie auch all die übrigen Eigenschaften abfragen, die Ihnen das vorangegangene Script aufgelistet hat. Denken Sie nur an eins: Wenn eine Eigenschaft keinen Wert enthält, kassieren Sie einen Fehler. Oben haben Sie bereits mehrere Methoden kennengelernt, solche Fehler abzufangen und zu entschärfen.
10.11.3 Wie geht es meinem Drucker? Ein Statusreport Die Status-Eigenschaft des Druckers liefert Ihnen eine Schnelldiagnose: Funktioniert der Drucker einwandfrei, oder sind Probleme aufgetreten? Gleich wissen Sie es ganz genau: ’ 10-72.vbs set dict dict.add dict.add dict.add dict.add dict.add dict.add dict.add dict.add dict.add dict.add
= CreateObject("Scripting.Dictionary") 0, "alles in Ordnung!" 1, "Drucker pausiert" 2, "Drucker löscht Auftrag" 3, "Druckerfehler!" 4, "Papierstau." 5, "Kein Papier mehr" 6, "Papier von Hand zuführen!" 7, "Problem mit Papiereinzug" 8, "Drucker ist offline" &H100, "Drucker I/O aktiv"
372
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
set drucker = GetObject("WinNT://ARBEITSGRUPPE/SCENIC1/LexmarkColor") MsgBox dict(drucker.Status)
Welche Statusinformationen Ihr Drucker allerdings wirklich liefert, hängt von seiner Anbindung ab. Hier ein kleines Szenario: ’ 10-73.vbs set drucker = GetObject("WinNT://ARBEITSGRUPPE/SCENIC1/LexmarkColor") MsgBox drucker.Status drucker.Pause MsgBox drucker.Status drucker.Resume MsgBox drucker.Status
Tip: Bitfelder machen das Leben schwer – trallali Genau genommen liegen die Fehlermeldungen als Bits vor. Das macht die Sache nicht einfach, denn erstens können mehrere Bits gleichzeitig gesetzt sein (dann funktioniert die Abfrage eines festen Zahlenwertes nicht mehr), und zweitens verwenden die Fehlermeldungen teils mehrere Bits auf einmal. Die Fehlermeldung »Kein Papier mehr« mit Code 5 benutzt die Bits 0 und 2.
10.11.4 Die Aufträge eines Druckers sichtbar machen ADSI kann sogar herausfinden, welche Aufträge ein Drucker gerade abarbeitet. Das folgende Script zeigt, wie das bewerkstelligt wird:
set fs = CreateObject("Scripting.FileSystemObject") ausgabe = "C:\snapshot.htm" set file = fs.CreateTextFile(ausgabe,true) file.WriteLine "
" ’ auf Druckerwarteschlange zugreifen: Set network = CreateObject("Wscript.Network") cname = network.ComputerName ’ hier eigenen Druckerpfad angeben: set queue = _ GetObject("WinNT://ARBEITSGRUPPE/SCENIC1/LexmarkColor")
file.write "
Beschreibung
User
Pos.
" file.write "
Seiten gedruckt
" for each printjob in queue.printjobs ’ Infos holen: on error resume next desc = printjob.description user = printjob.user position = printjob.Position pages = printjob.PagesPrinted ’ ausgeben, wenn kein Fehler passiert ist if err.number=0 then on error goto 0 file.write "
Kapitel 10: ADSI: Netzwerk und Benutzerkonten verwalten
Dies sind längst nicht alle Informationen, die Sie über einen Druckauftrag in Erfahrung bringen können. Hier die komplette Liste: Name
Beschreibung
HostPrintQueue User UserPath TimeSubmitted TotalPages Size Description Priority StartTime UntilTime Notify NotifyPath TimeElapsed PagesPrinted Position
Pfadname der Druckerwarteschlange Benutzer, der den Druckjob in Auftrag gegeben hat ADS-Pfad des Benutzers Auftragszeit Seitenanzahl gesamt Größe in Byte Beschreibung Priorität Frühester Zeitpunkt, zu dem gedruckt werden soll Spätester Zeitpunkt, zu dem gedruckt werden soll Benutzer benachrichtigen, wenn Druck erledigt ist ADS-Pfad des Benutzers, der benachrichtigt werden soll Sekunden seit Druckbeginn Gedruckte Seiten Position des Auftrags in Druckerwarteschlange
Tab. 10.13: Informationen über Druckaufträge
10.11.5 Druckerwarteschlange komplett löschen Über Purge läßt sich ferngesteuert die gesamte Druckerwarteschlange eines Druckers löschen. Alle noch nicht gedruckten Aufträge gehen dabei verloren. So wird’s gemacht: ’ 10-75.vbs ’ auf Druckerwarteschlange zugreifen: Set network = CreateObject("Wscript.Network") cname = network.ComputerName set queue = _ GetObject("WinNT://ARBEITSGRUPPE/SCENIC1/LexmarkColor") queue.Purge MsgBox "Alle Aufträge gelöscht!"
10.11.6 Priorität einzelner Druckaufträge ändern Einige der Eigenschaften des PrintJob-Objekts sind veränderbar. So können Sie zum Beispiel mit der Eigenschaft Priority die Dringlichkeit des Druckauftrags ändern – und damit die Reihenfolge, in der Druckaufträge gedruckt werden. Das nächste Script setzt die Aufträge eines beliebigen Benutzers auf den höchsten Wert (99). Alle Aufträge dieses Benutzers werden also absolut vorrangig abgearbeitet.
10.11 Netzwerkdrucker – Druckaufträge managen ’ 10-76.vbs ’ auf Druckerwarteschlange zugreifen: Set network = CreateObject("Wscript.Network") cname = network.ComputerName username = InputBox("Geben Sie den Benutzernamen ein!") set queue = GetObject("WinNT://ARBEITSGRUPPE/SCENIC1/LexmarkColor") counter = 0 for each printjob in queue.printjobs ’ Infos holen: if lcase(printjob.user) = lcase(username) then if printjob.Priority<99 then printjob.Priority = 99 counter = counter + 1 printjob.SetInfo end if end if next MsgBox counter & " Aufträge hochgestuft."
375
377
11 WMI: Computerverwaltung lokal und quer durchs Netz
WMI (Windows Management Instrumentation) ist der Realo-Flügel der Fundi-Bewegung WBEM. WBEM heißt: Web Based Enterprise Management, und dahinter stecken ungeahnte Möglichkeiten! Selbst wenn Ihnen all diese Abkürzungen zuwider sind, empfehle ich Ihnen, unbedingt weiterzulesen. Die Möglichkeiten, die Ihre Scripts durch WMI erhalten, sind nämlich eine wahre Sensation.
11.1
WMI und WBEM: Ihre ultimative Allzweckwaffe
Der Ursprung von WBEM und WMI waren vermutlich wundgelaufene Füße eines Netzwerkadministrators. Wer mehr als nur einen Computer im Einsatz hat, kennt die Tagesmärsche, die nötig sind, um auf allen Maschinen nach dem Rechten zu sehen. Genau hier setzt WBEM ein. Es ist eine Strategie, um Firmennetzwerke aus der gemütlichen Umgebung des eigenen Ledersessels heraus in allen nur erdenklichen Arten zu managen. Krankenkassen werden dies zwar nicht gutheißen, aber dank WBEM können Netzwerkadministratoren ihren Bewegungsdrang auf ein Minimum reduzieren. Selbst wenn Sie gar kein Netzwerk verwenden, ist WBEM interessant. Dann pfeifen Sie eben auf die Möglichkeit, ferngesteuert fremde Computer zu verwalten, und nutzen die Möglichkeiten nur für Ihren eigenen lokalen Computer. Sie sehen: WBEM hat für alle etwas Nützliches zu bieten.
11.1.1 So geht’s: Mit WMI fremde Computer untersuchen WMI ist die tatsächliche Umsetzung der WBEM-Idee. Hinter WMI steckt ein Programm namens WinMgmt.exe. Dieses Programm ist sozusagen das aufmerkam lauschende Ohr, in das hinein Sie Ihre Wünsche flüstern. Wie nützlich die Sache ist, kann jeder, der Windows 2000 einsetzt, sofort ausprobieren (alle anderen Windows-Benutzer brauchen nur einen weiteren Extraschritt, auf den ich gleich detailliert eingehe). Die nächsten Scripts sind als Appetitanreger gedacht, niemand erwartet, daß Sie sie sofort verstehen: ’ 11-1.vbs ’ Zugang zu WMI set obj = CreateObject("WBemScripting.SWbemLocator") ’ mit lokalem Computer verbinden
378
Kapitel 11: WMI: Computerverwaltung lokal und quer durchs Netz
set service = obj.ConnectServer(,"root/cimv2") ’ zeig mal alle Grafikkarten query = "Select * from win32_VideoController" set allegrafikkarten = service.ExecQuery(query) list = "RAM-DACs auf Grafikkarte:" & vbCr for each grafikkarte in allegrafikkarten list = list & grafikkarte.AdapterDACType & vbCr next MsgBox list
Dieses kleine Script sucht alle Grafikkarten in Ihrem lokalen Computer und findet heraus, was für ein RAM-DAC-Baustein auf der Karte seinen Dienst verrichtet.
Bild 11.1: RAM-DAC-Baustein Ihrer Grafikkarte(n) identifizieren
Natürlich könnten Sie auch ganz andere Dinge abfragen, zum Beispiel, wie viel Speicher Ihre Grafikkarten besitzen: ’ 11-2.vbs ’ Zugang zu WMI set obj = CreateObject("WBemScripting.SWbemLocator") ’ mit lokalem Computer verbinden set service = obj.ConnectServer(,"root/cimv2") ’ zeig mal alle Grafikkarten query = "Select * from win32_VideoController" set allegrafikkarten = service.ExecQuery(query) list = "Speicher auf Grafikkarte:" & vbCr for each grafikkarte in allegrafikkarten bytes = grafikkarte.AdapterRAM speicher = FormatNumber(bytes/1024^2) & " MB" list = list & speicher & vbCr next MsgBox list
Anstelle von AdapterDACType fragt das Script diesmal nach AdapterRAM, und Sie können sich vorstellen, wie WMI nicht nur viele andere Details Ihrer Grafikkarten auslotet, sondern auch ganz andere Gerätschaften (und sogar laufende Programme) steuern kann.
11.2
WMI startklar machen: So läuft die Sache rund
379
Bild 11.2: Flexibel – ebenso leicht Grafikspeicher auf der Grafikkarte bestimmen
Richtig mächtig wird die Sache, wenn Sie die Netzwerkfähigkeiten von WMI entdecken. Ob Sie nämlich Ihre eigene Grafikkarte untersuchen wollen oder die des Arbeitsplatzes in der 5. Etage rechts, spielt keine Rolle. WMI kann quer über das Netzwerk jeden Computer ansprechen und ausfragen, vorausgesetzt, Sie haben die nötige Berechtigung. So sähe das Grafikkarten-Speicher-Script aus, wenn Sie damit einen Netzwerkrechner namens \\SERVER1 ansprechen wollen: ’ 11-3.vbs ’ Zugang zu WMI set obj = CreateObject("WBemScripting.SWbemLocator") ’ mit lokalem Computer verbinden set service = obj.ConnectServer("server1","root/cimv2") ’ zeig mal alle Grafikkarten query = "Select * from win32_VideoController" set allegrafikkarten = service.ExecQuery(query) list = "Speicher auf Grafikkarte:" & vbCr for each grafikkarte in allegrafikkarten bytes = grafikkarte.AdapterRAM speicher = FormatNumber(bytes/1024^2) & " MB" list = list & speicher & vbCr next MsgBox list
11.2
WMI startklar machen: So läuft die Sache rund
WMI ist eine relativ neue Erfindung, die erst bei Windows 2000 direkt im Betriebssystem verankert ist. Glücklicherweise aber können Sie WMI auch bei Windows NT und sogar bei Windows 95/98 einsetzen. WMI gibt’s nämlich kostenlos zum Nachrüsten, auch wenn diese Tatsache fast nirgends bekannt ist. Wenn Sie also nicht bereits mit Windows 2000 arbeiten, dann lesen Sie in diesem Kapitel, wie Sie Ihren Computer WMI-fähig machen. WMI-fähig heißt:
Sie können von Ihrem Computer aus andere Computer untersuchen und steuern
Andere Computer können Ihren Computer untersuchen und steuern
380
Kapitel 11: WMI: Computerverwaltung lokal und quer durchs Netz
Keine Sorge: WMI bedeutet nicht Anarchie. WMI schafft nur die grundsätzliche Infrastruktur, um echte Fernwartung Wirklichkeit werden zu lassen. Bevor jemand bei Ihnen tatsächlich via WMI Informationen abfragt, müssen Sie zuerst Ihr OK geben. Tip: WMI und Sicherheit Bei Windows NT und 2000 ist Sicherheit kein Problem: Hier fügt sich WMI nahtlos in das bestehende Sicherheitskonzept ein, und nur wenn Sie die richtigen Berechtigungen haben, kommen Sie an die gewünschten Informationen heran. Anders sieht das bei Windows 9x aus. Hier gelten alle lokalen Benutzer als »Administratoren« und dürfen lokal alles tun, was sie wollen. Für den ferngesteuerten Zugriff auf NT/2000-Computer gilt allerdings: Hier sind Windows 9x-Benutzer ungern gesehen und bekommen entweder gar keinen Zugriff, oder es muß im Script der Benutzername und das Kennwort eines entsprechenden NT-Benutzerkontos angegeben werden. Ausweiskontrolle also.
11.2.1 Der Fahrplan: So werden Sie zum WMI-Profi WMI-Scripts sehen zwar auf den ersten Blick etwas sonderbar aus, aber ich kann Ihnen versprechen: Schon in zwei Stunden sind Sie voll im Bilde. So sieht Ihr persönlicher WMI-Fahrplan aus:
Lernen Sie zuerst kennen, wie WMI auf Ihrem Computer aktiviert wird.
Anschließend zeige ich Ihnen, wie Sie auch auf Windows 95/98 WMI remote über das Netzwerk einsetzen.
Danach verrate ich Ihnen, wie die generelle Architektur von WMI aussieht und welche Möglichkeiten Sie haben, WMI-Informationen abzufragen.
Lernen Sie dann Tricks kennen, die Ihnen alle verfügbaren Informationen übersichtlich auflisten, damit Sie wissen, welche Informationen WMI eigentlich zu bieten hat.
Zum Schluß finden Sie zahlreiche Beispiele aus den verschiedensten Bereichen, mit denen Sie Programme ferngesteuert starten und beenden und viele weitere verblüffende Dinge bewerkstelligen können.
11.2.2 WMI nachrüsten Der erste Schritt in Richtung WMI ist das Download des WMI-Pakets. Nur bei Windows 2000 ist WMI schon fix und fertig installiert, bei allen anderen Windows-Versionen laden Sie sich das kostenlose WMI-Paket von Microsoft herunter. Das gibt es hier: msdn.microsoft.com/downloads/ sdks/wmi/eula.asp. Auf dieser Seite finden Sie die Download-Links für die WMI-Pakete. Microsoft stellt separate Pakete für Windows 9x und Windows NT (ab Service Pack 4) zum Download bereit, achten Sie also darauf, daß Sie das richtige Paket erwischen! Die Pakete sind rund 3 MB groß. Zur Zeit bietet Microsoft folgende Dateien an:
11.2
WMI9X.EXE WMINT4.EXE
WMI startklar machen: So läuft die Sache rund
381
3,1 MB, Paket für Windows 95 und Windows 98 (bei Win95 ist OSR2 oder DCOMUpdate erforderlich) 3,8 MB, Paket für Windows NT 4.0 (Service Pack 4 oder höher erforderlich)
Tab. 11.1: Kostenlose WMI-Nachrüstpakete für Windows 9x und NT
Anschließend starten Sie die heruntergeladene EXE-Datei. Der Installationsassistent springt hervor und beginnt mit der Installation. Dabei begrüßt er Sie zuerst mit einer deftigen Warnung: WMI läßt sich zwar nachrüsten, aber nicht mehr entfernen! Der Grund: WMI frischt eine Reihe von Systemdateien auf, und dieser Schritt kann nicht ungeschehen gemacht werden. Trotzdem haben Sie auch nachträglich immer die Wahl, ob Sie WMI nutzen wollen oder nicht. Der Installationsprozeß an sich verläuft zweistufig: Zuerst werden die sogenannten Kernkomponenten installiert. Anschließend baut der Assistent das »Repository« auf. Das ist die Ablage mit all den Detailinformationen, die WMI Ihnen anschließend verraten kann. Der gesamte Prozeß dauert einige Minuten, und anschließend muß das System neu gestartet werden.
11.2.3 Der erste Test: Funktioniert WMI? Sobald WMI installiert und das System neu gestartet ist, wird es spannend: Funktioniert WMI wie geplant? Finden Sie es heraus! WMI wird über das Tool WBEMCNTL.EXE konfiguriert. Suchen Sie sich das Tool heraus, und starten Sie es: 1. Wählen Sie im Startmenü Suchen und Dateien/Ordner. Dann suchen Sie nach WBEMCNTL. EXE. Stellen Sie im Feld Suchen in die Festplatte ein, auf der Windows installiert ist. 2. Sobald das Programm gefunden ist, starten Sie es per Klick. Das Programm verbindet sich mit dem WMI-Dienst. Wenn WMI bei Ihnen korrekt installiert ist, meldet das Programm Erfolg und liefert einige Eckdaten. Auf Windows 2000-Rechnern gibt es dieses Steuerelement auch. Dazu starten Sie mit MMC [Enter] eine leere Management-Console und fügen das WMI-Steuerung-Modul hinzu. Anschließend klicken Sie mit der rechten Maustaste auf den einzigen Eintrag, den die MMC mit der WMI-Steuerung zu bieten hat, und wählen Eigenschaften. Tip: WMI und Registry-Fehler Was ist, wenn WMI bei Ihnen nach der Installation nicht funktioniert? Wieso könnte WMI Fehler melden? Ist WMI etwa wackelig? Keineswegs! In der Regel funktioniert WMI sofort und zuverlässig. Allerdings speichert WMI wichtige Informationen in der Registry, und wenn Sie die Registry von Hand verändern oder im Rahmen einer Notbehandlung eine ältere Registry-Version reaktivieren, dann kann WMI häufig nicht mehr arbeiten. Installieren Sie WMI in solchen Fällen neu, damit die Registry-Schlüssel repariert werden. Die Voraussetzungen für WMI sind bei Windows NT das Service Pack 4 und höher. Bei Windows 95 ist mindestens die OSR 2.1-Version nötig. Bei Windows 98 funktioniert WMI sofort, und bei Windows 2000 ist es bereits installiert.
382
Kapitel 11: WMI: Computerverwaltung lokal und quer durchs Netz
Bild 11.3: Das WMI-Cockpit regelt Sicherheit und Standardeinstellungen
Nachdem Sie klargestellt haben, daß WMI bei Ihnen läuft, wird es Zeit für Ihr erstes Testscript. Das könnte so aussehen: ’ 11-4.vbs set collection = _ GetObject("winmgmts:").InstancesOf("Win32_OperatingSystem") for each os in collection MsgBox "Seriennummer: " & os.SerialNumber next
Dieses Miniscript listet die Seriennummer Ihrer Windows-Version auf.
Bild 11.4: Seriennummer der Windows-Installation finden
11.2.4 Ferngesteuert auf WMI zugreifen Bis jetzt haben Sie WMI lokal eingesetzt. Sie haben also die Seriennummer der Windows-Version Ihres eigenen Computers herausgefunden. WMI kann aber wesentlich mehr: Auf Wunsch fragt Ihr Script auch die Seriennummer jeder anderen Windows-Installation in Ihrem Netzwerk ab.
11.2
WMI startklar machen: So läuft die Sache rund
383
Dazu ändern Sie das Script nur geringfügig. Wollen Sie zum Beispiel die Seriennummer der Windows-Version auf dem Netzwerkrechner \\tob in Erfahrung bringen, dann verwenden Sie dieses Script: ’ 11-5.vbs set collection = _ GetObject("winmgmts:\\tob\root\cimv2").InstancesOf("Win32_OperatingSystem") for each os in collection MsgBox "Seriennummer: " & os.SerialNumber next
Geben Sie also keinen Servernamen an, dann wird der lokale Rechner angesprochen. Geben Sie einen Servernamen an, dann hängen Sie an den Servernamen stets \root\cimv2 an. Das ist der Pfad zu den WMI-Datensammlungen, und dieser Pfad lautet bei allen WMI-Installationen gleich. Damit Sie einen fremden Computer via Netzwerk abfragen können, muß auf diesem Rechner selbstverständlich ebenfalls WMI installiert sein. Außerdem benötigen Sie die passenden Berechtigungen. Von Windows 9x aus können Sie deshalb nicht auf Windows NT/2000-Rechner zugreifen, es sei denn, Sie geben die entsprechenden Berechtigungsinformationen mit an. Dazu gleich mehr.
11.2.5 Windows 95/98 – WMI total trotz eingebauter Sperren Windows 95 und Windows 98 spielen beim Remote-Zugriff anfangs leider nicht mit. Hier können Sie zwar mit WMI-Scripts die lokalen Werte Ihres Computers erfragen, aber das war es auch schon. Sie können weder auf fremde Computer zugreifen, noch kann der Windows 9x-Computer durch andere Rechner von außen gesteuert werden. Und warum? Weil Windows 95/98 (Codename »Wintendo«) keine Sicherheit bietet. Bei Windows 95/98 ist jeder König, der sich vor den Rechner schwingt, und echten Zugriffsschutz gibt es nicht. Damit Windows 9x beim netzwerkweiten WMI mitmachen kann, braucht es normalerweise einen Helfer. Dieser Helfer ist ein Windows NT/2000 Domänencontroller, der für Windows 9x die fehlende Benutzer-Erkennung übernimmt. Wenn Sie also Windows 9x-Computer zu Domänenmitgliedern machen und die Sicherheit auf Domänenbetrieb umstellen, spielen Ihre Windows 9xRechner doch noch als vollwertige Teamkollegen bei WMI mit.
Bild 11.5: Normalerweise funktioniert DCOM erst nach Umbauarbeiten – mit einigen Tricks geht es aber auch ohne Domänencontroller
Es geht aber auch anders. Vielleicht dürstet es Sie nicht nach einem NT Domänencontroller, und Sie wollen bloß Ihr kleines Windows 9x-Netzwerk fernsteuern. Sicherheit ist Ihnen dabei nicht so
384
Kapitel 11: WMI: Computerverwaltung lokal und quer durchs Netz
wichtig, denn alle Rechner stehen sowieso bei Ihnen zu Hause. Dann tricksen Sie. Die Netzwerkfähigkeiten von WMI lassen sich bei Windows 9x nämlich auch ohne Domänencontroller freischalten. Diese Schritte sind erforderlich, damit Windows 9x über das Netzwerk verwaltet werden kann: 1. Installieren Sie zuerst das WMI-Paket, und prüfen Sie wie oben beschrieben, ob WMI-Scripts lokal ausgeführt werden können. 2. Führen Sie dann die Datei WMI.REG auf der Buch-CD aus. Diese Datei befindet sich im Ordner WMI und trägt einige Werte in Ihre Registry ein. 3. Rufen Sie danach das DCOM-Konfigurationstool auf. Dazu wählen Sie im Startmenü Ausführen und geben ein: DCOMCNFG [Enter]. 4. Klicken Sie auf das Register Standardeigenschaften, und stellen Sie in den Ausklapplisten ein: Verbindung herstellen und Imitieren. Dann schließen Sie das Fenster. Starten Sie den Rechner neu. Ab sofort ist WMI auf diesem Rechner auch via Netzwerk verfügbar. Um den Netzwerkzugriff auszuprobieren, begeben Sie sich an einen anderen Computer. Dieser Computer muß mit dem Windows 9x-Computer via Netzwerk verbunden sein, und auf beiden Computern muß WMI installiert sein. Am besten testen Sie zuerst den Netzwerkzugriff, indem Sie sich mit einem freigegebenen Ordner des Windows 9x-Computers verbinden. Führen Sie nun auf dem zweiten Computer ein Script wie dieses aus: ’ 11-6.vbs set wmi = GetObject("winmgmts:\\tob\root\cimv2") set collection = wmi.InstancesOf("Win32_OperatingSystem") for each os in collection MsgBox "Seriennummer: " & os.SerialNumber next
Ersetzen Sie »tob« durch den Netzwerknamen Ihres Windows 9x-Computers. Wenn alles glattläuft, gibt das Script die Windows-Seriennummer des Windows 9x-Computers aus. Kann das Script dagegen nicht ferngesteuert auf den Windows 9x-Computer zugreifen, dann passiert eine geraume Weile gar nichts, und schließlich kassieren Sie eine Fehlermeldung, die darüber lamentiert, daß der Remote-Server nicht verfügbar ist. Tip: Remote-Zugriff – das sollten Sie wissen! Auch wenn der Netzwerkzugriff auf Ihren Computer nicht auf Anhieb klappt – nicht den Mut verlieren! Netzwerk-WMI ist eigentlich bei Windows 9x überhaupt nicht möglich, und ob der hier gezeigte Ansatz bei Ihnen tatsächlich funktioniert, kann ich nicht versprechen. In meiner Testumgebung zeigte sich beispielsweise, daß der Netzwerkzugriff auf Windows 9x-Maschinen von Windows 2000 aus problemlos funktionierte. Windows 9x-Computer konnten sich dagegen gegenseitig nicht immer erreichen. Woran das im Einzelnen liegt, untersuche ich noch. Wenn Sie Tips parat haben, mailen Sie mir: tob@ compuserve.com. Die neuesten Lösungen finden Sie bei www.wininfo.de/scripting.
11.3
Grundlagen: So kommen Sie an WMI-Informationen
385
11.2.6 Wichtige Details, die Sie kenen sollten Damit WMI-Scripts funktionieren, muß auf dem Computer WINMGMT.EXE ausgeführt werden. Bei lokalen Scripts ist das kein Problem, denn wenn Sie WMI installiert haben, startet Ihr Computer WINMGMT.EXE von allein, sobald es benötigt wird. Anders ist das, wenn Sie per Netzwerk ferngesteuert auf den Computer zugreifen wollen. Hier muß WINMGMT.EXE bereits laufen. Entweder starten Sie es bei Bedarf von Hand. Oder Sie verfrachten den Aufruf in die Autostartgruppe. In diesem Fall ist der Computer allerdings erst dann fernwartbar, wenn sich ein Benutzer eingeloggt hat. Deshalb hat die WMI.REG-Datei einen zusätzlichen Schlüssel in die Registry eingetragen: Unter HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices wird WINMGMT.EXE als Service ausgeführt. Das bedeutet: WMI steht direkt nach dem Windows-Start zur Verfügung, also auch dann, wenn sich noch niemand angemeldet hat. Falls Sie beim Windows-Start eine Fehlermeldung erhalten, daß WINMGMT.EXE nicht gefunden werden konnte, dann suchen Sie sich mit REGEDIT.EXE den RunServices-Schlüssel von oben heraus und prüfen, ob WINMGMT.EXE bei Ihnen vielleicht in einem anderen als dem Systemordner von Windows gelandet ist. Andere Variante: Sie suchen sich WINMGMT.EXE heraus, und kopieren Sie die Datei in den System-Ordner innerhalb des Windows-Ordners. Generell hat sich bei Verbindungsproblemen diese Suchreihenfolge bewährt: 1. Testen Sie, ob Sie via Netzwerk auf freigegebene Ordner des betreffenden Computers zugreifen können. 2. Testen Sie, ob WMI-Scripts lokal auf dem Computer laufen. Oben haben Sie bereits einige Test-Scripte kennengelernt. 3. Drücken Sie auf dem betreffenden Computer [Strg]+[Alt]+[Entf], um die Taskliste zu sehen. Wird darin WINMGMT.EXE aufgeführt? Wenn nicht, starten Sie das Programm von Hand.
11.3
Grundlagen: So kommen Sie an WMI-Informationen
Nachdem nun die Infrastruktur hoffentlich geklärt ist, schauen Sie sich in Ruhe an, wie WMI-Scripts eigentlich funktionieren – und wie Sie herausfinden, welche Informationen WMI zu bieten hat. WMI gruppiert seine Informationen in Klassen. Eine dieser Klassen heißt zum Beispiel Win32_ OperatingSystem und liefert eine Menge Informationen zum installierten Betriebssystem. Der erste Schritt ist also, sich mit einer Klasse zu verbinden. Hierfür gibt es eine ganze Reihe von Wegen. Schauen Sie sich dazu noch einmal das Beispiel von oben an, mit dem Sie die Seriennummer Ihrer Windows-Version ermitteln: ’ 11-7.vbs set server = GetObject("winmgmts:") set collection = server.InstancesOf("Win32_OperatingSystem")
386
Kapitel 11: WMI: Computerverwaltung lokal und quer durchs Netz
for each os in collection MsgBox "Seriennummer: " & os.SerialNumber next
Bei dieser Variante verbindet sich das Script mit einem »Moniker« namens »winmgmts:«. Das ist sozusagen die Geheimtür zu WMI. Anschließend erfragt das Script mit InstancesOf alle Objekte, die vom Typ »Win32_OperatingSystem« sind. Natürlich gibt es davon nur ein Objekt, aber das spielt keine Rolle. Andere Objekttypen, die Sie sich später vorknöpfen, könnten durchaus mehrfach vorkommen, zum Beispiel Grafikkarten. In einer for each...next-Schleife werden alle gefundenen Objekte dann in der Variablen os zur Verfügung gestellt. Sie könnten diese Variable gern auch anders nennen. Wichtig ist nur, daß Sie ausschließlich über for each...next an die Ergebnisse herankommen. Innerhalb der Schleife fragt das Script dann nach der Eigenschaft, die es interessiert: SerialNumber.
11.3.1 Weitere Möglichkeiten, um an WMI-Informationen zu gelangen Viele Wege führen nach Rom, und dasselbe gilt auch für die Wege zu WMI. Hier ein weiteres Script, das genau dasselbe erledigt wie das vorangegangene Script: ’ 11-8.vbs set wmi = CreateObject("WBemScripting.SWbemLocator") set server = wmi.ConnectServer(,"root/cimv2") set collection = server.InstancesOf("Win32_OperatingSystem") for each os in collection MsgBox "Seriennummer: " & os.SerialNumber next
Dieses Script nutzt ein COM-Objekt namens WBEMScripting.SWbemLocator, um sich mit WMI zu verbinden. Die eigentliche Verbindungsanfrage erledigt ConnectServer. Der Rest ist identisch. Welche Variante Sie einsetzen wollen, ist Geschmackssache und wird erst dann wichtig, wenn Sie per Netzwerk ferngesteuert auf fremde Computer zugreifen. Dann nämlich ist die zweite Variante bequemer zu handhaben.
11.3.2 Netzwerkzugriffe: WMI ferngesteuert Stellen Sie sich zum Beispiel vor, Sie wollen nicht die eigene Seriennummer erfragen, sondern die eines Netzwerkcomputers namens \\TOB. Das erste Script müßte folgendermaßen verfaßt werden: set server = GetObject("winmgmts:\\tob\root\cimv2") set collection = server.InstancesOf("Win32_OperatingSystem") for each os in collection MsgBox "Seriennummer: " & os.SerialNumber next
11.3
Grundlagen: So kommen Sie an WMI-Informationen
387
Bei der zweiten Variante geht es übersichtlicher: set wmi = CreateObject("WBemScripting.SWbemLocator") set server = wmi.ConnectServer("tob","root/cimv2") set collection = server.InstancesOf("Win32_OperatingSystem") for each os in collection MsgBox "Seriennummer: " & os.SerialNumber next
Wollen Sie sich unter einem bestimmten Benutzernamen und Kennwort beim fremden WMIDienst anmelden, fügen Sie einfach ein paar Extrainformationen ins Script ein: ’ 11-9.vbs set wmi = CreateObject("WBemScripting.SWbemLocator") server = "server1" konto = "tob" passwort = "willibald" set server = wmi.ConnectServer(server,"root/cimv2",konto,passwort) server.Security_.ImpersonationLevel = 3 set collection = server.InstancesOf("Win32_OperatingSystem") for each os in collection MsgBox "Seriennummer: " & os.SerialNumber Next
11.3.3 Informationen mit SQL abfragen Kennen Sie SQL? Das ist die Datenbanksprache, die Ihnen schon in Kapitel 9 begegnet ist. Auf Wunsch können Sie auch WMI per SQL um Informationen bitten. Die nächsten beiden Scripts erfüllen wiederum genau dieselbe Aufgabe, aber verwenden diesmal die SQL-Syntax: ’ 11-10.vbs set server = GetObject("winmgmts:") query = "Select * from win32_OperatingSystem" set collection = server.ExecQuery(query) for each os in collection MsgBox "Seriennummer: " & os.SerialNumber next
Über CreateObject funktioniert es so: ’ 11-11.vbs set wmi = CreateObject("WBemScripting.SWbemLocator") set server = wmi.ConnectServer(,"root/cimv2") query = "Select * from win32_OperatingSystem"
388
Kapitel 11: WMI: Computerverwaltung lokal und quer durchs Netz
set collection = server.ExecQuery(query) for each os in collection MsgBox "Seriennummer: " & os.SerialNumber next
11.4
Endlich verständlich: Einsatz von Monikern
Oben haben Sie bereits den »Moniker« winmgmts: kennengelernt. Wie vielseitig sich dieser Moniker einsetzen läßt, um sich mit dem WMI-System eines beliebigen Rechners zu verbinden, das stelle ich Ihnen nun anhand von konkreten Beispielen vor. Dabei wird sofort deutlich: Der Einsatz von Monikern ist wesentlich platzsparender als die herkömmliche CreateObject-Methode, sobald Sie zusätzliche Parameter Ihrer WMI-Verbindung setzen wollen.
11.4.1 Mit dem WMI-Dienst verbinden – lokal und remote Wollen Sie sich mit dem WMI Ihres lokalen Computers verbinden und dabei den StandardNamespace verwenden, dann schreiben Sie einfach: set wmi = GetObject("winmgmts:")
Auf klassischem Wege wären dazu diese Zeilen nötig: set locator = CreateObject("WBEMScripting.SWBEMLocator") set wmi = locator.ConnectServer()
Ferngesteuert auf fremde Rechner zugreifen Möchten Sie dagegen ferngesteuert auf den Computer namens TESTSERVER zugreifen, dann formulieren Sie: set wmi = GetObject("winmgmts://TESTSERVER")
Hier wieder die Alternative: set locator = CreateObject("WBEMScripting.SWBEMLocator") set wmi = locator.ConnectServer("TESTSERVER")
11.4.2 WMI-Namespace festlegen Wollen Sie den Namespace selbst angeben, dann fügen Sie den Namespace an den Computernamen an. Alle vordefinierten Klassen finden Sie im Namespace /root/cimv2: set wmi = GetObject("winmgmts://TESTSERVER/root/cimv2")
Die klassische Alternative sähe folgendermaßen aus: set locator = CreateObject("WBEMScripting.SWBEMLocator") set wmi = locator.ConnectServer("TESTSERVER","root/cimv2")
11.4
Endlich verständlich: Einsatz von Monikern
389
Dasselbe funktioniert auch mit lokalen Computern: set wmi = GetObject("winmgmts:root/cimv2")
Und wieder die Alternative: set locator = CreateObject("WBEMScripting.SWBEMLocator") set wmi = locator.ConnectServer(,"root/cimv2")
11.4.3 Direkt mit WMI-Geräteklassen verbinden Sie können sich auch direkt mit einer Klasse verbinden. Wollen Sie zum Beispiel alle logischen Disklaufwerke des Computers TESTSERVER sehen, dann verwenden Sie diesen Code: ’ 11-12.vbs set drives = _ GetObject("winmgmts://TESTSERVER/root/cimv2:Win32_LogicalDisk") for each drive in drives.Instances_ list = list & drive.Name & ": " _ & drive.Description & vbCr next MsgBox list
Auf klassische Weise ist erheblich mehr Aufwand nötig: ’ 11-13.vbs set locator = CreateObject("WBEMScripting.SWBEMLocator") set wmi = locator.ConnectServer("TESTSERVER","root/cimv2") set drives = wmi.Get("Win32_LogicalDisk") for each drive in drives.Instances_ list = list & drive.Name & ": " _ & drive.Description & vbCr next MsgBox list
Dasselbe funktioniert natürlich auch mit einem lokalen Rechner:
Bild 11.6: Laufwerke eines beliebigen lokalen oder remote verfügbaren Computers
390
Kapitel 11: WMI: Computerverwaltung lokal und quer durchs Netz
’ 11-14.vbs set drives = GetObject("winmgmts:root/cimv2:Win32_LogicalDisk") for each drive in drives.Instances_ list = list & drive.Name & ": " _ & drive.Description & vbCr next MsgBox list
Hier wieder die klassische Alternative: ’ 11-15.vbs set locator = CreateObject("WBEMScripting.SWBEMLocator") set wmi = locator.ConnectServer(,"root/cimv2") set drives = wmi.Get("Win32_LogicalDisk") for each drive in drives.Instances_ list = list & drive.Name & ": " _ & drive.Description & vbCr next MsgBox list
Und wenn Sie wollen, vertrauen Sie einfach auf die Standardeinstellungen des Namespace und schreiben: set drives = GetObject("winmgmts:Win32_LogicalDisk") for each drive in drives.Instances_ list = list & drive.Name & ": " _ & drive.Description & vbCr next MsgBox list
11.4.4 Bestimmte Geräte und Klassen direkt ansprechen Sie können auch ein spezifisches Laufwerk herausgreifen: ’ 11-16.vbs set drive = GetObject("winmgmts::Win32_LogicalDisk=’C:’") MsgBox drive.Name & ": " & drive.Description
Und hier wieder die Alternative:
11.4
Endlich verständlich: Einsatz von Monikern
391
’ 11-17.vbs set locator = CreateObject("WBEMScripting.SWBEMLocator") set wmi = locator.ConnectServer set drive = wmi.Get("Win32_LogicalDisk=""C:""") MsgBox drive.Name & ": " & drive.Description
11.4.5 Spezialoperationen: Sonderrechte aktivieren Sogar Privilegien lassen sich auf diese Weise setzen. Privilegien sind für besondere Operationen nötig, zum Beispiel, um ein System herunterzufahren. Privilegien spielen allerdings nur bei lokalen Systemen eine Rolle, und auch nur dann, wenn Sie Windows NT oder 2000 einsetzen. Bei Windows 9x gibt es keine Privilegien, und deshalb würde das folgende Script einen Windows 9x-Rechner sofort neu starten: set oslist = GetObject("winmgmts::Win32_OperatingSystem") for each os in oslist.Instances_ os.Reboot next
Auf einem Windows NT/2000-System dagegen bekämen Sie die Fehlermeldung, daß das »Recht aufgehoben« sei. Sie brauchen also zuerst ein besonderes Recht, um die lokale Maschine neu zu starten. Dieses Recht heißt Shutdown. So wird es aktiviert: set oslist = _ GetObject("winmgmts:{(Shutdown)}:Win32_OperatingSystem") for each os in oslist.Instances_ os.Reboot next
Die klassische Alternative ist wieder wesentlich aufwendiger und erfordert bestimmte Konstanten: set locator = CreateObject("WBEMScripting.SWBEMLocator") set wmi = locator.ConnectServer set oslist = wmi.Get("Win32_OperatingSystem") for each os in oslist os.security_.Privileges.Add 18, true os.Reboot next
Rechte können auch explizit aufgehoben werden, zum Beispiel so: set oslist = _ GetObject("winmgmts:{(!Shutdown)}:Win32_OperatingSystem") for each os in oslist.Instances_ os.Reboot next
Dieses Script kann Windows NT/2000-Maschinen auf keinen Fall neu starten.
392
Kapitel 11: WMI: Computerverwaltung lokal und quer durchs Netz
11.4.6 Impersonation: Herausfinden, wer die WMI-Aktion verantwortet Sicherheit wird bei WMI groß geschrieben, und so authentifiziert WMI jeden Scriptbenutzer, bevor das Script ausgeführt wird. Das ist gut so, denn schließlich fänden Sie es sicher nicht lustig, wenn Ihr Nachbar ständig via WMI auf Ihrem Rechner herumfummeln würde. Welche Rechte Sie tatsächlich auf einem fremden Rechner haben, das ist WMI herzlich egal. Die Rechte werden nicht von WMI geprüft, sondern von dem System, auf das Sie zugreifen. Damit das fremde System dies tun kann, muß es wissen, wer Sie eigentlich sind. Deshalb gibt es die Impersonation-Stufen: Impersonation-Level
Bedeutung
ImpersonationLevelAnonymous (1)
Anonymer Zugriff. Viele Aktionen sind mit diesem Level nicht möglich, denn die meisten Systeme verweigern die Mitarbeit, wenn sich ein Benutzer anonym anmeldet Gibt Ihren Benutzernamen und Ihre Rechte bekannt Standardvorgabe. Erlaubt den WMI-Objekten, in Ihrem Namen zu agieren. Erlaubt WMI-Objekten, auch andere Objekte in Ihrem Namen aufzurufen. Dieser Level wird nur unter Windows 2000 unterstützt und kann ein Sicherheitsrisiko darstellen, weil Sie nicht mehr selbst bestimmen, wer in Ihrem Namen handelt.
Grundsätzlich gilt: Mit welcher SIcherheitsstufe Sie sich zu erkennen geben, bleibt Ihnen und Ihren Scripts überlassen. Allerdings werden sichere Systeme auch nur WMI-Aufrufe zulassen, die die höchste Sicherheitsstufe der Identifizierung verwenden. Anonyme Zugriffe werden in den allermeisten Fällen höflich ignoriert. In der Regel brauchen Sie sich nicht um den Impersonation-Level zu kümmern, weil die Voreinstellung Impersonate die beste Einstellung ist. Wenn Sie mögen, können Sie aber ebensogut handfest eingreifen. Die nächste Zeile verwendet Kerberos-Authentifizierung und richtet die Anfrage an den Domänencontroller SERVER1 der Domäne DOMAIN1. Danach verbindet es sich mit dem Computer STATION2. set wmi = GetObject("winmgmts:{impersonationLevel=impersonate, authority=kerberos:DOMAIN1\SERVER1}!//STATION2/root/cimv2:__cimomidentification=@")
Wollen Sie sich dagegen mit Standard-NTLM-Authentifizierung an einer NT4-Domäne anmelden, dann geht das so: set wmi = GetObject("winmgmts:{impersonationLevel=impersonate, authority=ntlmdomain:DOMAIN1} !//STATION2/root/cimv2:__cimomidentification=@")
AuthenticationLevel: noch mehr Sicherheit Zusätzlich unterstützt WMI noch den AuthenticationLevel, der aber wirklich nur in hochgesicherten Systemen nützlich ist. Mit den AuthenticationLevel legen Sie fest, wie Ihre Daten von und zur Remote-Maschine reisen. Sie haben so die Möglichkeit, festzustellen, ob Ihre Daten auf der Reise
11.5
Welche Informationen hat WMI auf Lager?
393
zum fremden System modifiziert oder verfälscht wurden, und Sie können die Daten außerdem verschlüsseln.
11.5
Welche Informationen hat WMI auf Lager?
Welche Informationen können Sie via WMI eigentlich erfragen? Eben haben Sie einige wichtige Dinge gelernt:
WMI gruppiert Informationen in sogenannte Klassen.
Jede Klasse repräsentiert irgend etwas (ein Betriebssystem, eine Grafikkarte oder eine Datei).
Jede Klasse bietet bestimmte Informationen an (zum Beispiel die Seriennummer des Betriebssystems oder die Speichermenge auf einer Grafikkarte), und viele Klassen verfügen darüber hinaus auch über Methoden, die etwas anstellen. Mit der Create-Methode der Klasse Win32_ Process starten Sie zum Beispiel ferngesteuert Programme auf fremden Computern.
Daraus ergeben sich zwei weitere Fragen:
Welche Klassen gibt es überhaupt?
Welche Informationen schlummern in einer Klasse?
Weil WMI dynamisch ist und ständig neue Informationen hinzukommen, klären Sie am besten beide Fragen per Script.
11.5.1 Liste erstellen: Diese Klassen unterstützt WMI Das nächste Script legt vollautomatisch eine Textdatei mit allen Klassen an, die Ihr WMI augenblicklich unterstützt. Das kann ein Weilchen dauern. ’ 11-18.vbs ’ Ausgabedatei anlegen set fs = CreateObject("Scripting.FileSystemObject") set file = fs.CreateTextFile("c:\classes.txt", true) ’ alle Klassen auflisten set wmi = GetObject("winmgmts:") set subclasses = wmi.SubclassesOf for each subclass in subclasses ’ Sperre: if Instr(lcase(subclass.path_),"win32") >0 then klassenname = subclass.path_ pos1 = Instr(klassenname, ":") file.WriteLine mid(klassenname, pos1+1) ’ Sperre: end if
394
Kapitel 11: WMI: Computerverwaltung lokal und quer durchs Netz
next file.close ’ Datei anzeigen set wshshell = CreateObject("WScript.Shell") wshshell.run "C:\classes.txt"
Bild 11.7: Schon besser: Herausfinden, welche WMI-Klassen es gibt
Tip: Es gibt sogar noch mehr Klassen! Wenn Sie sich das Script genau ansehen, dann werden Sie feststellen, daß es längst nicht alle Klassen ausspuckt. Es konzentriert sich nur auf Klassen, die mit »Win32_« beginnen. Das dürfte genügen, um die nächsten zwanzig Jahre die Klassenbestandteile zu erforschen. Wenn Sie noch mehr Informationsflut wünschen, um auch Ihre Kinder und Kindeskinder beschäftigt zu halten, dann bauen Sie die Sperre einfach aus. Entfernen Sie dazu die zwei markierten Zeilen.
11.5.2 Alle Informationen über eine Klasse finden Nun kennen Sie die Klassen-Namen, aber wissen noch nicht sonderlich viel über deren Innenleben. Welche Informationen und Funktionen verbergen sich in einer Klasse? Finden Sie es heraus! Das nächste Script durchleuchtet jede x-beliebige Klasse. Geben Sie einfach den Klassennamen an, der Sie interessiert: ’ 11-19.vbs set wshshell = CreateObject("WScript.Shell") ’ Variablentypen festlegen dim types(103) for x = 0 to 103
11.5
Welche Informationen hat WMI auf Lager?
395
types(x) = "???" next types(2) = " as Integer" ’"SINT16" types(3) = " as Integer" ’"SINT32" types(4) = " as Integer" ’"REAL32" types(5) = " as Integer" ’"REAL64" types(8) = " as String" ’"String" types(11) = " as Boolean" ’"BOOLEAN" types(13) = " as CIM-Object" ’"CIM OBJECT" types(16) = " as Integer" ’"SINT8" types(17) = " as Integer" ’"USINT8" types(18) = " as Integer" ’"USINT16" types(19) = " as Integer" ’"USINT32" types(20) = " as Integer" ’"SINT64" types(21) = " as Integer" ’"USINT64" types(101) = " as Date/Time" ’"Date/Time" types(103) = " as Unicode" ’"Char16"
’ Welche Klasse soll untersucht werden? which = InputBox("Geben Sie den Klassennamen ein!" _ ,,"win32_operatingsystem") set fs = CreateObject("Scripting.FileSystemObject") ’ hier einen besseren Pfad angeben! datei = "C:\" & which & ".htm" set file = fs.CreateTextFile(datei, true) ’ synthetische Klasse generieren: set wmi = GetObject("winmgmts:[locale=ms_407]!:" & which) set klasse = wmi.SpawnDerivedClass_ file.writeLine "" & which & "" file.writeLine "<style>td {font: 10pt Arial; color: ""#666600""; backgroundcolor: ""#AAAAAA""}" file.writeLine "p {font: 10pt Arial; color: ""#DDDDFF""; font-weight:}" file.writeLine ".mn {font-size: 11pt; color: black; font-weight: bold}" file.writeLine "" file.writeLine "" file.WriteLine "
Kapitel 11: WMI: Computerverwaltung lokal und quer durchs Netz
function ShowMethods(obj) ’ listet alle Methoden auf set methods = obj.methods_ for each method in methods dl = "" newfunc = "" & method.name & "" ’ Parameter für die Eingabe set inpars = method.InParameters if not TypeName(inpars)="Nothing" then set params = inpars.Properties_ startchar = "(" for each param in params newfunc = newfunc & startchar _ & "" & param.name & "" _ & types(param.CIMType) _ & ", " startchar = "" ' beschreibung set qualifier = param.Qualifiers_ paramdesc = GetDesc(qualifier) if paramdesc<>"" then dl = dl & "" & param.name _ & "=" & GetDesc(qualifier) _ & " " end if for each qual in qualifier if not lcase(qual.name) = _ "mappingstrings" then dl = dl & GetQualifier(qual) end if next next newfunc = left(newfunc, len(newfunc)-2) & ")" end if set outpars = method.OutParameters if not TypeName(outpars)="Nothing" then set param = outpars.Properties_.Item("ReturnValue") newfunc = "result" & types(param.CIMType) _ & " = " & newfunc end if set qualifier = method.Qualifiers_ commanddesc = GetDesc(qualifier)
11.5
Welche Informationen hat WMI auf Lager?
for each qual in qualifier if lcase(qual.name) = "mappingstrings" then check = GetQualifier(qual) pos1 = InstrRev(check, "=") api = _ "Befehl wird von folgender " _ & "API-Funktion bereitgestellt: " _ & mid(check, pos1+1) end if next list = list & "
function ShowProperties(obj) ’ listet alle Eigenschaften auf: set props = obj.properties_ for each prop in props newfunc = prop.name set qualifier = prop.Qualifiers_ for each qual in qualifier if qual.name = "Description" then propdesc = qual.value end if next list = list & "
" _ & newfunc & "
" list = list & Replace(Replace(propdesc, vbCr, " "),_ vbLf, " ") & "
" next ShowProperties = list end function function GetQualifier(qual) on error resume next select case lcase(qual.name) case "description" exit function case "id" exit function case "cimtype"
397
398
Kapitel 11: WMI: Computerverwaltung lokal und quer durchs Netz
exit function case "in" exit function end select retval = "" isAnArray = (TypeName(qual.value)="Variant()") if not isAnArray then retval = retval & qual.name & "=" & qual.value _ & " " else retval = retval & qual.name & " = Array:" & " " set context = CreateObject("WBEMScripting.SWBEMNamedValueSet") context.add "n1", qual.value for x = lbound(context("n1")) to ubound(context("n1")) if context("n1")(x)<>"" then retval = retval & x & "=" _ & context("n1")(x) & " " end if next end if GetQualifier = retval end function function GetDesc(qualifier) for each qual in qualifier if qual.name = "Description" then on error resume next GetDesc = qual.value if err.number<>0 then GetDesc = "???" err.clear end if on error goto 0 end if next end function
Als Vorgabe schlägt das Script den Klassennamen Win32_OperatingSystem vor. Schauen Sie doch mal rein! Huch – bisher kannten Sie nur das friedliche SerialNumber, doch nun entdecken Sie: Diese Klasse ist vollgestopft mit hochbrisanten Informationen zum Betriebssystem.
11.5
Welche Informationen hat WMI auf Lager?
399
Bild 11.8: Automatisch eine »Bedienungsanleitung« für die Klasse generieren
Und wie bekommt man Zugriff auf den Inhalt einer Klasse? Oben haben Sie schon verschiedene Ansätze gesehen. Hier ein Script, das automatisch alle Instanzen einer beliebigen Klasse ausfragt und alle Informationen anzeigt: ’ 11-20.vbs ’ Zugang zu WMI set obj = CreateObject("WBemScripting.SWbemLocator") set service = obj.ConnectServer(,"root/cimv2") set fs = CreateObject("Scripting.FileSystemObject") set wshshell = CreateObject("WScript.Shell") datei = "c:\klassen.txt" set file = fs.CreateTextFile(datei, true)
klasse = InputBox("Bitte geben Sie die Klasse an!",_
400
Kapitel 11: WMI: Computerverwaltung lokal und quer durchs Netz
,"win32_operatingsystem") query = "Select * from " & klasse set alles = service.ExecQuery(query) list = klasse & vbCrLf for each batterie in alles counter = counter + 1 list = list & "Gerät Nr. " & counter & ":" & vbCrLf list = list & ShowProperties(batterie) next file.WriteLine list file.Close wshshell.Run datei function ShowProperties(obj) ' listet alle Eigenschaften auf: set props = obj.properties_ mylist = "" for each prop in props newfunc = prop.name mylist = mylist & newfunc & " = " on error resume next value = prop.value & vbCrLf if err.number<>0 then value = "unbekanntes Format" & vbCrLf err.clear end if mylist = mylist & value on error goto 0 next ShowProperties = mylist end function
11.5
Bild 11.9: Alle Informationen einer Klasse auslesen
Welche Informationen hat WMI auf Lager?
401
403
12 Mit WMI-Klassen arbeiten
Es würde den Rahmen dieses Buches gnadenlos sprengen, würde ich versuchen, alle WMI-Klassen und alle Möglichkeiten darzulegen. Statt dessen habe ich Ihnen im vorangegangenen Kapitel alle Werkzeuge an die Hand gegeben, um selbst zu forschen und zu experimentieren. Sie kennen inzwischen alle WMI-Klassen, deren Aufbau, Befehle und Inhalte. In diesem Kapitel zeige ich Ihnen exemplarisch an einigen Beispielen, wie WMI funktioniert und welche enormen Möglichkeiten auf Sie warten.
12.1
Mit Win32_OperatingSystem experimentieren
Selten werden Sie alle Informationen der Win32_OperatingSystem-Klasse auf einmal brauchen. Viel häufiger sind Details gefragt. Wann zum Beispiel wurde Ihr Betriebssystem installiert? Wissen Sie nicht mehr? WMI schon. Das nächste Script ermittelt die Geburtsstunde des Betriebssystems: ’ 12-1.vbs ’set wmi = GetObject("winmgmts:\\serverX\root\cimv2") set wmi = GetObject("winmgmts:") set infos = wmi.InstancesOf("Win32_OperatingSystem") for each os in infos MsgBox "Windows wurde installiert am: " & _ GetTime(os.InstallDate) next
Die erste Zeile des Scripts dient nur der Angeberei: Damit will ich noch mal unterstreichen, wie simpel es ist, das Script auf einen entfernten anderen Computer anzuwenden. Ersetzen Sie einfach SERVERX durch einen echten Computernamen in Ihrem Netzwerk – auf dem WMI installiert ist.
404
Kapitel 12: Mit WMI-Klassen arbeiten
Bild 12.1: Aha – WMI verrät, wann Windows installiert wurde
Das Script untersucht Ihren lokalen Computer und findet heraus, wann Windows installiert wurde. InstallDate liefert die nötige Information, allerdings in einem etwas ungewöhnlichen Zahlenformat. Damit daraus eine echte Zeitinformation wird, jongliert GetTime etwas mit den Zeitinformationen. Besonders wichtig ist die Prozedur GetTime. Sie wandelt das etwas eigentümliche WMI-Datumsformat in eine menschenfreundlichere Version um. Andere interessante Zeitinformationen sind: Eigenschaft
Bedeutung
LastBootUpTime LocalDateTime
Zeit des letzten Hochfahrens (letzte Benutzung) Lokale Zeit auf einem Rechner
Tab. 12.1: Datumsfunktionen der Win32_OperatingSystem-Klasse
Ersetzen Sie einfach InstallDate durch eine der beiden Varianten.
12.1.1 Einen Computer herunterfahren (oder neu starten) Die Win32_OperatingSystem-Klasse kann noch mehr: Sie enthält einige Methoden, mit denen Sie handfest ins Geschehen eingreifen. Über diese Methoden fahren Sie zum Beispiel einen Computer herunter oder starten ihn neu. Ganz gleich, wo der Computer im Netzwerk lebt. Tip: Aufpassen: WMI meint es ernst! WMI hat sich Fernwartung auf die Fahnen geschrieben und tut alles, damit sich der faule Systemadministrator nicht von der Couch entfernen muß. Das bedeutet aber auch: WMI hält sich nicht mit lästigen Nachfragen auf. Wenn Sie WMI beauftragen, einen Rechner herunterzufahren, dann macht WMI das auch. Ohne Warnung oder die Möglichkeit, nicht gesicherte Dinge zu speichern, fährt das System herunter. ’ 12-2.vbs computer = InputBox("Name des Rechners?") set wmi = CreateObject("WBemScripting.SWbemLocator") set server = wmi.ConnectServer(computer,"root\cimv2") set infos = server.InstancesOf("Win32_OperatingSystem") for each os in infos on error resume next
12.1
Mit Win32_OperatingSystem experimentieren
405
result = os.Shutdown err.clear on error goto 0 MsgBox result next
Wollen Sie es etwas galanter anstellen und den Anwender vorher vor dem Herunterfahren warnen, dann verwenden Sie die API-Version aus Kapitel 8.18. Die funktioniert allerdings nur mit Windows NT und Windows 2000. Ihren eigenen Computer können Sie übrigens genauso herunterfahren. Allerdings müssen Sie sich hier die nötigen »Privilegien« einräumen. Das sieht in der Praxis folgendermaßen aus: ’ 12-3.vbs set wmi = CreateObject("WBemScripting.SWbemLocator") set server = wmi.ConnectServer(,"root\cimv2") set infos = server.InstancesOf("Win32_OperatingSystem") for each os in infos os.security_.Privileges.add 18, true os.Shutdown next
Computer neu starten Ersetzen Sie einfach in den Scripts oben den Befehl Shutdown durch den Befehl Reboot. Schon fahren die Scripts die Rechner nicht mehr herunter, sondern starten sie neu.
Reboots mit maximaler Kontrolle WMI kann sogar die offizielle Windows-API-Funktion ExitWindowsEx ansteuern. So haben Sie maximale Kontrolle darüber, was der Computer eigentlich tun soll. Das nächste Script erlaubt, ferngesteuert jeden Computer auf eine der Arten der folgenden Tabelle herunterzufahren oder neu zu starten. Geben Sie neben dem Netzwerknamen nur noch die gewünschte Kennzahl ein. Kennzahl
Bedeutung
0 1 2 1+4 2+4 1+8 1+4+8 1+16 2+16
Ausloggen Herunterfahren Neu starten Sofort herunterfahren Sofort neu starten Herunterfahren und ausschalten Sofort herunterfahren und ausschalten Herunterfahren trotz aufgehängter Programme (Windows 2000) Neu starten trotz aufgehängter Programme (Windows 2000)
Tab. 12.2: Herunterfahr-Optionen der verpackten ExitWindowsEx-WMI-Funktion
406
Kapitel 12: Mit WMI-Klassen arbeiten
’ 12-4.vbs computer = InputBox("Name des Rechners?") modus = InputBox("Welchen Modus wünschen Sie?",,"4") set wmi = CreateObject("WBemScripting.SWbemLocator") set server = wmi.ConnectServer(computer,"root\cimv2") set infos = server.InstancesOf("Win32_OperatingSystem") for each os in infos on error resume next call os.Win32Shutdown(modus) err.clear on error goto 0 next MsgBox "Erledigt."
12.2
Programme ferngesteuert starten
WMI kann sich mit Leichtigkeit ein Bild darüber verschaffen, welche Programme zur Zeit auf einem beliebigen Computer ausgeführt werden. Was den Betriebsrat wenig freuen wird, ist sogar nur die Spitze des Eisbergs. WMI kann außerdem selbst neue Programme starten und auf dem fremden Computer ausführen lassen.
12.2.1 Welche Programme laufen gerade? Zuerst soll WMI herausfinden, welche Programme im Augenblick auf einem beliebigen Computer ausgeführt werden. Das erledigt das folgende Script: ’ 12-5.vbs computer = InputBox("Bitte geben Sie einen Computernamen ein!") set wmi = GetObject("winmgmts:\\" & computer & "\root\cimv2") set system = wmi.InstancesOf("win32_process") for each process in system list = list & process.name & vbCr next MsgBox list, vbInformation
Wollen Sie nur die Prozesse auf Ihrem eigenen Computer beobachten, dann gibt’s eine vereinfachte Fassung:
12.2
Programme ferngesteuert starten
407
Bild 12.2: Laufende Prozesse auf Ihrem – oder einem anderen – Computer beobachten ’ 12-6.vbs set wmi = GetObject("winmgmts:") set system = wmi.InstancesOf("win32_process") for each process in system list = list & process.name & vbCr next MsgBox list, vbInformation
12.2.2 Alle Infos über Prozesse anzeigen Prozeßinformationen haben noch viel mehr Geheimnisse auf Lager. Wenn Sie eine genaue Liste aller Informationen aller gerade laufenden Prozesse sehen wollen, dann bemühen Sie das nächste Script. Nun wissen Sie, seit wann ein Programm läuft, wie viel Speicher es verschlingt und wie die zugrundeliegende ausführbare Datei heißt: ’ 12-7.vbs set fs = CreateObject("Scripting.FileSystemObject") ausgabe = "c:\process.txt" set file = fs.CreateTextFile(ausgabe, true) set wmi = GetObject("winmgmts:") set system = wmi.InstancesOf("win32_process") for each process in system file.WriteLine vbCrLf & "***" & process.name & "***"
408
Kapitel 12: Mit WMI-Klassen arbeiten
file.WriteLine ShowProperties(process) & vbCrLf next file.close set wshshell = CreateObject("WScript.Shell") wshshell.Run ausgabe function ShowProperties(obj) ’ listet alle Eigenschaften auf: set props = obj.properties_ mylist = "" for each prop in props newfunc = prop.name mylist = mylist & newfunc _ & " = " & prop.value & vbCrLf next ShowProperties = mylist end function
Bild 12.3: Detaillierte Prozeßinformationen quer über das Netzwerk
12.2
Programme ferngesteuert starten
409
12.2.3 Programme ferngesteuert starten Auch Programmstarts sind möglich. Dazu startet WMI einfach selbst einen neuen Prozeß. Das ist viel leichter, als Sie vielleicht denken. Das nächste Script startet zum Beispiel den Texteditor Notepad auf jedem beliebigen WMI-fähigen Computer: ’ 12-8.vbs computer = InputBox("Name des Computers?") set system = GetObject("winmgmts:\\" & computer _ & "\root\cimv2:win32_process") system.Create "notepad.exe"
Das war nicht besonders schwierig, oder? Stellen Sie sich die Möglichkeiten vor, die Ihnen nun offen stehen: Sie könnten ferngesteuert auf allen Computern Wartungsprogramme ausführen lassen. Oder Sie gehen noch raffinierter vor: Kopieren Sie zuerst ein Scriptprogramm auf einen freigegebenen Ordner des Remotecomputers, und lassen Sie das Script dann ausführen! Das folgende Beispiel macht genau das. Das Script ist sehr einfach aufgebaut und macht die folgenden Annahmen:
Auf Ihrem Rechner befindet sich das gewünschte Script als C:\SKRIPT.VBS.
Der Remote-Rechner verfügt über einen freigegebenen Ordner mit Schreib- und Ausführungsberechtigung für Ihr Benutzerkonto. Diese Freigabe trägt den Namen Service.
’ 12-9.vbs quellort = "C:" ’ Hier liegt Original scriptname = "SKRIPT.VBS" ’ Name des Originalscripts zielcomputer = "\\win98" ’ Remote-Computer freigabe = "service" ’ Freigabename remoteort = "C:\SERVICE" ’ Ordner des Freigabenamens ’ auf Remote-Computer ’ zuerst Script ans Ziel kopieren set fs = CreateObject("Scripting.FileSystemObject") fs.CopyFile quellort & "\" & scriptname, zielcomputer & "\" & freigabe & "\" & scriptname ' dann Script ausführen set system = GetObject("winmgmts:" & zielcomputer _ & "\root\cimv2:win32_process") WScript.Sleep 1000 system.Create "WSCRIPT.EXE " & remoteort _ & "\" & scriptname
410
Kapitel 12: Mit WMI-Klassen arbeiten
12.2.4 Programme ferngesteuert beenden Umgekehrt geht es auch: WMI kann fremde Programme radikal beenden, wobei die Betonung auf »radikal« liegt: Das Programm wird sofort und ohne Rückfragen oder Speicherungen aus dem Computer gekickt. Dieses Feature ist also mit Vorsicht zu genießen. Das nächste Script ist ein Gottesgeschenk für alle Programmierer, denn es räumt schnell und unaufdringlich alle Notepad-Instanzen Ihres lokalen Computers weg – allerdings wie gesagt ohne Speicher-Rückfragen: ’ 12-10.vbs set wmi = GetObject("winmgmts:") set system = wmi.InstancesOf("win32_process") for each process in system if lcase(process.name)="notepad.exe" then process.Terminate (0) end if next
Sie können das Script mit Leichtigkeit auch auf andere Programme ansetzen. Ersetzen Sie einfach notepad.exe durch den (kleingeschriebenen) Namen des Programms, das Sie entsorgen wollen. Kommen Sie aber lieber nicht auf die Idee, »explorer.exe« beenden zu wollen – denn dann fährt Ihr Windows runter. Der Explorer ist nämlich weitaus tiefer ins System verwoben, als seine Ordnerfenster vermuten lassen. Internet Explorer-Fenster räumt das Script dagegen ohne zu murren weg. Verwenden Sie als Programmnamen in diesem Fall iexplore.exe. Und wenn Sie nicht auf Ihrem eigenen Computer Programme beenden wollen, sondern auf dem Ihres Kollegen, dann fügen Sie hinter winmgmts: wie üblich den Netzwerkpfad an. Hier wird übrigens auch deutlich, wieviel Flexibilität WMI bietet. Dasselbe Script von oben könnten Sie nämlich dank der SQL-artigen WQL-Syntax galanter so formulieren: ’ 12-11.vbs set wmi = GetObject("winmgmts:") wql = "select * from win32_process where name=’notepad.exe’" set notepad = wmi.ExecQuery(wql) for each instance in notepad instance.Terminate (0) next
12.3
Programme ferngesteuert installieren
Hätten Sie das für möglich gehalten? WMI kann sogar Software ferngesteuert im gesamten Netzwerk installieren! Und zwar nicht nur auf Windows 2000-Rechnern, sondern auf jedem WindowsRechner, bei dem Sie wie im vorangegangenen Kapitel WMI einsatzbereit gemacht haben.
12.3
Programme ferngesteuert installieren
411
Das wird natürlich alle mächtig ärgern, die viele tausend Mark für Softwarepakete wie den System Management Server von Microsoft ausgegeben haben. Tatsache ist aber: Der Windows Installer Service, auf den auch SMS zugreift, ist via WMI genauso gut nutzbar.
12.3.1 Ferninstallation – was sind die Voraussetzungen? Natürlich können Sie nicht x-beliebige Programme ferninstallieren. Die Softwarepakete müssen in einem bestimmten Paketformat vorliegen, das der Windows Installer auch versteht. Dieses Paketformat heißt msi, und viele neuere Programme kommen bereits in diesem Format. So auch Microsoft Office 2000. Wenn Sie selbst Software herstellen, dann benutzen Sie einfach einen Paketgenerator wie den von InstallShield, um msi-Pakete zu erstellen. Wollen Sie ältere Software ins msi-Paketformat umverpacken, so gibt es auch für diesen Zweck entsprechende Tools. Das msi-Format ist also keineswegs eine Microsoft-Schrulligkeit, sondern ein neuer gemeinsamer Standard, der Voraussetzung dafür ist, daß Programme ohne lästige »Sind Sie sicher?«-Fragen reibungslos und still installierbar sind. Auf dem Computer, auf dem Sie die Software installieren wollen, muß neben WMI zusätzlich der Windows Installer Service installiert sein. Bei Windows 2000 ist das von vornherein der Fall. Alle anderen Windows-Computer können nachträglich den Installer Service nachrüsten, und zwar kostenlos. Pakete wie Microsoft Office 2000 und andere bringen das nötige Update sogar selbst mit.
12.3.2 Ferngesteuert Programmpakete installieren Das nächste Script zeigt, wie Sie bequem Programmpakete ferninstallieren. Das Script fragt nach nur zwei Informationen: dem Ort mit dem MSI-Paket und dem Namen des Netzwerkcomputers, auf dem Sie das Paket installieren wollen. Damit das klappt, brauchen Sie allerdings Administratoren-Status auf der Zielmaschine. Das Script übernimmt die aktuellen Benutzerinformationen. Wollen Sie sich lieber für die Installation unter einem anderen Namen anmelden, dann sind nur kleine Änderungen am Script nötig, auf die ich unten eingehe. Hier das Wunderscript: ’ 12-12.vbs package_location = InputBox("Pfad mit dem MSI-Paket angeben!") remote_machine_name = InputBox("Netzwerkcomputer, auf dem installiert werden soll?") set Locator = CreateObject("WbemScripting.SWbemLocator") Set Service = Locator.ConnectServer(remote_machine_name, _ "root\cimv2") Set Product = Service.Get("Win32_Product") Set Path = Product.Path_ Set Method = Product.Methods_.Item("Install") Set InParams = Method.InParameters
412
Kapitel 12: Mit WMI-Klassen arbeiten
Set MyIns = InParams.SpawnInstance_ MyIns.PackageLocation = package_location MyIns.AllUsers = "TRUE" MyIns.Options = "" set result = Service.ExecMethod(Path, "Install", MyIns) MsgBox "Erledigt. Rückgabewert: " & result.ReturnValue
Um den Installationsprozeß unter einem anderen Namen auszuführen, ersetzen Sie nur eine Scriptzeile: Set Service = Locator.ConnectServer(remote_machine_name, _ "root\cimv2", benutzername, kennwort)
12.3.3 Programme ferngesteuert deinstallieren Alle Programme, die Sie über den Windows Installer installiert haben, sind fernwartbar und können also auch ferngesteuert wieder von Netzwerkcomputern heruntergeworfen werden. Diese Aufgabe übernimmt das nächste Script. Es fragt zunächst nach dem Computernamen, auf dem Sie ein Programm deinstallieren wollen. Anschließend listet es Ihnen alle Programminstallationen auf, die Sie deinstallieren können. Geben Sie einfach die Kennziffer vor dem gewünschten Programmpaket an, und schon wird es deinstalliert. ’ 12-13.vbs remote_machine_name = InputBox("Computername, auf dem deinstalliert werden soll") set Locator = CreateObject("WbemScripting.SWbemLocator") Set Service = Locator.ConnectServer(remote_machine_name, _ "root\cimv2") Set Products = Service.InstancesOf("Win32_Product") on error resume next prodcount = Products.Count if not err.number=0 then MsgBox "Keine Produkte deinstallierbar." WScript.Quit end if on error goto 0 dim prods(200) counter = 0 for each product in Products counter = counter + 1 list = list & counter & "> " & product.name & vbCr prods(counter) = product.path_ next deinst = InputBox(list)
12.3
Programme ferngesteuert installieren
413
if ((deinst = vbEmpty) or (not isNumeric(deinst))) then MsgBox "Abbruch..." WScript.Quit elseif (CInt(deinst)>prodcount) or (CInt(deinst)<1) then MsgBox "Eingabefehler. Abbruch..." WScript.Quit end if counter = 0 for each product in Products counter = counter + 1 if counter = CInt(deinst) then exit for next MsgBox "Selected: " & product.name path = product.path_ set result = Service.ExecMethod(path, "Uninstall") MsgBox "Erledigt. Rückgabewert: " & result.ReturnValue
12.3.4 Asynchrone Programminstallation und -Deinstallation Asynchron heißt: Sie brauchen nicht darauf zu warten, daß etwas passiert. Wenn es passiert, werden Sie benachrichtigt. Die beiden Installations- und Deinstallations-Scripts von eben arbeiteten synchron: Das Script wurde angehalten, bis der Installations- bzw. Deinstallations-Prozeß abgeschlossen wurde. Das ist weniger schön, denn wenn dieser Prozeß sehr lange dauert, dann bekommen Sie keine Rückmeldung und wissen nicht, wie weit die Sache gediehen ist. Mit asynchronen Aufrufen löst der Windows Installer von Zeit zu Zeit Interrupts aus, die dem aufrufenden Programm verraten, wie weit die Prozedur fortgeschritten ist. Das klappt zwar auch bei reinen Scripts, ist dort aber weniger sinnvoll. Es fehlt schlicht das Ausgabemedium, mit dem Sie die Fortschrittsinformationen ausgeben könnten. Einen Beweis will ich Ihnen allerdings nicht schuldig bleiben. Hier ein Beispiel, das an die Grenzen von Scripting geht: ’ 12-14.vbs Set InstallSink = WScript.CreateObject(_ "WbemScripting.SWbemSink", "INSTALLSINK_") package_location = InputBox("Wo liegt das MSI-Paket?") remote_machine_name = InputBox("Auf welchem Computer soll installiert werden?") set Locator = CreateObject("WbemScripting.SWbemLocator") Set Service = Locator.ConnectServer(remote_machine_name, "root\cimv2") Set Product = Service.Get("Win32_Product")
MyIns.PackageLocation = package_location MyIns.AllUsers = "TRUE" MyIns.Options = "" set ie = CreateObject("InternetExplorer.Application") ie.navigate("javascript:’FortschrittInstallation...’") ie.width = 300 ie.height = 80 ie.Toolbar = false ie.Statusbar = false ie.visible = true do while ie.ReadyState<>4 loop Service.ExecMethodAsync InstallSink, Path, "Install", MyIns, 128 MsgBox "Abbruch?" ie.Quit Sub INSTALLSINK_OnCompleted(hResult, pErrorObject, pAsyncContext) End Sub Sub INSTALLSINK_OnProgress(iUpperBound, iCurrent, strMessage, objWbemAsyncContext) if iUpperBound > 0 then iComplete = Fix((iCurrent * 100)/iUpperBound) ie.document.body.innerHTML = iComplete & " %" end if End Sub Sub INSTALLSINK_OnObjectReady(objObject, objAsyncContext) if Not objObject.ReturnValue = 0 Then ie.document.body.innerHTML = "Installation fehlgeschlagen: " & objObject.ReturnValue Else ie.document.body.innerHTML = "Installation abgeschlossen." End If End Sub
Dieses Script »mißbraucht« den Internet Explorer als Ausgabefenster und zeigt während des Installationsprozesses darin den Fortschritt in Prozent. Sinnvoller sind asynchrone Aufrufe, wenn Sie selbst ein eigenes Control mit maßgeschneidertem Dialogfenster basteln. Solch ein Tool habe ich für Sie entwickelt. Sie finden den Code auf der BuchCD im Ordner WMI\TOOL. Allerdings liefert der Code nur den Mindestrahmen. Sicher werden Sie die Dialogfenster noch feintunen und mit einem ansprechenden Fehlerhandling ausstatten können.
12.3
Programme ferngesteuert installieren
415
Tip: Asynchrone Aufrufe und Netzwerkbelastung Zwar ist es schön anzusehen, wie der Installer mit seiner Arbeit voranschreitet. Aber asynchrone Aufrufe haben auch ihre Tücken. Erstens steigt die Netzwerkbelastung, weil ständig Statusinformationen den Besitzer wechseln. Und zweitens wird der Installationsprozeß anfällig für Störungen. Kann Ihr Script oder Programm nämlich die angelieferten Statusinformationen nicht rechtzeitig verarbeiten, dann wundert sich der Installer und bricht schließlich seine Arbeit ab. Für den Heavy-Duty-Einsatz im Alltagsnetz sind deshalb die beiden synchronen Fassungen von oben sehr gut zu gebrauchen. Die asynchronen Beispiele sind eher für den bedächtigen Sauna-Untensitzer.
Um mit dem Tool ein Programm zu installieren, verwenden Sie diesen Scriptcode: ’ 12-15.vbs set dialog = CreateObject("wmi.remoteinstall") MsgBox dialog.ShowDialog
Und wollen Sie deinstallieren, dann ist dieser Scriptcode richtig: ’ 12-16.vbs set dialog = CreateObject("wmi.remoteinstall") MsgBox dialog.ShowDeinstall
Die Installation von Software kann sogar automatisiert werden. Dazu verwenden Sie dieses Script und geben an, auf welchem Server welches MSI-Paket zu installieren ist: ’ 12-17.vbs set dialog = CreateObject("wmi.remoteinstall") MsgBox dialog.DoInstall("server1", "\\win98\e\data1.msi")
Tip: Einschränkungen, die Sie kennen müssen Der Installer kann nicht multiple Installationen gleichzeitig durchführen. Solange also ein MSI-Paket benutzt wird, kann keine andere Installation damit durchgeführt werden. Versuchen Sie es dennoch, dann kassieren Sie die Fehlermeldung 1619: Installationspaket in Benutzung. Der Fehler 2 ist ebenfalls nicht selten und weist darauf hin, daß Sie sich bei der Pfadangabe des MSI-Pakets vertan haben. Denken Sie daran, die Dateiendung .msi mit anzugeben! Ebenfalls wichtig: Kann der Zielcomputer das Installationsverzeichnis überhaupt öffnen, oder fehlen ihm womöglich Berechtigungen?
Fehlercode
Bedeutung
1601 1602 1603 1604 1605 1606
Installationsdienst steht nicht zur Verfügung Benutzer hat Installation abgebrochen Fehler während der Installation Installation unvollständig Produktcode ist nicht registriert Feature-ID ist nicht registriert
Komponenten-ID ist nicht registriert Unbekannte Eigenschaft Handle ist ungültig Konfiguration ungültig Komponenten-Qualifier fehlt Installationsquelle nicht verfügbar Datenbankversion wird nicht unterstützt Produkt deinstalliert SQL-Syntax fehlerhaft Record existiert nicht Ungültiges Befehlsargument Installationsprozeß im Gange Installationspaket konnte nicht geöffnet werden (ist möglicherweise bereits in Benutzung) Installationspaket ungültig Benutzeroberfläche des Installers konnte nicht geöffnet werden Log-Datei konnte nicht geöffnet werden Produkt-Sprachversion nicht unterstützt Installationspaket konnte nicht transformiert werden Installations-Signatur nicht akzeptiert Funktion war nicht ausführbar Funktion abgebrochen Ungültige Tabelle angegeben Falscher Datentyp Falscher Datentyp Falscher Datentyp
Tab. 12.3: Fehlermeldungen des Ferninstallations-Dienstes
12.4
Mit WMI auf System-Ereignisse reagieren
WMI kann – soviel ist inzwischen klar – alle nur irgendwie erdenklichen Funktionen Ihrer Netzwerkcomputer erfragen. Allerdings tut WMI dies nur, wenn Sie es darum bitten. Das ist zwar verständlich, aber eigentlich wollen Sie ja Kosten sparen und so viel wie möglich automatisieren. Läßt sich WMI nicht auch dressieren, so daß es automatisch bestimmte Aufgaben übernimmt, ohne mit der Nase darauf gestoßen zu werden? Genau das geht. WMI kann sich nämlich an Systemereignisse binden und dann völlig automatisch die richtigen Schritte einleiten. Ob Sie wollen, daß eine E-Mail versendet wird, sobald ein wichtiger Dienst auf einem Computer abgeschaltet wird, oder ob Sie sofort informiert werden wollen, wenn sich ein bestimmter Benutzer irgendwo im Netzwerk anmeldet – WMI macht’s möglich.
12.4
Mit WMI auf System-Ereignisse reagieren
417
Tip: Events – funktionieren bei Windows 2000 am besten Obwohl Events bei allen WMI-fähigen Computern funktionieren sollten, ist es mir bislang nicht gelungen, sie auch bei Windows 9x zu dressieren. Vielleicht finden Sie ja die Lösung. Mailen Sie mir dann bitte: [email protected].
12.4.1 Auf Events warten Wie bringen Sie WMI bei, auf bestimmte Ereignisse zu warten? Zum Beispiel so: ’ 12-18.vbs Set services = _ GetObject("WinMgmts:{impersonationLevel=impersonate, (security)}") Set sink = _ WScript.CreateObject("WbemScripting.SWbemSink","SINK_") services.ExecNotificationQueryAsync sink, _ "select * from __instancecreationevent where " _ & "targetinstance isa ’Win32_NTLogEvent’" WScript.Echo "Warte auf Events" Sub SINK_OnObjectReady(objObject, objAsyncContext) MsgBox objObject.TargetInstance.Message & " von " _ & objObject.TargetInstance.User _ & " eignetragen in Logfile " _ & objObject.TargetInstance.logfile End Sub
Dieses Script klinkt sich so lange in die Win32_NTLogEvent-Events des lokalen Rechners ein, bis Sie das Dialogfenster und damit das Script beenden. Kernstück ist das Objekt WBEMScripting.SWBEMSink. Dieses Objekt ist eine Art Event-Empfänger und wird an die WMI-Funktion ExecNotificationQuery übergeben. Diese Funktion weiß dann, an wen sie im Bedarfsfall »zurückfunken« soll. Dieses Zurückfunken beim Eventhandler kümmert Ihr Script allerdings wenig. Es wird erst deshalb auf den Event aufmerksam, weil das Script via WScript.CreateObject selbst einen eigenen Eventhandler für den WMI-Eventhandler installiert hat. Wie das funktioniert, haben Sie ja bereits bei normalen Scripts in den vorangegangenen Kapiteln gesehen.
418
Kapitel 12: Mit WMI-Klassen arbeiten
Bild 12.4: Ihr Script kann jegliche System-Events abfangen
Damit Ihr Script allerdings etwas melden kann, müssen natürlich Events ausgelöst werden. Events werden zum Beispiel ausgelöst, wenn Sie in der Ereignisanzeige das Sicherheitslogbuch löschen. Events können aber auch per Script ausgelöst werden, und zwar so: ’ 12-19.vbs set wshshell = CreateObject("WScript.Shell") wshshell.LogEvent 1, "Hello"
Wenn Sie dieses Script ausführen, solange Ihr Event-Spion auf der Lauer liegt, dann protokolliert er eifrig mit und zeigt die Event-Mitteilung an, ohne daß Sie im Eventlog nachzuschauen brauchen.
Bild 12.5: Ihr Event-Lauscher hat einen Event abgefangen, der vom Script stammt
12.4.2 Programmstarts protokollieren Sie können jeden beliebigen Event abhören. Vielleicht wollen Sie informiert werden, wenn Programme gestartet oder beendet werden. Das leistet das nächste Script. Es bedient sich eines Tricks, damit auch wirklich nur die Programme überwacht werden, die vom Benutzer gestartet werden – und nicht etwa Programme, die das System hinter den Kulissen startet. Dazu besorgt sich das Script die ProgID des Explorers und kümmert sich nur um die Programme, die Child-Prozesse des Explorers sind. Alle Programme, die Sie über die Windows-Benutzeroberfläche starten, sind ChildProzesse des Explorers.
12.4
Mit WMI auf System-Ereignisse reagieren
419
’ 12-20.vbs Klasse = "Win32_Process" ’ Events melden sich hier und werden ans Script weitergeleitet: set Eventlauscher = WScript.CreateObject("WBEMScripting.SWBEMSink", "event_") ’ Verbindung zu WMI herstellen set locator = CreateObject("WbemScripting.SWbemLocator") ' geben Sie einen Servernamen an, wenn Sie remote überwachen wollen: set service = locator.ConnectServer() ' alle laufenden Instanzen des Explorers finden: set explorerinstances = service.ExecQuery("SELECT * FROM Win32_Process WHERE Name='explorer.exe'") ' ID herauspicken: for each inst in explorerinstances explorerprogid = inst.Handle next ' an diesen Events sind wir interessiert ' __InstanceDeletionEvent = Programm wird beendet ' __InstanceCreationEvent = Programm wird gestartet call EventAbhoeren("SELECT * FROM __InstanceDeletionEvent WITHIN 1.5 WHERE TargetInstance ISA '" & Klasse & "' AND TargetInstance.ParentProcessId=" & explorerprogid, "Prg Stop") call EventAbhoeren("SELECT * FROM __InstanceCreationEvent WITHIN 1.5 WHERE TargetInstance ISA '" & Klasse & "' AND TargetInstance.ParentProcessId=" & explorerprogid, "Prg Start") MsgBox "Eventüberwachung abschalten", vbSystemModal function EventAbhoeren(Eventanforderung, Zusatzdaten) ' aktiviert die Eventüberwachung call service.ExecNotificationQueryAsync(Eventlauscher,Eventanforderung, "WQL", 0, null, EventDaten(Zusatzdaten)) end function function EventDaten(InfoObjekt) ' fügt Daten über den Ursprung des Events hinzu set Zusatzinfos = CreateObject("WbemScripting.SWbemNamedValueSet") call Zusatzinfos.Add("data", InfoObjekt) set EventDaten = Zusatzinfos end function function Eventhandler(objObject, objAsyncContext) ' wird aufgerufen, wenn Event feuert set EventInformationen = objAsyncContext.Item("data")
420
Kapitel 12: Mit WMI-Klassen arbeiten
MsgBox EventInformationen.Value & ": " & objObject.TargetInstance.PATH_, vbSystemModal end function sub event_OnObjectReady(objObject, objAsyncContext) ' wird ausgelöst, wenn einer der abgehörten ' Events ausgelöst wird call Eventhandler(objObject, objAsyncContext) end sub
Wenn Sie das Script starten, beginnt es mit der Eventüberwachung. Starten Sie ein Programm! Sofort meldet das Script den Programmstart und könnte ihn ebensogut in eine Logbuchdatei schreiben. Beenden Sie das Programm, dann wird auch dieses Ereignis gemeldet.
Bild 12.6: Ihr Script überwacht Programmstart und Programmende
Bislang überwacht das Script nur Ihren lokalen Computer. Sie können aber ebensogut auch jeden anderen WMI-fähigen Computer im Netzwerk überwachen. Lassen Sie das Script einfach mit dem gewünschten Computer eine Verbindung eingehen (siehe Scriptcode). Wie interessant die Möglichkeiten sind, die Sie nun haben, zeigt das nächste Script. Es schließt sofort alle NOTEPAD.EXE-Programme wieder, die Sie versuchen zu starten. ’ 12-21.vbs set Eventlauscher = WScript.CreateObject("WBEMScripting.SWBEMSink", "event_") set locator = CreateObject("WbemScripting.SWbemLocator") set service = locator.ConnectServer() call EventAbhoeren("SELECT * FROM __InstanceCreationEvent WITHIN 1.5 WHERE TargetInstance ISA ’win32_process’ AND TargetInstance.Name=’notepad.exe’") MsgBox "Eventüberwachung abschalten", vbSystemModal function EventAbhoeren(Eventanforderung) ' aktiviert die Eventüberwachung call service.ExecNotificationQueryAsync(Eventlauscher,Eventanforderung, "WQL", 0, null) end function
12.4
Mit WMI auf System-Ereignisse reagieren
421
function Eventhandler(objObject, objAsyncContext) ’ wird aufgerufen, wenn Event feuert objObject.TargetInstance.Terminate (0) MsgBox "Programmausführung verboten!", vbSystemModal end function sub event_OnObjectReady(objObject, objAsyncContext) ' wird ausgelöst, wenn einer der abgehörten ' Events ausgelöst wird call Eventhandler(objObject, objAsyncContext) end sub ' (C) 2000 by Dr. Tobias Weltner
Endlich haben Sie eine Möglichkeit gefunden, dem Kollegen von Maschine 8 das Ballerspiel DOOM zu verderben...
12.4.3 Sinnvolle Management-Tools entwickeln Wie nützlich dieses neue Wissen ist, zeigt das folgende Beispiel. Speichern Sie diesen Code als check.hta (oder check.htm). Starten Sie dann bei Windows 2000 check.hta und bei Windows NT check.htm (hierzu muß der Internet Explorer die Berechtigung haben, ActiveX-Objekte auszuführen, siehe Kapitel 1.2).
Bild 12.7: Ferngesteuert Prozesse überwachen und sogar beenden – via Web
422
Kapitel 12: Mit WMI-Klassen arbeiten
Anschließend passiert etwas sehr Verblüffendes: Der Internet Explorer listet dynamisch alle laufenden Programme auf. Starten Sie neue Programme, dann werden diese der Liste hinzugefügt, und wenn Sie Programme beenden, dann verschwinden die Einträge aus der Liste. Sie können sogar auf die kleine Bombe klicken und damit die Programme ferngesteuert beenden. Das Script funktioniert nicht nur auf dem lokalen Computer. Geben Sie in ConnectServer den Namen eines anderen Computers an, dann wird eben dieser überwacht. WMI ist flexibel. Das Script ist diesmal in JavaScript geschrieben, denn diese Sprache wird von anderen Browsern ebenfalls unterstützt. Es basiert auf den VBScript-Grundlagen, die Sie oben kennengelernt haben, und könnte ebensogut in VBScript geschrieben werden: Prozeßüberwachung <SCRIPT FOR="EventLauscher" EVENT="OnObjectReady(objObject, objAsyncContext)">EventBearbeiten(objObject, objAsyncContext) <SCRIPT> // wir sind an Prozessen interessiert var KlassenName = "Win32_Process" //Mit WMI verbinden var locator = new ActiveXObject("WbemScripting.SWbemLocator"); // lokalen Computer überwachen var wmiserver = locator.ConnectServer(); var tbl; var TabBody; // ID des EXPLORER.EXE herausfinden var explorerPID = 0; // alle Instanzen des Explorers suchen var explorerinstances = wmiserver.ExecQuery('SELECT * FROM Win32_Process WHERE Name="explorer.exe"'); // alle Instanzen durchgehen var collection = new Enumerator (explorerinstances); if(!collection.atEnd()) { var processInstance = collection.item (); // letzte Instanz merken und verwenden explorerPID = processInstance.Handle; } function EventBearbeiten(objObject, objAsyncContext) {
12.4
Mit WMI auf System-Ereignisse reagieren
// Im Kontext wandern die Infos über den Event mit // Infos liegen in der Eigenschaft "Botschaft" var EventCustomInfo = objAsyncContext.Item("Botschaft"); // na, was für einen Event haben wir denn? if("BotschaftPrgStTabPElement" == EventCustomInfo.Value) { // wie heißt das Programm? var objektpfad = "" + objObject.TargetInstance.PATH_; // Tabellenmitglied finden var tabellenobjekt = document.all(objektpfad); // weg damit, falls es noch existiert! if(null != tabellenobjekt) tabellenobjekt.removeNode(true); } // Neues Programm gestartet, also ab in die Liste damit: if("BotschaftPrgStart" == EventCustomInfo.Value) { // neue Tabellenzeile anlegen var TabZeile=document.createElement("TR"); // neues Feld anlegen var TabZelle=document.createElement("TD"); // ID des neuen Programms eintragen TabZeile.appendChild(TabZelle); TabZeile.id = objObject.TargetInstance.PATH_; TabZelle.appendChild(TabelleErweitern(objObject.TargetInstance)); TabBody.appendChild(TabZeile); } } function CreateEventDataObject(objekt) { // Ein SWbemNamedValueSet mit der Eigenschaft 'Botschaft'. // anlegen. Darin kann der Event Daten transportieren, // zum Beispiel den Namen des Programms, um das es geht var CustomInfoObject = new ActiveXObject("WbemScripting.SWbemNamedValueSet"); CustomInfoObject.Add("Botschaft", objekt); return CustomInfoObject; } function ExecuteQueryAsynchron(AbfrageString, AbfrageDaten) { // Asynchron eine Abfrage starten. // Die Abfrage steht in AbfrageString
423
424
Kapitel 12: Mit WMI-Klassen arbeiten
// Daten über den Event landen in AbfrageDaten // Zugriff auf den Event-Sink herstellen, der als // Objekt auf der Webseite // liegt: var sink = document.all("EventLauscher"); // Die Abfrage ausführen wmiserver.ExecNotificationQueryAsync(sink,AbfrageString, "WQL", 0, null, CreateEventDataObject(AbfrageDaten)); } function window.onload() { // Tabellenstruktur dynamisch via DHTML generieren TabelleAnlegen(); // Festlegen, welche Events überwacht werden sollen // Wir sind an Prozessen interessiert (win32_Process), // und zwar an den Events, // die bei Prozessstart und -Ende generiert werden // __InstanceDeletionEvent // __InstanceCreationEvent ExecuteQueryAsynchron('SELECT * FROM __InstanceDeletionEvent WITHIN 1.5 WHERE TargetInstance ISA "'+KlassenName+'" AND TargetInstance.ParentProcessId='+explorerPID, "BotschaftPrgStTabPElement"); ExecuteQueryAsynchron('SELECT * FROM __InstanceCreationEvent WITHIN 1.5 WHERE TargetInstance ISA "'+KlassenName+'" AND TargetInstance.ParentProcessId='+explorerPID, "BotschaftPrgStart"); } function TabelleAnlegen() { // bastelt eine kleine Tabelle in DHTML (dynamisch) var Tabelle=document.createElement("TABLE"); var TabBodyEl=document.createElement("TBODY"); var TabZeile=document.createElement("TR"); var TabZelle=document.createElement("TD"); Tabelle.appendChild(TabBodyEl); // // // // // //
Alle Prozesse auflisten, die vom EXPLORER.EXE abstammen auf diese Weise werden alle systeminternen Prozesse ignoriert alle Programme, die über die SHELL gestartet werden, stammen eigentlich vom Explorer und sind Child-Prozesse des EXPLORER.EXE
// alle Kindprozesse herausfinden, die vom Explorer stammen
12.4
Mit WMI auf System-Ereignisse reagieren
var procs = wmiserver.ExecQuery("SELECT * FROM Win32_Process WHERE ParentProcessId = "+explorerPID); var collection = new Enumerator (procs); for (;!collection.atEnd();collection.moveNext ()) { var processInstance = collection.item (); var tabellenobjekt = TabZeile.cloneNode(); var curZelle = TabZelle.cloneNode(); curZelle.appendChild(TabelleErweitern(processInstance)); tabellenobjekt.appendChild(curZelle); tabellenobjekt.id = processInstance.PATH_; TabBodyEl.appendChild(tabellenobjekt); } document.body.appendChild(Tabelle); tbl = Tabelle; TabBody = TabBodyEl; tbl.border = "0"; tbl.curZellepadding = "0"; tbl.curZellespacing="0"; } function ProgrammLoeschen() { // Einen Prozess beenden // sobald auf die "Bombe"-Grafik geklickt wird, // findet diese Prozedur statt // Der WMI-Pfad zum Prozess liegt im IMG-Objekt und // kann dazu verwendet werden, // den aktuellen Prozess anzusprechen und zu terminieren. // Der Prozess verschwindet automatisch aus der Tabelle, denn bei seinem Ende // wird der Deletion-Event ausgelöst und vom Script behandelt var obj = window.event.srcElement; wmiserver.Delete(obj.WMIPrgPfad); } function TabelleErweitern(obj) { // Eine Zeile dynamisch zur Tabelle hinzufügen // Als Argument wird ein SWbemObject in obj übergeben. // Das ist der Prozess, // der in dieser Tabellenzeile angezeigt werden soll. var Tabelle=document.createElement("TABLE"); var TabBodyEl=document.createElement("TBODY"); var TabZeile=document.createElement("TR");
425
426
Kapitel 12: Mit WMI-Klassen arbeiten
var TabZelle=document.createElement("TD"); var tabZelleImage=TabZelle.cloneNode(); var tabImageObject=document.createElement("IMG"); TabZeile.appendChild(tabZelleImage); TabZeile.appendChild(TabZelle); Tabelle.appendChild(TabBodyEl); TabBodyEl.appendChild(TabZeile); var TabPElement = document.createElement("P"); // Name des Programms eintragen TabPElement.innerHTML = obj["Name"]; TabPElement.align = "center" TabZelle.appendChild(TabPElement); TabZelle.bgColor = "#CCCC88"; TabZelle.width = 350; tabZelleImage.width = 10; tabZelleImage.appendChild(tabImageObject); // Bild für den Image-SchaltknTabPElementf tabImageObject.src = "bombe.bmp"; tabImageObject.onclick = ProgrammLoeschen; // Wichtig: WMI-Pfad zum Programm in der Grafik // speichern, damit später bekannt ist, welches Programm // eigentlich herausgeworfen werden soll tabImageObject.WMIPrgPfad = "" + obj.PATH_; Tabelle.border = "0"; Tabelle.width = "100%"; return Tabelle } <style> p {font: 10pt Arial}
427
A
Auf der Buch-CD
Auf der Buch-CD finden Sie alle wichtigen Materialien sofort zum Loslegen. Hier eine kleine Übersicht:
A.1
Scripting Host und Zubehör
Den Windows Scripting Host finden Sie im Ordner WSH, zusammen mit dem Script-Debugger für Windows 9x und NT. Installieren Sie STE51DE.EXE auf allen Windows-Rechnern, die nicht bereits von Haus aus den WSH 2.0 mitbringen – also auf allen Windows-Versionen mit Ausnahme von Windows 2000. Um ein Script im Debugger auszuführen, installieren Sie zuerst den für Sie passenden Debugger. Windows 2000-Benutzer aufgepaßt: Sie finden den Windows 2000 Debugger als Zubehör auf der Windows 2000-CD. Wählen Sie in der Systemsteuerung das Software-Modul und dann WindowsKomponenten hinzufügen/entfernen. Aktivieren Sie dann das Häkchen vor Script Debugger. Um ein Script im Debugger auszuführen, wählen Sie im Startmenü Ausführen und geben ein: WSCRIPT.EXE //X Scriptname. Geben Sie den vollen Pfadnamen für Ihr Script an. Sie können auch das folgende Service-Script verwenden: set args = WScript.Arguments if args.Count=0 then MsgBox "Bitte ziehen Sie eine Scriptdatei auf mein Icon!" WScript.Quit else set wshshell = CreateObject("WScript.Shell") wshshell.Run "WSCRIPT.EXE //X """ & args(0) & """" end if
Im Unterordner DOKUMENTATION finden Sie die Hilfedateien für den WSH sowie die Programmiersprachen VBScript und JScript.
A.2
Scripting Spy – Das Spionagetool
Im Ordner SCRIPTING SPY finden Sie das Setup-Programm für das Spionagetool Scripting Spy. Rufen Sie SETUP.EXE auf, um das Tool bei Ihnen zu installieren. Damit der Scripting Spy läuft, muß zuerst der WSH installiert werden (siehe oben). Beachten Sie bitte auch die Hinweise in
428
Anhang A: Auf der Buch-CD
Kapitel 2. Der Scripting Spy ist noch im Experimentierstadium und startet unter Umständen je nach Struktur Ihrer Registry nicht durch. Sollten Sie Probleme mit dem Scripting Spy haben, dann deinstallieren Sie das Tool wieder mit dem Software-Modul Ihrer Systemsteuerung. Sie finden eine etwas abgespeckte Variante im Unterordner SCRIPTING SPY LIGHT, die unempfindlicher ist, aber nicht ganz so viele Möglichkeiten bietet.
A.3
Scriptbeispiele öffnen statt abtippen
Alle Scripts dieses Buches finden Sie nach Kapiteln sortiert im Ordner SKRIPTBEISPIELE. Am besten kopieren Sie sich diesen ganzen Ordner auf die Festplatte. Denken Sie bitte daran: Alle Dateien, die Sie von CD auf die Festplatte kopieren, behalten zunächst das Schreibgeschützt-Dateiattribut. Sie müssen Dateien, die Sie ändern wollen, zuerst mit der rechten Maustaste anklicken und dann Eigenschaften wählen. Löschen Sie danach im Dialogfenster das Schreibgeschützt-Attribut, und klicken Sie auf OK.
A.4
Visual Basic-Entwicklungsumgebung
Im Ordner VISUAL BASIC CCE finden Sie die Visual Basic Control Creation Edition, mit der Sie Befehlserweiterungen für Ihre Scripts schreiben können. Installieren Sie die Programmierwerkstatt, indem Sie VB5CCEIN.EXE ausführen.
A.5
Programmierprojekte en masse
Alle Programmierprojekte – vor allem die vielen Projekte aus Kapitel 8 – finden Sie im Ordner PROGRAMMIERPROJEKTE. Öffnen Sie die VBP-Dateien jeweils in Ihrer Visual Basic CCE. Die Einführungsbeispiele zur VB CCE finden Sie im Ordner BEISPIELE.
A.6
WMI – Tools für wahres WMI-Vergnügen
Im Ordner WMI finden Sie alles, was Sie für WMI (Kapitel 11 und 12) benötigen. Besonders wichtig ist der Unterordner KLASSEN. Darin finden Sie die komplette WMI-Klassenreferenz, und wenn Sie diesen Ordner im Explorer öffnen, dann können Sie über [F3] sogar bequem nach Suchwörtern fahnden. Geben Sie einfach ins Enthaltener Text-Feld den gesuchten Befehlsnamen ein.
429
B
WMI Klassenreferenz
B.1 Wie Sie diese Referenz nutzen... Die Kapitel 11 und 12 haben Ihnen den Einstieg in WMI geliefert. Probieren Sie einfach aus, welche Informationen die einzelnen Klassen, die dieser Anhang listet, auf Ihrem System enthalten. Dazu verwenden Sie das Skript 11-20.vbs und geben den Klassennamen ein, der Sie interessiert. Versuchen Sie zum Beispiel Win32_Account oder Win32_NetworkAdapter. Welche Informationen tatsächlich zurückgeliefert werden, hängt stark von Ihrem System und dem Grad ab, in dem die Gerätetreiber WMI bereits unterstützen.
B.2 Win32_1394Controller result as Integer = SetPowerState »SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Pa(PowerState as Integer, Time as rameter »PowerState« folgende Werte festgelegt werden: 1=»Kein EnerDate/Time) giesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. result as Integer = Reset Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an.
LastErrorCode Manufacturer MaxNumberControlled Name
PNPDeviceID
Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die den 1394Controller von anderen Geräten im System unterscheidet. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »Manufacturer« gibt den Hersteller des 1394-Controllers an. Beispiel: Acme Maximale Anzahl der direkt adressierbaren Einheiten, die vom Controller unterstützt werden. Wenn der Wert unbekannt ist, geben Sie 0 ein. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b
Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht daß die Energieverwaltungsfunktionen aktiviert sind. Das vom Controller zum Zugriff auf gesteuerte Geräte verwendete Protokoll. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während dem erneuten Spiegeln eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Eigenschaft »TimeOfLastReset« gibt an, wann der Controller zuletzt zurückgesetzt (ausgeschalten oder erneut initialisiert) wurde.
432
Anhang B: WMI Klassenreferenz
B.3 Win32_1394ControllerDevice AccessState
Antecedent Dependent NegotiatedDataWidth
NegotiatedSpeed
NumberOfHardResets NumberOfSoftResets
Die Eigenschaft »AccessState« gibt an, ob der Controller das Gerät steuert oder darauf zugreift (Wert=1) oder nicht (Wert=2). Es kann auch der Wert »Unbekannt« (0) definiert werden. Diese Informationen sind erforderlich, wenn ein logisches Gerät von mehreren Controllern gesteuert werden kann. Die Referenz »Win32_1394Controller« stellt den dem Gerät zugeordneten 1394-Controller dar. Die Referenz »CIM_LogicalDevice« stellt das mit dem 1394-Controller verbundene logische CIM-Gerät dar. Wenn mehrere Bus- und/oder Verbindungsdatenbreiten möglich sind, definiert die Eigenschaft »NegotiatedDataWidth« die verwendete Datenbreite in Bits. Wenn die Datenbreite nicht ausgehandelt wurde oder diese Informationen nicht verfügbar sind, sollte der Wert der Eigenschaft 0 sein. Wenn mehrere Bus- und/oder Verbindungsgeschwindigkeiten möglich sind, definiert die Eigenschaft »NegotiatedSpeed« die verwendete Geschwindigkeit in Bits pro Sekunde. Wenn die Verbindungs- oder Busgeschwindigkeit nicht ausgehandelt wurde oder diese Informationen nicht verfügbar sind, sollte der Wert der Eigenschaft 0 sein. Anzahl der vom Controller ausgelösten Kaltstarts. Anzahl der vom Controller ausgelösten Warmstarts.
Bitflags, die die dem Vertrauensnehmer erteilten/verweigerten Rechte darstellen. Bitflags, die die Vererbung von ACE angeben. Der Typ des ACE-Eintrags. Die dem übergeordneten Objekt mit diesen Rechten zugeordnete GUID. Die dem Objekttyp mit diesen Rechten zugeordnete GUID. Der Vertrauensnehmer des ACE-Eintrags.
B.5 Win32_Account Caption Description Domain
Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »Domain« gibt den Namen der Windows-Domäne an, zu der eine Gruppe oder ein Benutzer gehört. Beispiel: NA-SALES
B.6 Win32_AccountSID InstallDate
Name SID
SIDType
Status
Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »Name« gibt den Namen des Win32-Systemkontos in der Domäne an, der vom Domänenmitglied der Klasse definiert wurde. Die Eigenschaft »SID« enthält die SID (Security Identifier) für dieses Konto. Eine SID ist ein variabler Zeichenfolgenwert zum Identifizieren eines Vertrauensnehmers. Jedes Konto besitzt eine von einer Autorität (z.B. einer Windows-Domäne) ausgestellte eindeutige SID, die in einer Sicherheitsdatenbank gespeichert wird. Wenn sich ein Benutzer anmeldet, wird seine SID aus der Datenbank abgefragt und in das Zugriffstoken eingetragen. Anhand der SID im Zugriffstoken wird der Benutzer in allen nachfolgenden Interaktionen mit Windows-Sicherheit identifiziert. Wenn eine SID als eindeutige Kennung für einen Benutzer oder eine Gruppe verwendet wurde, kann sie nicht für einen anderen Benutzer bzw. eine andere Gruppe verwendet werden. Die Eigenschaft »SIDType« enthält Werte, die den SID-Typ angeben: SidTypeUser – Gibt eine Benutzer-SID an. SidTypeGroup – Gibt eine GruppenSID an. SidTypeDomain – Gibt eine Domänen-SID an. SidTypeAlias – Gibt eine Alias-SID an. SidTypeWellKnownGroup – Gibt eine SID für eine bekannte Gruppe an. SidTypeDeletedAccount – Gibt eine SID für ein gelöschtes Konto an. SidTypeInvalid – Gibt eine ungültige SID an. SidTypeUnknown – Gibt einen unbekannten SID-Typ an. SidTypeComputer – Gibt eine SID für einen Computer an. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMARTaktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
B.6 Win32_AccountSID Element Setting
433
Konto Die SID des Kontos
434
Anhang B: WMI Klassenreferenz
B.7 Win32_AllocatedResource Antecedent Dependent
Die Referenz »Antecedent« stellt die Eigenschaften einer für das logische Gerät verfügbaren Systemressource dar. Die Referenz »Dependent« stellt die Eigenschaften des logischen Geräts dar, das die zugeordneten Systemressourcen verwendet.
Verweist auf die Anwendung. references the commandline used to access the antecedent.
B.9 Win32_ApplicationService result as Integer = StartService Die Methode »StartService« startet den Dienst. Der Wert 0 wird zurückgegeben, wenn der Dienst einwandfrei gestartet wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. result as Integer = StopService Die Methode »StopService« hält den Dienst an. Der Wert 0 wird zurückgegeben, wenn der Dienst einwandfrei angehalten wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Caption Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. CreationClassName »CreationClassName« gibt den Namen der Klasse oder Teilklasse an, die beim Erstellen einer Instanz verwendet wird. Wenn diese Eigenschaft mit anderen Schlüsseleigenschaften dieser Klasse verwendet wird, können alle Instanzen der Klasse und der Teilklassen eindeutig erkannt werden. Description Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. InstallDate Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Name Die Eigenschaft »Name« gibt den Dienst und die verwalteten Funktionen an. Die Funktionen werden in der Eigenschaft »Description« des Objekts genauer beschrieben. Started Der boolesche Wert »Started« gibt an, ob der Dienst gestartet (TRUE) oder angehalten (FALSE) wurde. StartMode »StartMode« ist eine Zeichenfolge, die angibt, ob der Dienst automatisch vom Betriebssystem oder nur manuell gestartet wird.
B.10 Win32_AssociatedBattery Status
SystemCreationClassName SystemName
435
Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMARTaktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Der Typname des Systems, auf dem sich der Dienst befindet. Der Name des Systems, auf dem sich der Dienst befindet.
B.10 Win32_AssociatedBattery Antecedent Dependent
Die Referenz »Antecedent« stellt die Eigenschaften einer Batterie dar, die vom logischen Gerät verwendet wird. Die Referenz »Dependent« stellt die Eigenschaften eines logischen Geräts dar, das die Batterie verwendet.
Die Referenz »Antecedent« stellt den für den Prozessor verfügbaren Cache dar. Busgeschwindigkeit in MHz (Prozessor/Speicher). Die Referenz »Dependent« stellt den Prozessor dar, der den Cache verwendet.
Die Eigenschaft »BiosCharacteristics« gibt die BIOS-Funktionen an, die vom System unterstützt werden (definiert in System Management BIOS Reference Specification). Die interne Kennung für die Kompilierung der Softwarekomponente. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Der von der Softwarekomponente verwendete Codesatz. Die Eigenschaft »CurrentLanguage« gibt den Namen der aktuellen BIOS-Sprache an. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an.
Der Wert dieser Eigenschaft gibt die Herstellerkennung der Softwarekomponente an, z.B. eine SKU (Stock Keeping Unit) oder eine Teilenummer. Die Eigenschaft »InstallableLanguages« gibt die Anzahl der Sprachen an, die auf diesem System installiert werden können. Abhängig von der Sprache sind Eigenschaften wie z.B. Unicode und bidirektionaler Text erforderlich. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Der Wert dieser Eigenschaft gibt die Sprachversion der Softwarekomponente an. Es sollten die in ISO 639 definierten Sprachcodes verwendet werden. Wenn es sich bei der Softwarekomponente um eine mehrsprachige oder internationale Version handelt, verwenden Sie die Multilingual-Zeichenfolge. Die Eigenschaft »ListOfLanguages« enthält eine Liste der installierbaren BIOSSprachen. Hersteller der Softwarekomponente. Der Name zum Identifizieren der Softwarekomponente. Die Eigenschaft »OtherTargetOS« gibt den Hersteller und den Betriebssystemtyp einer Softwarekomponente an, wenn die Eigenschaft »TargetOperatingSystem« den Wert 1 (»Andere«) hat. Wenn die Eigenschaft »TargetOperatingSystem« den Wert »Andere« hat, darf der Wert der Eigenschaft »OtherTargetOS« nicht Null sein. Wenn die Eigenschaft »TargetOperatingSystem« einen anderen Wert hat, muß der Wert der Eigenschaft »OtherTargetOS« Null sein. True gibt an, daß dieses BIOS das primäre BIOS des Computersystems ist. Die Eigenschaft »ReleaseDate« gibt das Freigabedatum des Win32-BIOS im folgenden UTC-Format an: YYYYMMDDHHMMSS.MMMMMM(+-)OOO. Die der Softwarekomponente zugewiesene serielle Nummer. Die Eigenschaft »SMBIOSBIOSVersion« enthält die im SMBIOS angegebene BIOS-Version. Die Eigenschaft »SMBIOSMajorVersion« enthält die SMBIOS-Hauptversionsnummer. Diese Eigenschaft ist Null, wenn SMBIOS nicht gefunden wurde. Die Eigenschaft »SMBIOSMinorVersion« enthält die minimale SMBIOS-Versionsnummer. Diese Eigenschaft ist Null, wenn SMBIOS nicht gefunden wurde. Die Eigenschaft »SMBIOSPresent« gibt an, ob SMBIOS auf diesem Computersystem verfügbar ist. Werte: TRUE oder FALSE. TRUE gibt an, daß SMBIOS verfügbar ist. Eine Kennung für die Softwarekomponente, die in Verbindung mit anderen Schlüsseln verwendet wird, um »CIM_SoftwareElement« eindeutig darzustellen.
B.13 Win32_BaseBoard SoftwareElementState
Status
TargetOperatingSystem
Version
437
Der »SoftwareElementState« wird in diesem Modell festgelegt, um verschiedene Zustände eines Softwareelements während seiner Lebensdauer anzuzeigen. – Ein Softwareelement im einsetzbaren Status zeigt die erforderlichen Details zum Verteilen und die Bedingungen und Vorgänge an, die zum Erstellen eines Softwareelements im installierbaren Status (z.B. der nächsten Status) Vorraussetzung sind. – Ein Softwareelement im installierbaren Zustand zeigt die erforderlichen Details zum Installieren und die Bedingungen und Vorgänge an, die zum Erstellen eines Softwareelements im ausführbaren Status (z.B. der nächsten Status) Vorraussetzung sind. – Ein Softwareelement im ausführbaren Status zeigt die erforderlichen Details zum Installieren und die Bedingungen und Vorgänge an, die zum Erstellen eines Softwareelements im ausführenden Status (z.B. der nächsten Status) Vorraussetzung sind. – Ein Softwareelement im ausführenden Status zeigt die erforderlichen Details zum Überprüfen und Ausführen eines Startelements an. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Eigenschaft »TargetOperatingSystem« ermöglicht das Festlegen der Betriebssystemumgebung. Die Version des Betriebssystems und die Architektur müssen angegeben werden, da der Wert dieser Eigenschaft die binäre Ausführung nicht sicherstellt. Diese Informationen ermöglichen es, die für eine Softwarekomponente erforderliche Betriebssystemebene eindeutig festzulegen. Die Eigenschaft »Version« enthält die BIOS-Version. Diese Zeichenfolge wird vom BIOS-Hersteller erstellt.
B.13 Win32_BaseBoard result as Integer = IsCompatible (ElementToCheck???)
Caption ConfigOptions
Die Methode »IsCompatible« gibt an, ob das physikalische Element im physikalischen Paket enthalten ist oder hinzugefügt werden kann. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »ConfigOptions« enthält Zeichenfolgen, die die Konfiguration der Jumper und Schalter auf dem Motherboard beschreiben. Beispiel: JP2: 1-2 Cachegröße 256 KB, 2-3 Cachegröße 512 KB.
»CreationClassName« gibt den Namen der Klasse oder Teilklasse an, die beim Erstellen einer Instanz verwendet wird. Wenn diese Eigenschaft mit anderen Schlüsseleigenschaften dieser Klasse verwendet wird, können alle Instanzen der Klasse und der Teilklassen eindeutig erkannt werden. Die Tiefe des physikalischen Pakets in Zoll. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Höhe des physikalischen Pakets in Zoll. Boolescher Wert, der angibt, daß es sich bei der Karte um ein Motherboard in einem Chassis handelt. Ein physikalisches Paket kann in Betrieb ausgetauscht werden, wenn es durch ein physikalisch unterschiedliches, aber gleichwertiges ersetzt werden kann, während der Container eingeschaltet ist. Ein Laufwerkpaket, das mit SCA-Steckverbindungen eingefügt wird, ist z.B. in Betrieb austauschbar. Alle in Betrieb austauschbaren Pakete sind ersetzbar. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Der Name der Organisation, die für die Herstellung des physikalischen Elements verantwortlich ist. Der Name der physikalischen Komponente. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. »OtherIdentifyingInfo« erfaßt außer Bestandskennzeichnungsinformationen auch Daten, die dazu verwendet werden können, physikalische Elemente zu identifizieren. Ein Beispiel dafür sind Barcodedaten, die mit einem Element verbunden sind, das auch über eine Bestandskennzeichnung verfügt. Hinweis: Wenn nur Barcodedaten verfügbar sind, die allein als Elementschlüssel verwendet werden können, ist diese Eigenschaft NULL, und die Barcodedaten werden in der Eigenschaft »Tag« als Klassenschlüssel verwendet. Die Einzelteilnummer, die von der Organisation, die für die Produktion und Herstellung des physikalischen Elements verantwortlich ist, zugewiesen wurde. Boolescher Wert, der angibt, ob die physikalische Komponente eingeschaltet (TRUE) oder ausgeschaltet (FALSE) ist. Die Eigenschaft »Product« gibt die Teilenummer des Motherboards an.
B.13 Win32_BaseBoard Removable
Replaceable
RequirementsDescription
RequiresDaughterBoard
SerialNumber SKU SlotLayout
SpecialRequirements
439
Ein physikalisches Paket ist austauschbar, wenn es aus seinem physikalischen Container entfernt werden kann, ohne die Funktion des Gesamtpakets zu beeinträchtigen. Ein Paket ist auch austauschbar, wenn das Gerät bei der Entnahme ausgeschaltet sein muß. Wenn das Gerät bei der Entnahme eingeschaltet sein kann, ist das Element in Betrieb austauschbar. Eine zusätzliche Batterie in einem Laptop ist z.B. austauschbar und ein Laufwerkpaket, das mit SCA-Steckverbindungen eingefügt wird, ist in Betrieb austauschbar. Ein Laptopbildschirm und eine nicht redundante Stromversorgung sind nicht austauschbar. Wenn diese Komponenten entfernt werden, werden die Funktionen des Gesamtpakets beeinträchtigt. Ein physikalisches Paket ist austauschbar, wenn sie durch ein physikalisch unterschiedliches Element ersetzt (oder aktualisiert) werden kann. Bei einigen Computersystemen ist es z.B. möglich, den Hauptprozessorchip durch einen Chip mit einer höheren Taktfrequenz zu ersetzen. Ein weiteres Beispiel ist ein Energieversorgungspaket auf Gleitschienen. Alle austauschbaren Pakete sind durch Vererbung ersetzbar. Eine formfreie Zeichenfolge, die beschreibt, wie sich diese Karte physikalisch von den anderen Karten unterscheidet. Diese Eigenschaft ist nur gültig, wenn die Eigenschaft »SpecialRequirements« TRUE ist. Boolescher Wert, der angibt, daß mindestens ein Daughterboard oder eine Zusatzkarte für die ordnungsgemäße Ausführung erforderlich ist. Eine Herstellernummer zum Identifizieren des physikalischen Elements. Die SKU-Nummer für das physikalische Element. Die formfreie Zeichenfolge »SlotLayout« beschreibt die Steckplatzposition, die typische Verwendung, Einschränkungen, den Abstand zwischen den Steckplätzen und andere Informationen für die Steckplätze auf einer Karte. Boolescher Wert, der angibt, daß sich diese Karte von den anderen Karten des gleichen Typs unterscheidet und einen speziellen Steckplatz erfordert. Für eine doppelt breite Karte sind z.B. zwei Steckplätze erforderlich. Ein weiteres Beispiel ist, wenn eine bestimmte Karte für die gleiche allgemeine Funktion wie andere Karten verwendet wird, aber einen speziellen Steckplatz erfordert (z.B. extra lang). Wenn der Wert TRUE ist, sollte die Karte in der Eigenschaft »RequirementsDescription« beschrieben werden.
440
Anhang B: WMI Klassenreferenz
Status
Tag Version Weight Width
Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Eigenschaft »Tag« gibt das Motherboard des Systems an. Beispiel: Motherboard Eine Zeichenfolge, die die Version des physikalischen Elements angibt. Das Gewicht des physikalischen Pakets in Pfund. Die Breite des physikalischen Pakets in Zoll.
B.14 Win32_BaseService result as Integer = StartService
Die Methode »StartService« startet den Dienst. Folgende Werte werden zurückgegeben: 0 – Die Anforderung wurde angenommen. 1 – Die Anforderung wird nicht unterstützt. 2 – Der Benutzer verfügt nicht über die erforderlichen Zugriffsrechte. 3 – Der Dienst kann nicht angehalten werden, da aktive Dienste von ihm abhängig sind. 4 – Der angeforderte Steuerungscode ist ungültig oder wird nicht angenommen. 5 – Der angeforderte Steuerungscode kann nicht an den Dienst gesendet werden, da der Dienststatus (Win32_BaseService: State) 0, 1 oder 2 ist. 6 – Der Dienst wurde nicht gestartet. 7 – Der Dienst hat nicht rechtzeitig auf die Startanforderung reagiert. 8 – Beim Starten des Dienstes ist ein unbekannter Fehler aufgetreten. 9 – Der Verzeichnispfad zur ausführbaren Datei wurde nicht gefunden. 10 – Der Dienst wird bereits ausgeführt. 11 – Die Datenbank zum Hinzufügen eines neuen Dienstes ist gesperrt. 12 – Eine für den Dienst erforderliche Abhängigkeit wurde vom System entfernt. 13 – Der für einen abhängigen Dienst erforderliche Dienst konnte nicht gefunden werden. 14 – Der Dienst wurde deaktiviert. 15 – Der Dienst verfügt nicht über die zum Ausführen erforderliche Authentifizierung. 16 – Der Dienst wurde entfernt. 17 – Für den Dienst ist kein Ausführungsthread vorhanden. 18 – Ringabhängigkeiten beim Starten des Dienstes.
B.14 Win32_BaseService
441
19 – Ein Dienst mit dem gleichen Namen wird bereits ausgeführt. 20 – Ungültige Zeichen im Dienstnamen. 21 – An den Dienst wurden ungültige Parameter übergeben. 22 – Das Konto, unter dem der Dienst ausgeführt wird, ist ungültig oder verfügt nicht über die erforderlichen Rechte. 23 – Der Dienst ist in der Dienstdatenbank des Systems vorhanden. 24 – Der Dienst wurde angehalten. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Service Functions|StartService result as Integer = Die Methode »StopService« hält den Dienst an. Der Wert 0 StopService wird zurückgegeben, wenn der Dienst einwandfrei angehalten wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Service Functions|ControlService|dwControl| SERVICE_CONTROL_STOP result as Integer = Die Methode »PauseService« hält den Dienst an. Der Wert 0 PauseService wird zurückgegeben, wenn die Anforderung angenommen wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Service Functions|ControlService|dwControl| SERVICE_CONTROL_PAUSE result as Integer = Die Methode »ResumeService« setzt den Dienst fort. Der ResumeService Wert 0 wird zurückgegeben, wenn die Anforderung angenommen wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Service Functions|ControlService|dwControl| SERVICE_CONTROL_CONTINUE result as Integer = Die Methode »InterrogateService« erfordert, daß der DienstInterrogateService status aktualisiert wird. Der Wert 0 wird zurückgegeben, wenn die Anforderung angenommen wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Befehl wird von folgender APIFunktion bereitgestellt: Win32API|Service Functions|Control Service|dwControl|SERVICE_CONTROL_INTERROGATE Die Methode »UserControlService« sendet einen benutzerderesult as Integer = UserControlService(ControlCode as Integer) finierten Steuerungscode an einem Dienst. Der Wert 0 wird ControlCode=Der Parameter »ControlCode« zurückgegeben, wenn die Anforderung angenommen wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. gibt definierte Werte (von 128 bis 255) für Andere Werte zeigen einen Fehler an. benutzerspezifische Steuerbefehle an. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Service Functions|CreateService|dwDesiredAccess| SERVICE_USER_DEFINED_CONTROL
442
Anhang B: WMI Klassenreferenz
result as Integer = Create (DesktopInteract as Boolean, DisplayName as String, ErrorControl as Integer, LoadOrderGroup as String, LoadOrderGroupDependencies as String, Name as String, PathName as String, ServiceDependencies as String, ServiceType as Integer, StartMode as String, StartName as String, StartPassword as String) DesktopInteract=Der Parameter »DesktopInteract« übergibt den Wert, der angibt, ob der Dienst mit Fenstern auf dem Desktop kommunizieren bzw. diese erstellen kann. Werte: TRUE oder FALSE. TRUE gibt an, daß der Dienst mit Fenstern auf dem Desktop kommunizieren oder diese erstellen kann. DisplayName=Der Parameter »DisplayName« übergibt den angezeigten Namen des Dienstes. Die Zeichenfolge darf aus maximal 256 Zeichen bestehen. Für den Namen muß die Groß/Kleinschreibung beachtet werden. Für den Vergleich von angezeigten Namen muß die Groß-/Kleinschreibung nicht beachtet werden. Einschränkungen: Akzeptiert den gleichen Wert wie der Parameter »Name«. Beispiel: Atdisk. ErrorControl=Wenn die Methode »Create« nicht gestartet wird, übergibt der Parameter »ErrorControl« den Schweregrad des Fehlers. Der Wert gibt den Startvorgang an, wenn ein Fehler auftritt. Alle Fehler werden vom System protokolliert. Der Benutzer wird bei normalen Fehlern benachrichtigt (nicht bei Fehlern die ignoriert werden können). Bei schwerwiegenden Fehlern wird das System mit der letzten funktionierenden Konfiguration neu gestartet. Bei kritischen Fehlern wird versucht, das System mit einer funktionierenden Konfiguration neu zu starten. Values = Array: 0=Ignorieren 1=Normal 2=Schwerwiegend 3=Kritisch
Die Methode »Create« erstellt einen neuen Dienst. Der Wert 0 wird zurückgegeben, wenn der Dienst einwandfrei erstellt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Der Parameter »Win32_LoadOrderGroup« stellt eine Gruppierung der Systemdienste dar, die die Ausführungsabhängigkeiten definieren. Die Dienste müssen in der in der Ladegruppe angegebenen Reihenfolge initialisiert werden, da sie voneinander abhängig sind. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Service Functions|CreateService.
B.14 Win32_BaseService LoadOrderGroup=Der Parameter »LoadOrderGroup« übergibt den Gruppennamen des neuen Dienstes. Ladegruppen sind in der Registrierung enthalten und legen die Reihenfolge fest, in der Dienste im Betriebssystem geladen werden. Wenn der Zeiger Null ist oder auf eine leere Zeichenfolge zeigt, gehört der Dienst keiner Gruppe an. Abhängigkeiten zwischen Gruppen sind im Parameter »LoadOrderGroupDependencies« angegeben. Dienste, die in der Ladegruppenliste aufgeführt sind, werden zuerst gestartet. Danach folgen die Dienste in Gruppen, die nicht in der Ladegruppenliste aufgeführt sind, und Dienste, die zu keiner Gruppe gehören. Ladegruppen in der Registrierung: HKEY_LOCAL_ MACHINE\System\CurrentControlSet\ Control\ServiceGroupOrder. LoadOrderGroupDependencies=Der Parameter »LoadOrderGroupDependencies« übergibt eine Liste der Ladegruppen, die vor dem Dienst gestartet werden müssen. Das Array ist mit zwei Nullen abgeschlossen. Wenn der Zeiger Null ist oder auf eine leere Zeichenfolge zeigt, hat der Dienst keine Abhängigkeiten. Gruppennamen muß das SC_GROUP_ IDENTIFIER-Zeichen (definiert in der Datei WINSVC.H) vorangestellt sein, damit sie von Dienstnamen unterschieden werden können, da Dienste und Dienstgruppen den gleichen Namespace haben. Eine Gruppenabhängigkeit bedeutet, daß der Dienst ausgeführt werden kann, wenn mindestens ein Mitglied dieser Gruppen, nach dem Versuch alle Mitglieder der Gruppen zu starten, ausgeführt wird. Name=Der Parameter »Name« übergibt den Namen des mit der Methode »Create« zu installierenden Dienstes. Die Zeichenfolge darf aus maximal 256 Zeichen bestehen. In der Datenbank des Dienststeuerungs-Managers wird die Groß-/Kleinschreibung der Zeichen gespeichert. Für Vergleiche von Dienstnamen wird die Groß-/Kleinschreibung nicht beachtet. Schrägstriche und doppelte umgekehrte Schrägstriche sind in Dienstnamen ungültig.
443
444
Anhang B: WMI Klassenreferenz
PathName=Der Parameter »PathName« übergibt den vollqualifizierten Pfad zur ausführbaren Datei, die den Dienst implementiert. Beispiel: \SystemRoot\System32\ drivers\afd.sys ServiceDependencies=Der Parameter »ServiceDependencies« übergibt eine Liste mit den Namen der Dienste, die vor diesem Dienst gestartet werden müssen. Das Array ist mit zwei Nullen abgeschlossen. Wenn der Zeiger Null ist oder auf eine leere Zeichenfolge zeigt, hat der Dienst keine Abhängigkeiten. Eine Dienstabhängigkeit bedeutet, daß dieser Dienst nur ausgeführt werden kann, wenn auch der Dienst ausgeführt wird, von dem er abhängig ist. ServiceType=Der Parameter »ServiceType« übergibt den Diensttyp für aufrufende Prozeß. BitValues = Array: 0=Kernel-Treiber 1=Dateisystemtreiber 2=Adapter 3=Erkennungstreiber 4=Prozeßeigener Dienst 5=Freigabeprozess StartMode=Der Parameter »StartMode« übergibt den Startmodus des Win32-Basisdienstes. »Boot« gibt einen vom Ladeprogramm des Betriebssystems gestarteten Gerätetreiber an. Dieser Wert ist nur für Treiberdienste gültig. »Automatisch« gibt einen Dienst an, der vom Dienststeuerungs-Manager während dem Systemstart gestartet wird. »Manuell« gibt einen Dienst an, der vom DienststeuerungsManager gestartet wird, wenn die Funktion »StartService« aufgerufen wird. »Deaktiviert« gibt einen Dienst an, der nicht mehr gestartet werden kann. ValueMap = Array: 0=Boot 1=System 2=Automatic 3=Manual 4=Disabled
B.14 Win32_BaseService Values = Array: 0=Bootstart 1=Systemstart 2=Automatisch starten 3=Manuell starten 4=Deaktiviert StartName=Der Parameter »StartName« übergibt den Kontonamen, unter dem der Dienst ausgeführt wird. Abhängig vom Diensttyp kann der Kontoname folgendes Format haben: »Domänenname\Benutzername«. Der Dienstprozeß wird beim Ausführen mit einem dieser Formate protokolliert. Wenn das Konto zu einer integrierten Domäne gehört, kann ».\Benutzername« angegeben werden. Wenn NULL angegeben ist, wird der Dienst als lokales Systemkonto angemeldet. Für Kernel- oder Systemtreiber enthält »StartName« den Treiberobjektnamen (\Dateisystem\Rdr oder \Treiber\Xns), den das E/A-System verwendet, um die Gerätetreiber zu laden. Wenn NULL angegeben ist, wird der Treiber mit dem vom E/A-System basierend auf dem Dienstnamen erstellten Standardobjektnamen ausgeführt. Beispiel: DWDOM\Admin. StartPassword=Der Parameter »StartPassword« übergibt das Kennwort für den im Parameter »StartName« angegebenen Kontonamen. Geben Sie Null an, wenn das Kennwort nicht geändert wird. Lassen Sie die Zeichenfolge leer, wenn der Dienst kein Kennwort hat. result as Integer = Change(DesktopInteract as Boolean, DisplayName as String, ErrorControl as Integer, LoadOrderGroup as String, LoadOrderGroupDependencies as String, PathName as String, ServiceDependencies as String, ServiceType as Integer, StartMode as String, StartName as String, StartPassword as String) DesktopInteract=Der Parameter »DesktopInteract« übergibt den Wert, der angibt, ob der Dienst mit Fenstern auf dem Desktop kommunizieren bzw. diese erstellen kann.
445
Die Methode »Change« ändert einen Dienst. Der Wert 0 wird zurückgegeben, wenn der Dienst einwandfrei erstellt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Der Parameter »Win32_LoadOrderGroup« stellt eine Gruppierung der Systemdienste dar, die die Ausführungsabhängigkeiten definieren. Die Dienste müssen in der in der Ladegruppe angegebenen Reihenfolge initialisiert werden, da sie voneinander abhängig sind. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Service Functions|ChangeServiceConfig
446
Anhang B: WMI Klassenreferenz
Werte: TRUE oder FALSE. TRUE gibt an, daß der Dienst mit Fenstern auf dem Desktop kommunizieren oder diese erstellen kann. DisplayName=Der Parameter »DisplayName« übergibt den angezeigten Namen des Dienstes. Die Zeichenfolge darf aus maximal 256 Zeichen bestehen. Für den Namen muß die Groß-/Kleinschreibung beachtet werden. Für den Vergleich von angezeigten Namen muß die Groß-/Kleinschreibung nicht beachtet werden. Einschränkungen: Akzeptiert den gleichen Wert wie der Parameter »Name«. Beispiel: Atdisk. ErrorControl=Wenn der Dienst nicht gestartet wird, übergibt der Parameter »ErrorControl« den Schweregrad des Fehlers. Der Wert gibt den Startvorgang an, wenn ein Fehler auftritt. Alle Fehler werden vom System protokolliert. Der Benutzer wird bei normalen Fehlern benachrichtigt (nicht bei Fehlern die ignoriert werden können). Bei schwerwiegenden Fehlern wird das System mit der letzten funktionierenden Konfiguration neu gestartet. Bei kritischen Fehlern wird versucht, das System mit einer funktionierenden Konfiguration neu zu starten. Values = Array: 0=Ignorieren 1=Normal 2=Schwerwiegend 3=Kritisch LoadOrderGroup=Der Parameter »LoadOrderGroup« übergibt den Gruppennamen, dem er zugeordnet ist. Ladegruppen sind in der Registrierung enthalten und legen die Reihenfolge fest, in der Dienste im Betriebssystem geladen werden. Wenn der Zeiger Null ist oder auf eine leere Zeichenfolge zeigt, gehört der Dienst keiner Gruppe an. Abhängigkeiten zwischen Gruppen sind im Parameter »LoadOrderGroupDependencies« angegeben. Dienste, die in der Ladegruppenliste aufgeführt sind, werden zuerst gestartet.
B.14 Win32_BaseService Danach folgen die Dienste in Gruppen, die nicht in der Ladegruppenliste aufgeführt sind, und Dienste, die zu keiner Gruppe gehören. Ladegruppen in der Registrierung: HKEY_ LOCAL_MACHINE\System\ CurrentControlSet\Control\ ServiceGroupOrder. LoadOrderGroupDependencies=Der Parameter »LoadOrderGroupDependencies« übergibt eine Liste der Ladegruppen, die vor dem Dienst gestartet werden müssen. Das Array ist mit zwei Nullen abgeschlossen. Wenn der Zeiger Null ist oder auf eine leere Zeichenfolge zeigt, hat der Dienst keine Abhängigkeiten. Gruppennamen muß das SC_GROUP_IDENTIFIER-Zeichen (definiert in der Datei WINSVC.H) vorangestellt sein, damit sie von Dienstnamen unterschieden werden können, da Dienste und Dienstgruppen den gleichen Namespace haben. Eine Gruppenabhängigkeit bedeutet, daß der Dienst ausgeführt werden kann, wenn mindestens ein Mitglied dieser Gruppen, nach dem Versuch alle Mitglieder der Gruppen zu starten, ausgeführt wird. PathName=Der Parameter »PathName« übergibt den vollqualifizierten Pfad der binären Datei, die den Dienst implementiert. Beispiel: \SystemRoot\System32\drivers\afd.sys ServiceDependencies=Der Parameter »ServiceDependencies« übergibt eine Liste mit den Namen der Dienste, die vor diesem Dienst gestartet werden müssen. Das Array ist mit zwei Nullen abgeschlossen. Wenn der Zeiger Null ist oder auf eine leere Zeichenfolge zeigt, hat der Dienst keine Abhängigkeiten. Eine Dienstabhängigkeit bedeutet, daß dieser Dienst nur ausgeführt werden kann, wenn auch der Dienst ausgeführt wird, von dem er abhängig ist. ServiceType=Der Parameter »ServiceType« übergibt den Diensttyp für aufrufende Prozesse.
447
448
Anhang B: WMI Klassenreferenz
BitValues = Array: 0=Kernel-Treiber 1=Dateisystemtreiber 2=Adapter 3=Erkennungstreiber 4=Prozeßeigener Dienst 5=Freigabeprozess StartMode=Die Eigenschaft »StartMode« gibt den Startmodus des Win32-Basisdienstes an. »Boot« gibt einen vom Ladeprogramm des Betriebssystems gestarteten Gerätetreiber an. Dieser Wert ist nur für Treiberdienste gültig. »Automatisch« gibt einen Dienst an, der vom Dienststeuerungs-Manager während des Systemstarts gestartet wird. »Manuell« gibt einen Dienst an, der vom DienststeuerungsManager gestartet wird, wenn die Funktion »StartService« aufgerufen wird. »Deaktiviert« gibt einen Dienst an, der nicht mehr gestartet werden kann. ValueMap = Array: 0=Boot 1=System 2=Automatic 3=Manual 4=Disabled Values = Array: 0=Bootstart 1=Systemstart 2=Automatisch starten 3=Manuell starten 4=Deaktiviert StartName=Die Eigenschaft »StartName« gibt den Kontonamen an, unter dem der Dienst ausgeführt wird. Abhängig vom Diensttyp kann der Kontoname folgendes Format haben: »Domänenname\Benutzername«. Der Dienstprozeß wird beim Ausführen mit einem dieser Formate protokolliert. Wenn das Konto zu einer integrierten Domäne gehört, kann ».\Benutzername« angegeben werden. Wenn NULL angegeben ist, wird der Dienst als lokales Systemkonto angemeldet.
B.14 Win32_BaseService Für Kernel- oder Systemtreiber enthält »StartName« den Treiberobjektnamen (\Dateisystem\Rdr oder \Treiber\Xns), den das E/A-System verwendet, um die Gerätetreiber zu laden. Wenn NULL angegeben ist, wird der Treiber mit dem vom E/A-System basierend auf dem Dienstnamen erstellten Standardobjektnamen ausgeführt. Beispiel: DWDOM\Admin. StartPassword=Der Parameter »StartPassword« übergibt das Kennwort für den im Parameter »StartName« angegebenen Kontonamen. Geben Sie Null an, wenn das Kennwort nicht geändert wird. Lassen Sie die Zeichenfolge leer, wenn der Dienst kein Kennwort hat. result as Integer = ChangeStartMode (StartMode as String) StartMode=Der Parameter »StartMode« übergibt den Startmodus des Win32-Basisdienstes. »Boot« gibt einen vom Ladeprogramm des Betriebssystems gestarteten Gerätetreiber an. Dieser Wert ist nur für Treiberdienste gültig. »Automatisch« gibt einen Dienst an, der vom Dienststeuerungs-Manager während des Systemstarts gestartet wird. »Manuell« gibt einen Dienst an, der vom Dienststeuerungs-Manager gestartet wird, wenn die Funktion »StartService« aufgerufen wird. »Deaktiviert« gibt einen Dienst an, der nicht mehr gestartet werden kann. ValueMap = Array: 0=Boot 1=System 2=Automatic 3=Manual 4=Disabled Values = Array: 0=Bootstart 1=Systemstart 2=Automatisch starten 3=Manuell starten 4=Deaktiviert
449
Die Methode »ChangeStartMode« ändert den Startmodus für einen Dienst. Der Wert 0 wird zurückgegeben, wenn der Dienst geändert wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Service Functions|ChangeServiceConfig|dwStartType
450
Anhang B: WMI Klassenreferenz
result as Integer = Delete
AcceptPause
AcceptStop
Caption CreationClassName
Description DesktopInteract
DisplayName
ErrorControl
Die Methode »Delete« löscht einen vorhandenen Dienst. Der Wert 0 wird zurückgegeben, wenn der Dienst gelöscht wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Service Functions|ChangeServiceConfig| DeleteService Die Eigenschaft »AcceptPause« gibt an, ob der Dienst angehalten werden kann. Werte: TRUE oder FALSE. TRUE gibt an, daß der Dienst angehalten werden kann. Die Eigenschaft »AcceptStop« gibt an, ob der Dienst beendet werden kann. Werte: TRUE oder FALSE. TRUE gibt an, daß der Dienst beendet werden kann. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. »CreationClassName« gibt den Namen der Klasse oder Teilklasse an, die beim Erstellen einer Instanz verwendet wird. Wenn diese Eigenschaft mit anderen Schlüsseleigenschaften dieser Klasse verwendet wird, können alle Instanzen der Klasse und der Teilklassen eindeutig erkannt werden. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DesktopInteract« gibt an, ob der Dienst mit Fenstern auf dem Desktop kommunizieren bzw. diese erstellen kann. Werte: TRUE oder FALSE. TRUE gibt an, daß der Dienst mit Fenstern auf dem Desktop kommunizieren oder diese erstellen kann. Die Eigenschaft »DisplayName« gibt den angezeigten Namen des Dienstes an. Die Zeichenfolge darf aus maximal 256 Zeichen bestehen. Für den Namen muß die Groß/Kleinschreibung beachtet werden. Für den Vergleich von angezeigten Namen muß die Groß-/Kleinschreibung nicht beachtet werden. Einschränkungen: Akzeptiert den gleichen Wert wie die Eigenschaft »Name«. Beispiel: Atdisk. Wenn der Dienst nicht gestartet wird, wird in der Eigenschaft »ErrorControl« der Schweregrad des Fehlers angegeben. Der Wert gibt den Startvorgang an, wenn ein Fehler auftritt. Alle Fehler werden vom Computersystem protokolliert. Der Benutzer wird bei normalen Fehlern benachrichtigt (nicht bei Fehlern die ignoriert werden können). Bei schwerwiegenden Fehlern wird das System mit der letzten funktionierenden Konfiguration neu gestartet. Bei kritischen Fehlern wird versucht, das System mit einer funktionierenden Konfiguration neu zu starten.
B.14 Win32_BaseService ExitCode
InstallDate
Name
PathName
ServiceSpecificExitCode
ServiceType Started StartMode
451
Die Eigenschaft »ExitCode« gibt einen Win32-Fehlercode an, der beim Starten oder Anhalten des Dienstes aufgetretene Probleme definiert. Der Wert der Eigenschaft ist ERROR_ SERVICE_SPECIFIC_ERROR (1066), wenn der Fehler eindeutig von dieser Klasse dargestellt wird. Fehlerinformationen sind im Mitglied »ServiceSpecificExitCode« verfügbar. Der Dienst setzt den Wert auf »NO_ERROR«, wenn er ausgeführt oder ordnungsgemäß beendet wird. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »Name« gibt den Dienst und die verwalteten Funktionen an. Die Funktionen werden in der Eigenschaft »Description« des Objekts genauer beschrieben. Die Eigenschaft »PathName« enthält den vollqualifizierten Pfad zur binären Datei, die den Dienst implementiert. Beispiel: \SystemRoot\System32\drivers\afd.sys Die Eigenschaft »ServiceSpecificExitCode« gibt einen dienstspezifischen Fehlercode für Fehler an, die beim Starten oder Anhalten des Dienstes auftreten. Der Beendigungscode wird vom Dienst definiert, der von dieser Klasse dargestellt wird. Dieser Wert wird nur festgelegt, wenn der Wert in der Eigenschaft »ExitCode« ERROR_SERVICE_SPECIFIC_ERROR, 1066 ist. Die Eigenschaft »ServiceType« gibt den Diensttyp für aufrufende Prozeß an. Der boolesche Wert »Started« gibt an, ob der Dienst gestartet (TRUE) oder angehalten (FALSE) wurde. Die Eigenschaft »StartMode« gibt den Startmodus des Win32Basisdienstes an. »Boot« gibt einen vom Ladeprogramm des Betriebssystems gestarteten Gerätetreiber an. Dieser Wert ist nur für Treiberdienste gültig. »Automatisch« gibt einen Dienst an, der vom Dienststeuerungs-Manager während dem Systemstart gestartet wird. »Manuell« gibt einen Dienst an, der vom Dienststeuerungs-Manager gestartet wird, wenn die Funktion »StartService« aufgerufen wird. »Deaktiviert« gibt einen Dienst an, der nicht mehr gestartet werden kann.
452
Anhang B: WMI Klassenreferenz
StartName
State Status
SystemCreationClassName SystemName TagId
Die Eigenschaft »StartName« gibt den Kontonamen an, unter dem der Dienst ausgeführt wird. Abhängig vom Diensttyp kann der Kontoname folgendes Format haben: »Domänenname\Benutzername«. Der Dienstprozeß wird beim Ausführen mit einem dieser Formate protokolliert. Wenn das Konto zu einer integrierten Domäne gehört, kann ».\Benutzername« angegeben werden. Wenn NULL angegeben ist, wird der Dienst als lokales Systemkonto angemeldet. Für den KernelSystemtreiber enthält »StartName« den Treiberobjektnamen (\Dateisystem\Rdr oder \Treiber\Xns), den das E/A-System verwendet, um die Gerätetreiber zu laden. Wenn NULL angegeben ist, wird der Treiber mit dem vom E/A-System basierend auf dem Dienstnamen erstellten Standardobjektnamen ausgeführt. Beispiel: DWDOM\Admin. Die Eigenschaft »State« gibt den aktuellen Status des Basisdienstes an. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Der Typname des Systems, auf dem sich der Dienst befindet. Der Name des Systems, auf dem sich der Dienst befindet. Die Eigenschaft »TagId« gibt einen eindeutigen Tagwert für diesen Dienst in der Gruppe an. Der Wert 0 gibt an, daß dem Dienst kein Tag zugeordnet wurde. Ein Tag kann zum Anfordern eines Dienststarts in einer Ladegruppe verwendet werden, indem ein Taganforderungsvektor in der Registrierung unter folgender Adresse angegeben wird: HKEY_LOCAL_ MACHINE\System\CurrentControlSet\Control\ GroupOrderList. Tags werden nur für Kerneltreiber und Dateisystemtreiber im Start- oder Systemmodus ausgewertet.
B.15 Win32_Battery
453
B.15 Win32_Battery result as Integer = SetPowerState (PowerState as Integer, Time as Date/Time)
result as Integer = Reset
Availability
BatteryRechargeTime BatteryStatus
Caption Chemistry ConfigManagerErrorCode
»SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Parameter »PowerState« folgende Werte festgelegt werden: 1=»Kein Energiesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Die Eigenschaft »BatteryRechargeTime« gibt die zum vollständigen Aufladen der Batterie erforderliche Zeitdauer an. Beschreibung des Batterieladestatus. Z.B. können folgende Werte angegeben werden: »Vollständig geladen« (Wert=3) oder »Teilweise geladen« (11). Der Wert 10 ist im CIM-Schema ungültig, da es in DMI angibt, daß keine Batterie installiert ist. In diesem Fall sollte das Objekt nicht initialisiert werden. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Eine Aufzählung, die die chemische Zusammensetzung der Batterie beschreibt. Gibt den Fehlercode des Win32-Konfigurations-Managers an.
Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Kapazität der Batterie in Milliwatt-Stunden. Geben Sie 0 ein, wenn diese Eigenschaft nicht unterstützt wird. Die Spannung der Batterie in Millivolts. Geben Sie 0 ein, wenn dieses Attribut nicht unterstützt wird. Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die die Batterie angibt. Beispiel: Interne Batterie Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Geschätzte Restladung in Prozent. »EstimatedRunTime« schätzt, wie lange es dauert, bis die Batterie oder der Generator unter der gegenwärtigen Belastung leer sind, wenn die Stromversorgung unterbrochen oder abgeschaltet ist oder ein Laptop von der Stromzufuhr getrennt wurde. Die Eigenschaft »ExpectedBatteryLife« gibt die erwartete Lebensdauer der Batterie an, nachdem diese vollständig aufgeladen wurde. Gibt die erwartete Lebensdauer der Batterie in Minuten an; vorausgesetzt daß die Batterie vollständig aufgeladen ist. Diese Eigenschaft gibt die gesamte Lebensdauer der Batterie an. Die verbleibende Lebensdauer wird in der Eigenschaft »EstimatedRunTime« angezeigt. Die gesamte Ladekapazität der Batterie in Milliwatt-Stunden. Der Vergleich dieses Werts mit der Eigenschaft »DesignCapacity« bestimmt, wann die Batterie ersetzt werden muß. Wenn die Eigenschaft »FullChargeCapacity« unter 80% der Eigenschaft »DesignCapacity« liegt, ist die Lebensdauer der Batterie beendet. Geben Sie 0 ein, wenn diese Eigenschaft nicht unterstützt wird. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. »MaxRechargeTime« gibt die zum Aufladen der Batterie maximal erforderliche Zeitdauer an. Diese Eigenschaft gibt die Zeitdauer zum Aufladen einer vollständig leeren Batterie an. Die verbleibende Aufladezeit wird in der Eigenschaft »TimeToFullCharge« angezeigt.
B.15 Win32_Battery Name
PNPDeviceID PowerManagementCapabilities
PowerManagementSupported
SmartBatteryVersion
Status
StatusInfo
SystemCreationClassName
455
Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Die Versionsnummer für Smart Battery-Datenspezifikationen, die von dieser Batterie unterstützt wird. Wenn die Batterie diese Funktion nicht unterstützt, sollte dieser Wert leer sein. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft.
456
Anhang B: WMI Klassenreferenz Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. »TimeOnBattery« gibt den Zeitraum in Sekunden an, der seit dem letzten Umschalten der UPS zu Batteriebetrieb oder seit dem letzten Neustart der UPS verstrichen ist. Der Wert Null wird zurückgegeben, wenn die Batterie aktiv ist. Erforderliche Zeit zum Aufladen der Batterie in Minuten (berechnet nach aktueller Aufladegeschwindigkeit und Verbrauch)
SystemName
TimeOnBattery
TimeToFullCharge
B.16 Win32_Binary Caption Data Description Name ProductCode SettingID
Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Diese Eigenschaft stellt die binären Daten dar, die diesem Objekt zugeordnet sind. Eine Textbeschreibung des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Die Kennung für das Objekt »CIM_Setting«.
B.17 Win32_BindImageAction result as Integer = Invoke
ActionID Caption Description Direction
File
Die Methode »Invoke« führt einen bestimmten Vorgang aus. Die Ausführungsdetails hängen von der Implementierung ab. Die Ergebnisse der Methode basieren auf dem Rückgabewert. Der Wert 0 wird zurückgegeben, wenn die Bedingung erfüllt wurde. Der Wert 1 wird zurückgegeben, wenn die Methode nicht unterstützt wird. Jeder andere Wert zeigt an, daß die Bedingung nicht erfüllt wurde. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Eine Beschreibung des Objekts. Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«.
B.18 Win32_BootConfiguration Name Path SoftwareElementID SoftwareElementState TargetOperatingSystem
457
Der Name zum Identifizieren der Softwarekomponente. Der Name zum Identifizieren der Softwarekomponente. »SoftwareElementID« gibt eine ID für die Softwarekomponente an. »SoftwareElementState« gibt den Status der Softwarekomponente an. »TargetOperatingSystem« gibt das Zielbetriebssystem der Softwarekomponente an. Versionsformat: .. oder .
Description LastDrive Name ScratchDirectory SettingID TempDirectory
Die Eigenschaft »BootDirectory« gibt den Pfad zu den Systemdateien an, die erforderlich sind, um das System zu starten. Beispiel: C:\Windows. Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Die Eigenschaft »ConfigurationPath« gibt den Pfad zu den Konfigurationsdateien an. Dieser Wert kann dem Wert in der Eigenschaft »BootDirectory« entsprechen. Eine Textbeschreibung des Objekts »CIM_Setting«. Die Eigenschaft »LastDrive« gibt den letzten Laufwerkbuchstaben an, der einem physikalischen Laufwerk zugeordnet ist. BeispielExample: E: Die Eigenschaft »Name« gibt den Namen der Startkonfiguration an. Die Eigenschaft »ScratchDirectory« gibt das Verzeichnis an, in dem die temporären Dateien während des Starts gespeichert werden. Die Kennung für das Objekt »CIM_Setting«. Die Eigenschaft »TempDirectory« gibt das Verzeichnis an, in dem die temporären Dateien gespeichert sind. Beispiel: C:\TEMP
B.19 Win32_Bus result as Integer = SetPowerState (PowerState as Integer, Time as Date/Time)
»SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Parameter »PowerState« folgende Werte festgelegt werden: 1=»Kein Energiesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an.
Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Die Eigenschaft »BusNum« gibt die dem physikalischen Bus zugeordnete logische Nummer an. Beispiel: 1 Die Eigenschaft »BusType« gibt den Typ für den physikalischen Bus an. Dieser Wert wird in INTERFACE_TYPE definiert. Beispiel: PCIBus Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DeviceID« enthält einen eindeutigen Busnamen. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an.
B.19 Win32_Bus Name
PNPDeviceID PowerManagementCapabilities
PowerManagementSupported
Status
StatusInfo
SystemCreationClassName
459
Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMARTaktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft.
460
Anhang B: WMI Klassenreferenz
SystemName
Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft.
B.20 Win32_CDROMDrive result as Integer = SetPowerState (PowerState as Integer, Time as Date/Time)
result as Integer = Reset
Availability
Capabilities
»SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Parameter »PowerState« folgende Werte festgelegt werden: 1=»Kein Energiesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Funktionen des Geräts für den Medienzugriff. Wenn das Gerät z.B. »Zufälliger Zugriff«, »Austauschbare Medien« und »Automatische Reinigung« unterstützt, werden die Werte 3, 7 und 9 in das Datenfeld geschrieben.
Formfreie Zeichenfolgen mit genaueren Erklärungen zu den im Datenfeld »Capabilities« angezeigten Funktionen des Geräts für den Medienzugriff. Jeder Eintrag in diesem Array bezieht sich auf den Eintrag im Datenfeld »Capabilities« unter dem gleichen Index. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Eine formfreie Zeichenfolge, die den Algorithmus oder das Programm angibt, der bzw. das die Komprimierung unterstützt. Wenn es nicht möglich ist, das Komprimierungsschema zu beschreiben, wird Folgendes angegeben: »Unbekannt«, wenn nicht bekannt ist, ob das Gerät die Komprimierung unterstützt. »Komprimiert«, wenn das Gerät die Komprimierung unterstützt, aber das Komprimierungsschema unbekannt ist. »Nicht komprimiert«, wenn das Gerät die Komprimierung nicht unterstützt. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Standardblockgröße für das Gerät in Bytes. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die das CDROM-Laufwerk eindeutig identifiziert. Die Eigenschaft »Drive« gibt den Laufwerkbuchstaben des CDROM-Laufwerks an. Beispiel: d:\ Die Eigenschaft »DriveIntegrity« gibt an, ob Dateien vom CDROM-Laufwerk einwandfrei gelesen werden können, indem ein Datenblock zweimal gelesen und die Ergebnisse miteinander verglichen werden. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Die formfreie Zeichenfolge »ErrorMethodology« beschreibt den Typ der Fehlererkennung und -korrektur, der von diesem Gerät unterstützt wird. Die Eigenschaft »FileSystemFlags« wurde durch die Eigenschaft »FileSystemFlagsEx« ersetzt.
Die Eigenschaft »FileSystemFlagsEx« gibt die dem Win32 CDROM-Laufwerk zugeordneten Dateisystemflags an. Dieser Parameter kann eine Kombination der Flags FS_FILE_COMPRESSION und FS_VOL_IS_COMPRESSED sein. Beispiel: 0. Die Eigenschaft »Id« gibt den Laufwerkbuchstaben des CD-ROMLaufwerks an. Beispiel: d:\ Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »Manufacturer« gibt den Hersteller des Win32 CDROM-Laufwerks an. Beispiel: PLEXTOR Maximale Größe in Bytes des Mediums, auf das zugegriffen wird. Die Eigenschaft »MaximumComponentLength« gibt die maximale Länge einer Dateinamenkomponente an, die vom Win32-CDROM-Laufwerk unterstützt wird. Eine Dateinamenkomponente ist der Teil des Dateinamens zwischen den umgekehrten Schrägstrichen. Der Wert kann verwendet werden, um anzugeben, ob lange Dateinamen von einem Dateisystem unterstützt werden. Für ein FAT-Dateisystem, das lange Namen unterstützt, wird z.B. der Wert 255 gespeichert, statt 8.3. Lange Namen können auch von NTFSDateisystemen unterstützt werden. Beispiel: 255 Maximale Größe in KB des vom Gerät unterstützten Mediums. Die Eigenschaft »MediaLoaded« gibt an, ob sich eine CD im Laufwerk befindet. Werte: TRUE oder FALSE. TRUE gibt an, daß eine CD in das Laufwerk eingelegt ist. Die Eigenschaft »MediaType« gibt den Medientyp an, der von diesem Gerät verwendet wird. In dieser Klasse ist der Wert immer »CD-ROM«. Minimale Größe in Byte des Mediums, auf das zugegriffen wird. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Boolescher Wert, der angibt, daß das Laufwerk gereinigt werden muß. In der Eigenschaft »Capabilities« wird angegeben, ob eine automatische oder manuelle Reinigung möglich ist. Wenn das Gerät für den Medienzugriff mehrere individuelle Medien unterstützt, gibt diese Eigenschaft die maximale Medienanzahl an, die unterstützt oder eingelegt werden kann. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b
B.20 Win32_CDROMDrive PowerManagementCapabilities
PowerManagementSupported
RevisionLevel SCSIBus SCSILogicalUnit
SCSIPort SCSITargetId Size Status
463
Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Die Eigenschaft »RevisionLevel« gibt die Firmwarerevision des Win32 CD-ROM-Laufwerks an. Die Eigenschaft »SCSIBus« gibt die SCSI-Busnummer des Laufwerks an. Beispiel: 0 Die Eigenschaft »SCSILogicalUnit« gibt die SCSI LUN (Logical Unit Number) des Laufwerks an. Die LUN definiert, auf welchen SCSIController in einem System mit mehreren Controllern zugegriffen wird. Die SCSI-Gerätekennung ist die Definition mehrerer Geräte auf einem Controller. Beispiel: 0 Die Eigenschaft »SCSIPort« gibt die SCSI-Anschlußnummer des Laufwerks an. Beispiel: 1 Die Eigenschaft »SCSITargetId« gibt die SCSI-Kennung des Win32 CD-ROM-Laufwerks an. Beispiel: 0. Die Eigenschaft »Size« gibt die Größe des Laufwerks an. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
464
Anhang B: WMI Klassenreferenz
StatusInfo
SystemCreationClassName
SystemName
TransferRate
VolumeName VolumeSerialNumber
Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Eigenschaft »TransferRate« gibt die Übertragungsrate des CDROM-Laufwerks an. Der Wert 1 gibt an, daß die Rate nicht bestimmt werden konnte (wenn sich z.B. keine CD im Laufwerk befindet). Die Eigenschaft »VolumeName« gibt den Datenträgernamen des Win32 CD-ROM-Laufwerks an. Die Eigenschaft »VolumeSerialNumber« gibt die Seriennummer des Mediums im CD-ROM-Laufwerk an. Beispiel: A8C3-D032
Die Referenz »Antecedent« stellt die Eigenschaften des logischen Geräts dar, das von der Datendatei verwendet wird. Die Referenz »Dependent« stellt die Eigenschaften der dem logischen Gerät zugeordneten Datendatei dar. Die Eigenschaft »Purpose« gibt die Funktion der Datendatei in bezug auf das logische Gerät an. Die Eigenschaft »PurposeDescription« beschreibt den Wert der Eigenschaft »Purpose« dieser Klasse. Beispiel: Diskettentreiber
B.22 Win32_COMApplication Caption Description InstallDate Name
Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden.
B.23 Win32_COMApplicationClasses Status
465
Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMARTaktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
Die Referenz »GroupComponent« stellt die COM-Anwendung dar, die die COM-Komponente enthält. »Win32_COMClass« stellt die in der COM-Anwendung gruppierte COMKomponente dar.
B.24 Win32_COMApplicationSettings Element Setting
Die Referenz »Element« stellt die DCOM-Anwendung dar, für die die Einstellungen verwendet werden. Die Referenz »Setting« stellt die der DCOM-Anwendung zugeordneten Konfigurationseinstellungen dar.
Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden.
466
Anhang B: WMI Klassenreferenz
Status
Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMARTaktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Die Kennung für das Objekt »CIM_Setting«.
B.27 Win32_CacheMemory result as Integer = SetPowerState (PowerState as Integer, Time as Date/Time)
result as Integer =Reset
Access
»SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Parameter »PowerState« folgende Werte festgelegt werden: 1=»Kein Energiesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Die Eigenschaft »Access« gibt an, ob das Medium lesbar (Wert=1), beschreibbar (Wert=2) oder beides (Wert=3) ist. »Unbekannt« (0) kann ebenfalls definiert werden.
Oktetts, die zusätzliche Fehlerinformationen enthalten. Ein Beispiel ist das ECC-Syndrom oder die Rückgabe der Prüfbits, wenn eine CRCbasierte Fehlermethode verwendet wird. Wenn ein Einzelbit-Fehler gefunden wird und der CRC-Algorithmus bekannt ist, ist es möglich, das fehlerhafte Bit zu bestimmen. Dieser Datentyp (ECC-Syndrom, Prüfbit, Paritätsbit oder andere Herstellerinformationen) ist in diesem Feld enthalten. Wenn der Wert der Eigenschaft »ErrorInfo« 3 ist, hat die Eigenschaft »AdditionalErrorData« keine Bedeutung. Eine Auflistung ganzer Zahlen, die die Assoziativität des Systemcaches definiert. Zum Beispiel bedeutet die Zahl 6 einen vollständig assoziativen Cache. Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Größe der Speichererweiterungsblöcke in Byte. Geben Sie 1 ein, wenn die Größe unbekannt oder ein Blockkonzept ungültig ist (z.B. für zusammengesetzte Erweiterungen, Speicher oder logische Datenträger). Die Eigenschaft »CacheSpeed« gibt die Cachegeschwindigkeit an. Definiert, ob Anweisungen (Wert=3), Daten (Wert=4) oder beides (Wert=5, »Vereinheitlicht«) zwischengespeichert werden. Es kann auch »Andere« (1) und »Unbekannt« (2) definiert werden. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Boolescher Wert, der angibt, daß der letzte Fehler korrigierbar war. Wenn die Eigenschaft »ErrorInfo« 3 »OK« ist, hat diese Eigenschaft keine Bedeutung. Boolescher Wert, der angibt, daß der letzte Fehler korrigierbar war. Wenn die Eigenschaft »ErrorInfo« 3 »OK« ist, hat diese Eigenschaft keine Bedeutung. Die Eigenschaft »CurrentSRAM« gibt den für den Cache verwendeten SRAM-Typ (Static Random Access Memory) an. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an.
468
Anhang B: WMI Klassenreferenz
DeviceID
EndingAddress
ErrorAccess
ErrorAddress
ErrorCleared ErrorCorrectType ErrorData
ErrorDataOrder
ErrorDescription
ErrorInfo
ErrorMethodology
ErrorResolution
Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die den Cache eindeutig kennzeichnet, der von Win32_CacheMemory angegeben wird. Beispiel: Cache 1 Die Endadresse, auf die von einer Anwendung oder einem Betriebssystem verwiesen wird, und die von einem Speichercontroller für dieses Speicherobjekt zugeordnet wurde. Die Endadresse wird in KB angegeben. Eine ganze Zahl, die den Vorgang angibt, bei dem der letzte Speicherfehler aufgetreten ist. Der Fehlertyp wird in der Eigenschaft »ErrorInfo« beschrieben. Wenn die Eigenschaft »ErrorInfo« 3 »OK« ist, hat diese Eigenschaft keine Bedeutung. Gibt die Adresse des letzten Speicherfehlers an. Der Fehlertyp wird in der Eigenschaft »ErrorInfo« beschrieben. Wenn die Eigenschaft »ErrorInfo« 3 »OK« ist, hat diese Eigenschaft keine Bedeutung. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die Eigenschaft »ErrorCorrectType« gibt den Fehlerkorrekturtyp für den Cache an. Die Daten des letzten Speicherzugriffs mit einem Fehler. Die Daten belegen das erste N-Oktett des Datenfelds, das für die in der Eigenschaft »ErrorTransferSize« angegebenen Bits erforderlich ist. Wenn der Wert 0 ist, wird diese Eigenschaft nicht verwendet. Die Reihenfolge der in der Eigenschaft »ErrorData« gespeicherten Daten. »Unwichtigstes Byte zuerst« (Wert=1) oder »Wichtigstes Byte zuerst« (2) kann angegeben werden. Wenn »ErrorTransferSize« 0 ist, hat diese Eigenschaft keine Bedeutung. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Eine Aufzählung, die den Typ des zuletzt aufgetretenen Fehlers beschreibt. Mit dieser Eigenschaft können z.B. Einzelbit-Fehler (Wert=6) oder Doppelbit-Fehler (7) angegeben werden. Die Werte 12 bis 14 sind im CIM-Schema nicht definiert, da in DMI die Semantik der Fehlertypen und deren Korrigierbarkeit gemischt ist. Korrigierbare Fehler werden in der Eigenschaft »CorrectableError« angegeben. Die Eigenschaft »ErrorMethodology« für CIM_Memory gibt an, ob Parität, CRC-Algorithmen, ECC oder andere Mechanismen verwendet werden. Es können auch Details für den Algorithmus angegeben werden. Bestimmt den Bereich, in Bytes, in dem der letzte Fehler aufgelöst werden kann. Wenn z.B. Fehleradressen in Bit 11 aufgelöst werden, d.h. auf der Basis konventioneller Seitenverwaltung, können Fehler in 4-KB-Randwerte aufgelöst werden, soweit diese Eigenschaft auf 4000 gesetzt ist. Wenn die Eigenschaft »ErrorInfo« 3 »OK« ist, hat diese Eigenschaft keine Bedeutung.
B.27 Win32_CacheMemory ErrorTime
ErrorTransferSize
FlushTimer
InstallDate
InstalledSize LastErrorCode Level
LineSize Location MaxCacheSize Name
NumberOfBlocks
OtherErrorDescription
PNPDeviceID
469
Zeitpunkt, zu dem der letzte Speicherfehler aufgetreten ist. Der Fehlertyp wird in der Eigenschaft »ErrorInfo« beschrieben. Wenn die Eigenschaft »ErrorInfo« 3 »OK« ist, hat diese Eigenschaft keine Bedeutung. Die Größe der Datenübertragung in Bits, die den letzten Fehler verursacht hat. 0 gibt keine Fehler an. Wenn die Eigenschaft »ErrorInfo« 3 »OK« ist, sollte diese Eigenschaft 0 sein. Maximale Anzahl der Sekunden, die fehlerhafte Zeilen oder Buckets im Cache verbleiben, bevor sie gelöscht werden. Der Wert Null gibt an, daß der Löschvorgang nicht von einem Zeitgeber gesteuert wird. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »InstalledSize« gibt die aktuelle Größe des installierten Cache an. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Definiert den primären (Wert=3), sekundären (Wert=4) oder tertiären (Wert=5) Cache. Es kann auch »Andere« (1) und »Unbekannt« (2) definiert werden. Größe eines Buckets oder einer Zeile im Cache in Bytes. Die Eigenschaft »Location« gibt die physikalische Position des Cachespeichers an. Die Eigenschaft »MaxCacheSize« gibt die maximale installierbare Cachegröße für diesen Cache an. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Gesamtanzahl der aufeinander folgenden Blöcke. Jeder Block entspricht in der Größe dem in der Eigenschaft »BlockSize« angegebenen Wert. Die Gesamtgröße der Speichererweiterung kann berechnet werden, indem der Wert der Eigenschaft »BlockSize« mit dem Wert dieser Eigenschaft multipliziert wird. Wenn der Wert in »BlockSize« 1 ist, gibt diese Eigenschaft die Gesamtgröße der Speichererweiterung an. Formfreie Zeichenfolge mit weiteren Informationen, wenn die Eigenschaft »ErrorType« auf 1 »Andere« gesetzt ist. Wenn der Wert nicht 1 ist, hat diese Zeichenfolge keine Bedeutung. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b
470
Anhang B: WMI Klassenreferenz
PowerManagementCapabilities
PowerManagementSupported
Purpose ReadPolicy
ReplacementPolicy StartingAddress
Status
StatusInfo
Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Formfreie Zeichenfolge, die das Medium und/oder seine Verwendung beschreibt. Richtlinie, die vom Cache zum Verarbeiten von Leseanforderungen verwendet wird. Es kann z.B. »Lesen«, »Vorauslesen« oder beides mit den Werten 3, 4 oder 5 angegeben werden. Eine Aufzählung, die den Algorithmus zum Festlegen der Zeilen und Buckets im Cache für die erneute Verwendung beschreibt. Die Startadresse, auf die von einer Anwendung oder einem Betriebssystem verwiesen wird und die von einem Speichercontroller für dieses Speicherobjekt zugeordnet wurde. Die Startadresse wird in KB angegeben. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft.
B.28 Win32_CheckCheck SupportedSRAM
471
Die Eigenschaft »SupportedSRAM« gibt den SRAM-Typ (Static Random Access Memory) an, der für den Cache verwendet werden kann. Die Eigenschaft »SupportedSRAM« gibt den SRAM-Typ (Static Random Access Memory) an, der für den Cache verwendet werden kann. Boolescher Wert, der angibt, ob es sich bei den Adreßinformationen in der Eigenschaft »ErrorAddress« um eine Systemadresse (TRUE) oder eine physikalische Adresse (FALSE) handelt. Wenn die Eigenschaft »ErrorInfo« 3 »OK« ist, hat diese Eigenschaft keine Bedeutung. Boolescher Wert, der angibt, ob es sich bei den Adreßinformationen in der Eigenschaft »ErrorAddress« um eine Systemadresse (TRUE) oder eine physikalische Adresse (FALSE) handelt. Wenn die Eigenschaft »ErrorInfo« 3 »OK« ist, hat diese Eigenschaft keine Bedeutung. Definiert, ob der Wert für den Cache »Zurückschreiben« (Wert=3) oder »Durchschreiben« (Wert=4) ist, oder die Informationen mit der Adresse variieren (5). Es kann auch »Andere« (1) und »Unbekannt« (2) definiert werden.
SystemCreationClassName SystemLevelAddress
SystemName
WritePolicy
B.28 Win32_CheckCheck Check Location
Diese Zuordnung bezieht sich auf MSI-Vorgänge mit den erforderlichen Positionsinformationen (Datei- und/oder Verzeichnisangabe).
B.29 Win32_ClassInfoAction result as Integer = Invoke
ActionID AppID Argument Caption CLSID
Die Methode »Invoke« führt einen bestimmten Vorgang aus. Die Ausführungsdetails hängen von der Implementierung ab. Die Ergebnisse der Methode basieren auf dem Rückgabewert. Der Wert 0 wird zurückgegeben, wenn die Bedingung erfüllt wurde. Der Wert 1 wird zurückgegeben, wenn die Methode nicht unterstützt wird. Jeder andere Wert zeigt an, daß die Bedingung nicht erfüllt wurde. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist.
472
Anhang B: WMI Klassenreferenz
Context DefInprocHandler Description Direction
FileTypeMask
Insertable
Name ProgID RemoteName SoftwareElementID SoftwareElementState TargetOperatingSystem Version VIProgID
Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Eine Beschreibung des Objekts. Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. Der Name zum Identifizieren der Softwarekomponente. Der Name zum Identifizieren der Softwarekomponente. Der Name zum Identifizieren der Softwarekomponente. »SoftwareElementID« gibt eine ID für die Softwarekomponente an. »SoftwareElementState« gibt den Status der Softwarekomponente an. »TargetOperatingSystem« gibt das Zielbetriebssystem der Softwarekomponente an. Versionsformat: .. oder . Versionsformat: .. oder .
Die Referenz »GroupComponent« stellt eine DCOM-Anwendung dar, die die COM-Komponente enthält oder verwendet. Die Referenz »PartComponent« stellt die COM-Komponente dar, die in der DCOM-Anwendung vorhanden ist oder von dieser verwendet wird.
B.31 Win32_ClassicCOMClass Caption ComponentId
Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »ComponentId« enthält die GUID (Globally Unique Identifier) der COM-Klasse.
Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »Name« enthält den lesbaren Namen der COM-Klasse. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMARTaktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
Caption ComponentId Control DefaultIcon Description InprocHandler InprocHandler32 InprocServer InprocServer32
Die Eigenschaft »AppID« enthält die GUID (Globally Unique Identifier) für die COM-Anwendung, die die COM-Komponente verwendet. Die Eigenschaft »AutoConvertToClsid« enthält die GUID (Globally Unique Identifier) der COM-Klasse, zu der die COM-Komponente automatisch konvertiert wird. Die Eigenschaft »AutoTreatAsClsid« enthält eine GUID (Globally Unique Identifier) einer COM-Komponente, die Instanzen der Klasse automatisch emuliert. Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Die Eigenschaft »ComponentId« enthält die GUID (Globally Unique Identifier) der COM-Komponente. Die Eigenschaft »Control« gibt an, ob die COM-Komponente ein OLE-Steuerelement ist. Die Eigenschaft »DefaultIcon« enthält den Pfad zur ausführbaren Datei und Ressourcenkennung des von der Klasse verwendeten Standardsymbols. Eine Textbeschreibung des Objekts »CIM_Setting«. Die Eigenschaft »InprocHandler« enthält den vollständigen Pfad zu einem benutzerdefinierten Handler (16 Bit) für die COM-Komponente. Die Eigenschaft »InprocHandler32« enthält den vollständigen Pfad zu einem benutzerdefinierten Handler (32 Bit) für die COM-Komponente. Die Eigenschaft »InprocServer« enthält den vollständigen Pfad zu einer InProcess-Server-DLL (16 Bit) für die COM-Komponente. Die Eigenschaft »InprocServer32« enthält den vollständigen Pfad zu einer InProcess-Server-DLL (32 Bit) für die COM-Komponente.
474
Anhang B: WMI Klassenreferenz
Insertable JavaClass LocalServer LocalServer32
LongDisplayName
ProgId
SettingID ShortDisplayName ThreadingModel
ToolBoxBitmap32
TreatAsClsid
Die Eigenschaft »Insertable« gibt an, ob die COM-Komponente in OLEContaineranwendungen eingefügt werden kann. Die Eigenschaft »JavaClass« gibt an, ob die COM-Komponente eine JavaKomponente ist. Die Eigenschaft »LocalServer« enthält den vollständigen Pfad zu einer lokalen 16-Bit-Serveranwendung. Die Eigenschaft »LocalServer32« enthält den vollständigen Pfad zu einer lokalen 32-Bit-Serveranwendung. Die Eigenschaft »LongDisplayName« gibt den vollständigen Namen der COM-Anwendung an. Dieser wird z.B. im Ergebnisfeld im OLE-Dialogfeld »Inhalte einfügen« verwendet. Die Eigenschaft »ProgId« enthält eine Programmkennung für die COMKomponente in folgendem Format: ... Die Eindeutigkeit dieser Kennung ist nicht garantiert. Die Kennung für das Objekt »CIM_Setting«. Die Eigenschaft »ShortDisplayName« gibt den kurzen Namen der COM-Anwendung für die Verwendung in Menüs an. Die Eigenschaft »ThreadingModel« gibt das Threadingmodell an, das von InProcess-COM-Klassen verwendet wird; einschließlich: Apartment – Komponenten können nur von einem Thread eingegeben werden. Allgemeine Daten auf diesen Objektservern müssen gegen Threadkonflikte geschützt werden, da der Objektserver mehrere Komponenten unterstützt. Jede Komponente kann gleichzeitig von verschiedenen Threads eingegeben werden. Free – Komponenten schränken nicht ein, auf welchen Threads oder wie viele Threads das Objekt eingeben können. Das Objekt darf keine threadspezifischen Daten enthalten, und die Daten müssen vor dem gleichzeitigen Zugriff mehrerer Threads geschützt sein. Apartmentthreads können nicht direkt auf Freethread-Komponenten zugreifen. Beide – Komponenten, die im Apartmentthread- oder Freethread-Modus verwendet werden können. Diese Komponenten können von mehreren Threads eingegeben werden. Die Daten sind nicht threadspezifisch und vor Threadkonflikten geschützt. Wenn diese Eigenschaft NULL ist, wird kein Threadingmodell verwendet. Die Komponente wird auf dem Hauptthread des Clients erstellt, und Aufrufe von anderen Threads werden zu diesem Thread umgeleitet. Weitere Informationen über die verschiedenen Threadingmodelle finden Sie im Platform Software Development Kit. Die Eigenschaft »ToolBoxBitmap32« gibt den Modulnamen und die Ressourcenkennung für eine kleine (16x16) Bitmap an, die in einer Symbolleiste oder Toolbox verwendet wird, wenn die COM-Komponente ein OLE- oder ActiveX-Steuerelement ist. Die Eigenschaft »TreatAsClsid« enthält eine GUID (Globally Unique Identifier) einer COM-Komponente, die Instanzen der Komponente emulieren kann.
B.33 Win32_ClassicCOMClassSettings TypeLibraryId Version VersionIndependentProgId
475
Die Eigenschaft »TypeLibraryId« enthält die GUID (Globally Unique Identifier) für die Typenbibliothek der COM-Komponente. Die Eigenschaft »Version« gibt die Versionsnummer der COM-Klasse an. Die Eigenschaft »VersionIndependentProgId« enthält eine Programmkennung, die für alle Versionen des Programms konsistent ist.
B.33 Win32_ClassicCOMClassSettings Element Setting
Die Referenz »Element« stellt die COM-Klasse dar, für die die Einstellungen verwendet werden. Die Referenz »Setting« stellt die der COM-Klasse zugeordneten Konfigurationseinstellungen dar.
Die Referenz »Application« stellt die DCOM-Anwendung dar, die Konfigurationsoptionen der ausführbaren Datei enthält. Die Referenz »Client« stellt eine ausführbare Datei dar, die DCOM-Einstellungen verwendet.
B.35 Win32_CodecFile result as Integer = TakeOwnerShip
Die Methode »TakeOwnerShip« übernimt den Besitz der logischen Datei, die im Objektpfad angegeben ist. Wenn die logische Datei ein Verzeichnis ist, übernimt die Methode den Besitz aller Dateien und Unterverzeichnisse, die im Verzeichnis enthaltenen sind. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig.
476
Anhang B: WMI Klassenreferenz
result as Integer = ChangeSecurityPermissions (Option as Integer, SecurityDescriptor as CIM-Object)
result as Integer = Copy (FileName as String)
result as Integer = Rename (FileName as String)
Die Methode »ChangeSecurityPermissions« ändert die Sicherheitsrechte für die im Objektpfad angegebene logische Datei. Wenn die logische Datei ein Verzeichnis ist, werden die Sicherheitsrechte aller im Verzeichnis enthaltener Dateien und Unterverzeichnisse geändert. Die Methode gibt den Wert 0 zurück, wenn die Rechte geändert wurden. Jeder andere Wert zeigt einen Fehler an. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »Copy« kopiert die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist, in das im Eingabeparameter festgelegte Verzeichnis. Der Wert 0 wird zurückgegeben, wenn die Datei kopiert wurde. Andere Werte zeigen einen Fehler an. Das Kopieren wird nicht unterstützt, wenn eine vorhandene Datei überschrieben werden muß. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »Rename« benennt die logische Datei (oder das Verzeichnis) um, die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei umbenannt wurde. Andere Werte zeigen einen Fehler an. Die Umbenennung wird nicht unterstützt, wenn das Ziel ein anderes Laufwerk ist oder eine vorhandene Datei überschrieben werden muß. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig.
B.35 Win32_CodecFile result as Integer = Delete
result as Integer = Compress
result as Integer = Uncompress
result as Integer = TakeOwnerShipEx (Recursive as Boolean, StartFileName as String)
477
Die Methode »Delete« löscht die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei gelöscht wurde. Andere Werte zeigen einen Fehler an. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »Compress« komprimiert die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei komprimiert wurde. Andere Werte zeigen einen Fehler an. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »Uncompress« dekomprimiert die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei dekomprimiert wurde. Andere Werte zeigen einen Fehler an. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »TakeOwnerShipEx« übernimt den Besitz der logischen Datei, die im Objektpfad angegeben ist. Wenn die logische Datei ein Verzeichnis ist, übernimt die Methode den Besitz aller Dateien und Unterverzeichnisse, die im Verzeichnis enthaltenen sind. Der Wert 0 wird zurückgegeben, wenn der Vorgang erfolgreich beendet wurde. Andere Werte zeigen einen Fehler an. »TakeOwnerShipEx« ist eine erweiterte Version der Methode »TakeOwnerShip«. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig.
478
Anhang B: WMI Klassenreferenz
Die Methode »ChangeSecurityPermissionsEx« ändert die Sicherheitsrechte für die im Objektpfad angegebene logische Datei. Wenn die logische Datei ein Verzeichnis ist, werden die Sicherheitsrechte aller im Verzeichnis enthaltener Dateien und Unterverzeichnisse geändert. Die Methode gibt den Wert 0 zurück, wenn die Rechte geändert wurden. Jeder andere Wert zeigt einen Fehler an. »ChangeSecurityPermissionsEx« ist eine erweiterte Version der Methode »ChangeSecurityPermissions«. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »CopyEx« kopiert die logische Datei (oder das Verzeichnis), die result as Integer = CopyEx (FileName as String, Recursive im Objektpfad angegeben ist, in das im Parameter »FileName« festgelegte as Boolean, StartFileName as Verzeichnis. Der Wert 0 wird zurückgegeben, wenn die Datei kopiert wurde. Andere Werte zeigen einen Fehler an. Das Kopieren wird nicht unterstützt, String) wenn eine vorhandene Datei überschrieben werden muß. »CopyEx« ist eine erweiterte Version der Methode »Copy«. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. result as Integer = DeleteEx Die Methode »DeleteEx« löscht die logische Datei (oder das Verzeichnis), die im (StartFileName as String) Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei gelöscht wurde. Andere Werte zeigen einen Fehler an. »DeleteEx« ist eine erweiterte Version der Methode »Delete«. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. result as Integer = ChangeSecurityPermissionsEx (Option as Integer, Recursive as Boolean, SecurityDescriptor as CIM-Object, StartFileName as String)
B.35 Win32_CodecFile result as Integer = CompressEx (Recursive as Boolean, StartFileName as String)
result as Integer = UncompressEx (Recursive as Boolean, StartFileName as String)
result as Boolean = GetEffectivePermission (Permissions as Integer) AccessMask
Archive Caption Compressed CompressionMethod
479
Die Methode »CompressEx« komprimiert die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei komprimiert wurde. Andere Werte zeigen einen Fehler an. »CompressEx« ist eine erweiterte Version der Methode »Compress«. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFSDateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »UncompressEx« dekomprimiert die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei dekomprimiert wurde. Andere Werte zeigen einen Fehler an. »UncompressEx« ist eine erweiterte Version der Methode »Uncompress«. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »GetEffectivePermission« bestimmt, ob der Aufrufer über die vom Argument »Permission« angegebenen zusammengesetzten Berechtigungen für das Dateiobjekt und ggf. die Freigabe verfügt, auf der sich die Datei oder das Verzeichnis befindet. Die Eigenschaft »AccessMask« ist ein Bitarray, das die Zugriffsrechte für die Datei oder das Verzeichnis des Benutzers oder der Gruppe darstellt, für die die Instanz zurückgegeben wird. Diese Eigenschaft wird nur in Windows NT und Windows 2000 unterstützt. Auf Windows 98 und Windows NT/2000 FAT-Datenträgern wird FULL_ACCESS zurückgegeben, da keine Objektsicherheit festgelegt ist. Die Eigenschaft »Archive« ist ein boolescher Wert, der angibt, ob die Datei archiviert werden soll. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »Compressed« ist ein boolescher Wert, der angibt, daß die Datei komprimiert ist. Die Eigenschaft »CompressionMethod« ist eine formfreie Zeichenfolge, die den Algorithmus oder das Programm zum Komprimieren der logischen Datei angibt. Wenn es nicht möglich ist, das Komprimierungsschema zu beschreiben, wird Folgendes angegeben: »Unbekannt«, wenn nicht bekannt ist, ob die logische Datei komprimiert ist. »Komprimiert«, wenn die Datei komprimiert ist, aber das Komprimierungsschema unbekannt ist. »Nicht komprimiert«, wenn die logische Datei nicht komprimiert ist.
Extension FileName FileSize FileType FSCreationClassName FSName Group Hidden InstallDate
InUseCount LastAccessed LastModified
Die Eigenschaft »CreationClassName« gibt den Klassennamen an. Die Eigenschaft »CreationDate« gibt das Erstellungsdatum der Datei an. Die Eigenschaft »CSCreationClassName« gibt die Klasse des Computersystems an. Die Eigenschaft »CSName« gibt den Namen des Computersystems an. Die Eigenschaft »Description« gibt den vollständigen Namen des Codectreibers an. Beispiel: Microsoft PCM-Konvertierungsprogramm. Die Eigenschaft »Drive« gibt den Laufwerkbuchstaben (einschließlich Doppelpunkt) der Datei an. Beispiel: c: Die Eigenschaft »EightDotThreeFileName« gibt den DOS-kompatiblen Namen der Datei an. Beispiel: c:\progra~1 Die Eigenschaft »Encrypted« ist ein boolescher Wert, der angibt, daß die Datei verschlüsselt ist. Die Eigenschaft »EncryptionMethod« ist eine formfreie Zeichenfolge, die den Algorithmus oder das Programm zum Verschlüsseln der logischen Datei angibt. Wenn es z.B. aus Sicherheitsgründen nicht möglich ist, das Verschlüsselungsschema zu beschreiben, wird Folgendes angegeben: »Unbekannt«, wenn nicht bekannt ist, ob die logische Datei verschlüsselt ist. »Verschlüsselt«, wenn die Datei verschlüsselt ist, aber das Verschlüsselungsschema unbekannt ist. »Nicht verschlüsselt«, wenn die logische Datei nicht verschlüsselt ist. Die Eigenschaft »Extension« gibt die Erweiterung der Datei ohne Punkt an. Beispiel: txt, mof, mdb. Die Eigenschaft »FileName« gibt den Namen der Datei ohne Erweiterung an. Beispiel: autoexec Die Eigenschaft »FileSize« gibt die Datengröße in Bytes an. Die Eigenschaft »FileType« stellt den in der Eigenschaft »Extension« angegebenen Dateityp dar. Die Eigenschaft »FSCreationClassName« gibt die Klasse des Dateisystems an. Die Eigenschaft »FSName« gibt den Namen des Dateisystems an. Die Eigenschaft »Group« gibt den von dieser Klasse dargestellten Codectyp an. Die Eigenschaft »Hidden« ist ein boolescher Wert, der angibt, ob die Datei versteckt ist. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »InUseCount« gibt die Anzahl der geöffneten Instanzen einer Datei an. Die Eigenschaft »LastAccessed« gibt an, wann zuletzt auf die Datei zugegriffen wurde. Die Eigenschaft »LastModified« gibt an, wann die Datei zuletzt geändert wurde.
B.36 Win32_ComClassAutoEmulator Manufacturer Name
Path Readable Status
System Version Writeable
481
Herstellerzeichenfolge aus der Versionsressource, falls vorhanden. Die Eigenschaft »Name« gibt den vererbten Namen an, der als Schlüssel einer logischen Datei innerhalb eines Dateisystems dient. Es müssen vollständige Pfadnamen angegeben werden. Beispiel: c:\winnt\system\win.ini Die Eigenschaft »Path« gibt den Pfad der Datei an, einschließlich umgekehrter Schrägstriche am Anfang und am Ende. Beispiel: \windows\system\ Die Eigenschaft »Readable« ist ein boolescher Wert, der angibt, ob die Datei gelesen werden kann. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMARTaktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Eigenschaft »System« ist ein boolescher Wert, der angibt, ob die Datei eine Systemdatei ist. Versionszeichenfolge aus der Versionsressource, falls vorhanden. Die Eigenschaft »Writeable« ist ein boolescher Wert, der angibt, ob die Datei geschrieben werden kann.
B.36 Win32_ComClassAutoEmulator NewVersion
OldVersion
Die Referenz »NewVersion« stellt die COM-Komponente dar, die die zugeordnete COM-Komponente automatisch emulieren kann. Diese Informationen sind im Registrierungseintrag »AutoTreatAs« enthalten. Die Referenz »OldVersion« stellt die COM-Komponente dar, die automatisch von einer anderen Komponente emuliert wird.
B.37 Win32_ComClassEmulator NewVersion OldVersion
Die Referenz »NewVersion« stellt die COM-Komponente dar, die die Schnittstelle zum Emulieren der älteren Version der Komponente enthält. Die Referenz »OldVersion« stellt die COM-Komponente mit Schnittstellen dar, die von der neueren Version der Komponente emuliert werden kann.
Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »Commandline« enthält die Zeichenfolge, mit der der Dienst gestartet wird. »CreationClassName« gibt den Namen der Klasse oder Teilklasse an, die beim Erstellen einer Instanz verwendet wird. Wenn diese Eigenschaft mit anderen Schlüsseleigenschaften dieser Klasse verwendet wird, können alle Instanzen der Klasse und der Teilklassen eindeutig erkannt werden. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »Name« gibt den Dienstzugriffspunkt und die verwalteten Funktionen an. Die Funktionen werden in der Eigenschaft »Description« des Objekts genauer beschrieben. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMARTaktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Der Erstellungsklassenname des bereichsdefinierenden Systems. Der Name des bereichsdefinierenden Systems.
B.39 Win32_ComponentCategory Caption CategoryId Description InstallDate Name
Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »CategoryId« gibt eine GUID für die Komponentenkategorie an. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »Name« gibt einen Namen für die Komponentenkategorie an.
B.40 Win32_ComputerSystem Status
483
Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
B.40 Win32_ComputerSystem result as Integer = SetPowerState Die Methode »SetPowerState« definiert den gewünschten Energiestatus eines Computersystems und seines Betriebssystems. Außerdem wird fest(PowerState as Integer, Time as gelegt, wann das System in diesen Zustand versetzt wird. Der Parameter Date/Time) »PowerState« wird als ein für die Eigenschaft »PowerState« definierter Wert angegeben. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Systems an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. AdminPasswordStatus Die Eigenschaft »AdminPasswordStatus« gibt die Hardwaresicherheitseinstellungen für den Status des Administratorkennworts an. AutomaticResetBootOption Die Eigenschaft »AutomaticResetBootOption« legt fest, ob die Option zum automatischen Starten aktiviert ist. Werte: TRUE oder FALSE. TRUE gibt an, daß die Option aktiviert ist. AutomaticResetCapability Die Eigenschaft »AutomaticResetCapability« legt fest, ob der automatische Neustart aktiviert ist. Diese Funktion ist nur in Windows NT verfügbar (nicht in Windows 95). Werte: TRUE oder FALSE. TRUE gibt an, daß der automatische Neustart aktiviert ist. BootOptionOnLimit Gibt den Systemvorgang an, der ausgeführt wird, wenn der Neustartlimit erreicht ist. BootOptionOnWatchDog Die Eigenschaft »BootOptionOnWatchDog« gibt den Neustartvorgang an, der ausgeführt wird, nachdem die Zeit für den Überwachungszeitgeber verstrichen ist. BootROMSupported Die Eigenschaft »BootROMSupported« legt fest, ob ein Start-ROM unterstützt wird. Werte: TRUE oder FALSE. TRUE gibt an, daß ein StartROM unterstützt wird. BootupState Die Eigenschaft »BootupState« gibt an, wie das System gestartet wurde. Der abgesicherte Start umgeht die vom Benutzer festgelegten Startdateien. Einschränkungen: Wert erforderlich.
KeyboardPasswordStatus LastLoadInfo Manufacturer Model Name
Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »ChassisBootupState« gibt den Startstatus des Gehäuses an. Die Eigenschaft »CreationClassName« gibt den Namen der Klasse oder Teilklasse an, die beim Erstellen einer Instanz verwendet wird. Wenn diese Eigenschaft mit anderen Schlüsseleigenschaften dieser Klasse verwendet wird, können alle Instanzen der Klasse und der Teilklassen eindeutig erkannt werden. Die Eigenschaft »CurrentTimeZone« gibt den Zeitraum für den Offset des unitären Computersystems von CUT (Coordinated Universal Time) an. Die Eigenschaft »DaylightInEffect« gibt an, ob der Sommerzeitmodus aktiv ist. Werte: TRUE oder FALSE. Wenn TRUE, ist die Sommerzeit aktiv. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »Domain« gibt die Namen der Domäne an, zu der der Computer gehört. Die Eigenschaft »DomainRole« gibt die Funktion des Computers in der Domäne/Arbeitsgruppe an. Die Domäne/Arbeitsgruppe besteht aus mehreren Computern im gleichen Netzwerk. Dieser Computer kann z.B. als »Mitglied der Domäne/Arbeitsgruppe » (Wert=1) angezeigt werden. Die Eigenschaft »FrontPanelResetStatus« gibt die Hardwaresicherheitseinstellungen für die Reset-Taste des Computers an. Die Eigenschaft »InfraredSupported« gibt an, ob im Computersystem ein Infrarotanschluß vorhanden ist. Werte: TRUE oder FALSE. Wenn TRUE, ist ein Infrarotanschluß vorhanden. Dieses Objekt enthält die zum Suchen des ursprünglichen Ladegeräts oder des Startdienstes erforderlichen Daten, um den Start des Betriebssystems anzufordern. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »KeyboardPasswordStatus« gibt die Hardwaresicherheitseinstellungen für den Status des Tastaturkennworts an. Der Arrayeintrag in der Eigenschaft »InitialLoadInfo«, der die Daten zum Starten des aktuellen Betriebssystems enthält. Die Eigenschaft »Manufacturer« gibt den Hersteller des Computers an. Beispiel: Acme Die Eigenschaft »Model« gibt den Modellnamen des Computers an. Einschränkungen: Wert erforderlich. Die geerbte Eigenschaft »Name« dient als Schlüssel einer CIM_SystemInstanz in einer Organisationsumgebung.
B.40 Win32_ComputerSystem NameFormat
NetworkServerModeEnabled
NumberOfProcessors
OEMLogoBitmap OEMStringArray
PauseAfterReset
PowerManagementCapabilities
485
Das CIM_System-Objekt und seine abgeleiteten Funktionen sind Objekte der obersten Ebene von CIM, die den Bereich für zahlreiche Komponenten definieren. Eindeutige CIM-Systemschlüssel sind erforderlich. Zum Erstellen des Computersystemnamens wird eine Heuristik definiert, um immer den gleichen Namen zu generieren. Es wird empfohlen, die Heuristik zu verwenden. Die Eigenschaft »NameFormat« gibt an, wie der Systemname mit einer Heuristik generiert wurde. Die Heuristik wird in der Spezifikation »CIM V2 Common Model« beschrieben. In »NameFormat« wird die Reihenfolge zum Zuordnen des Computersystemnamens definiert. Der mit der Heuristik erstellte Name ist der Schlüsselwert des Systems. Es können andere Namen zugeordnet und verwendet werden. Die Eigenschaft »NetworkServerModeEnabled« legt fest, ob der Netzwerkservermodus aktiviert ist. Werte: TRUE oder FALSE. TRUE gibt an, daß der Netzwerkservermodus aktiviert ist. Die Eigenschaft »NumberOfProcessors« gibt die Anzahl der verfügbaren aktivierten Prozessoren an, nicht die gesamten Prozessoren im System. Die verfügbaren Prozessoren können bestimmt werden, indem die Anzahl der dem Computersystemobjekt zugeordneten Prozessorinstanzen mit »Win32_ComputerSystemProcessor« aufgelistet werden. Das Array »OEMLogoBitmap« enthält die Daten für eine vom OEM erstellte Bitmap. Diese Struktur enthält vom OEM definierte formfreie Zeichenfolgen. Beispiel: Teilenummern für Referenzdokumente, Kontaktinformationen, usw. Die Eigenschaft »PauseAfterReset« gibt die Zeitverzögerung für den Neustart an. Sie wird nach einem Energiezyklus, einem Neustart (lokal oder remote) und einem automatischen Neustart verwendet. Der Wert -1 gibt an, daß der Verzögerungswert unbekannt ist. Gibt die energiespezifischen Funktionen eines Computersystems und des Betriebssystems an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein System seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann.
Boolescher Wert, der angibt, daß die Energieverwaltung vom Betriebssystem unterstützt wird. Dieser Wert zeigt nicht an, daß die Energieverwaltungsfunktionen aktiviert sind, sondern nur, daß das System über die entsprechenden Funktionen verfügt. Die Eigenschaft »PowerOnPasswordStatus« gibt die Hardwaresicherheitseinstellungen für den Status des Reaktivierungskennworts an. Gibt den aktuellen Energiestatus des Computersystems und des Betriebssystems an. Dieser wird wie folgt definiert: Der Wert 4 (Unbekannt) gibt an, daß sich das System im Energiesparmodus befindet, aber der genaue Status unbekannt ist. 2 (Niedriger Energiestatus) gibt an, daß sich das System im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist. 3 (Standby) gibt an, daß das System nicht funktioniert, aber schnell reaktiviert werden kann. 7 (Warnung) gibt an, daß sich das System sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Die Eigenschaft »PowerSupplyState« gibt den Status der Stromversorgung des Gehäuses beim letzten Neustart an. Eine Zeichenfolge, die angibt, wie der primäre Systembesitzer erreicht werden kann; z.B. Rufnummer, E-Mailadresse, usw. Der Name des primären Systembesitzers. Bei Aktivierung (Wert = 4) kann das unitäre Computersystem über die Hardware (z.B. den Netzschalter) zurückgesetzt werden. Bei Deaktivierung (Wert = 3) ist das Zurücksetzen über die Hardware nicht zugelassen. Es können auch andere Werte für die Eigenschaft definiert werden: »Nicht implementiert« (5), »Andere« (1) und »Unbekannt« (2). Die Eigenschaft »ResetCount« gibt die Anzahl der automatischen Neustarts seit dem letzten manuellen Neustart an. Der Wert 1 gibt an, daß die Anzahl unbekannt ist. Die Eigenschaft »ResetLimit« gibt die Anzahl der aufeinander folgenden Neustarts an. Der Wert 1 gibt an, daß das Limit unbekannt ist. Eine Sammlung von Zeichenfolgen, die die Funktion des Systems in der IT-Umgebung angeben. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Eigenschaft »SupportContactDescription« ist ein Array, das die Supportinformationen für das Win32-Computersystem enthält.
Die Eigenschaft »SystemStartupDelay« gibt die Verzögerungszeit vor dem Starten des Betriebssystems an. Die Eigenschaft »SystemStartupOptions« gibt die Startoptionen des Win32-Computersystems an. Einschränkungen: Wert erforderlich Die Eigenschaft »SystemStartupSetting« gibt den Index des Standardstartprofils an. Gewöhnlich wird Null (0) zurückgegeben, da die Profilzeichenfolge beim Schreiben an den Anfang der Liste verschoben wird. Dadurch wird der Standardwert für Windows NT festgelegt. Die Eigenschaft »SystemType« gibt den Systemtyp an, der auf dem Win32-Computer ausgeführt wird. Einschränkungen: Wert erforderlich. Die Eigenschaft »ThermalState« gibt den thermischen Status des Gehäuses beim letzten Neustart an. Die Eigenschaft »TotalPhysicalMemory« gibt die Gesamtgröße des physikalischen Speichers an. Beispiel: 67108864 Die Eigenschaft »UserName« gibt den Namen des angemeldeten Benutzers an. Einschränkungen: Ein Wert ist erforderlich. Beispiel: johnsmith Die Eigenschaft »WakeUp« gibt das Ereignis an, das das System reaktiviert hat.
Die Referenz »GroupComponent« stellt das Win32-Computersystem mit den Eigenschaften des Computersystems dar, auf dem der Prozessor ausgeführt wird. Die Referenz »PartComponent« stellt den Win32-Prozessor dar, der die Eigenschaften eines Prozessors des Computersystems enthält.
B.42 Win32_ComputerSystemProduct Caption Description IdentifyingNumber Name SKUNumber UUID
Vendor Version
Eine kurze Textbeschreibung (eine Zeile) des Produkts. Eine Textbeschreibung des Produkts. Produktidentifikation, z.B. eine serielle Softwarenummer oder die Nummer auf einem Hardwarechip. Hauptsächlich verwendeter Produktname. Produkt SKU-Informationen (Stock Keeping Unit). Die Eigenschaft »UUID« enthält die UUID (Universally Unique Identifier) für das Produkt. Eine UUID ist eine 128-Bit Kennung, die sich von anderen generierten UUIDs unterschiedet. Wenn keine UUID verfügbar ist, werden Nullen verwendet. Der Name des Produktherstellers; entspricht der Herstellereigenschaft im Produktobjekt im DMTF Solution Exchange Standard. Produktversionsinformationen; entspricht der Versionseigenschaft im Produktobjekt im DMTF Solution Exchange Standard.
488
Anhang B: WMI Klassenreferenz
B.43 Win32_Condition result as Integer = Invoke
Caption CheckID CheckMode
Condition
Description Feature Level Name SoftwareElementID SoftwareElementState TargetOperatingSystem Version
Die Aufrufmethode soll eine bestimmte Überprüfung auswerten. Einzelheiten bezüglich der Methode für die Auswertung einer bestimmten Überprüfung in einem CIM-Kontext werden von den nicht abstrakten Teilklassen »CIM_ Check« angezeigt. Die Ergebnisse dieser Auswertungsmethode basieren auf dem zurückgegebenen Wert. A 0 (Null) wird zurückgegeben, wenn die Bedingung erfüllt wurde. Alle anderen Werte zeigen an, daß die Bedingung nicht erfüllt wurde. Eine Kennung, die in Verbindung mit anderen Schlüsseln verwendet wird, um die Überprüfung eindeutig zu identifizieren. Die Eigenschaft »CheckMode« zeigt an, ob eine Bedingung in der Umgebung erfüllt oder nicht erfüllt werden soll. Wenn dieser Wert True ist, soll diese Bedingung erfüllt werden (z.B. eine Datei soll sich auf dem Computer befinden) und daher der Aufruf() als True zurückgegeben werden. Wenn der Wert falsch ist, soll diese Bedingung nicht erfüllt werden (z.B. eine Datei soll sich nicht auf dem Computer befinden) und daher der Aufruf als falsch zurückgegeben werden. Die Eigenschaft »CheckMode« zeigt an, ob eine Bedingung in der Umgebung erfüllt oder nicht erfüllt werden soll. Wenn dieser Wert True ist, soll diese Bedingung erfüllt werden (z.B. eine Datei soll sich auf dem Computer befinden) und daher der Aufruf() als True zurückgegeben werden. Wenn der Wert falsch ist, soll diese Bedingung nicht erfüllt werden (z.B. eine Datei soll sich nicht auf dem Computer befinden) und daher der Aufruf als falsch zurückgegeben werden. Eine Beschreibung der Objekte. Eine Beschreibung der Objekte. Eine Beschreibung der Objekte. Der Name zum Identifizieren der Softwarekomponente. Kennung für die Softwarekomponente. Der Status einer Softwarekomponente. Zielbetriebssystem der Softwarekomponente. Versionsformat: .. oder .
B.44 Win32_CreateFolderAction result as Integer = Invoke
Die Methode »Invoke« führt einen bestimmten Vorgang aus. Die Ausführungsdetails hängen von der Implementierung ab. Die Ergebnisse der Methode basieren auf dem Rückgabewert. Der Wert 0 wird zurückgegeben, wenn die Bedingung erfüllt wurde. Der Wert 1 wird zurückgegeben, wenn die Methode nicht unterstützt wird. Jeder andere Wert zeigt an, daß die Bedingung nicht erfüllt wurde.
B.45 Win32_CurrentProbe ActionID Caption Description Direction
DirectoryName
Name SoftwareElementID SoftwareElementState TargetOperatingSystem Version
489
Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Eine Beschreibung des Objekts. Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. Der Name zum Identifizieren der Softwarekomponente. »SoftwareElementID« gibt eine ID für die Softwarekomponente an. »SoftwareElementState« gibt den Status der Softwarekomponente an. »TargetOperatingSystem« gibt das Zielbetriebssystem der Softwarekomponente an. Versionsformat: .. oder .
B.45 Win32_CurrentProbe result as Integer = SetPowerState (PowerState as Integer, Time as Date/Time)
result as Integer = Reset
»SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Parameter »PowerState« folgende Werte festgelegt werden: 1=»Kein Energiesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an.
Gibt die Sensorgenauigkeit für die gemessene Eigenschaft plus/minus einem Hunderstel Prozent an. Der Wert der gemessenen physikalischen Eigenschaft wird anhand der Toleranz, der Auflösung und Genauigkeit berechnet. Die Genauigkeit ist davon abhängig, ob das Gerät linear über seinem dynamischen Bereich liegt. Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Der aktuelle vom Sensor angegebene Wert. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die den aktuellen Test kennzeichnet. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Gibt an, daß der Sensor linear über seinem dynamischen Bereich liegt. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Schwellenwerte des Sensors geben die Bereiche (min. und max. Werte) an, mit denen bestimmt wird, ob der Sensor unter normalen, unkritischen, kritischen oder sehr kritischen Bedingungen funktioniert. Die Schwellenwerte des Sensors geben die Bereiche (min. und max. Werte) an, mit denen bestimmt wird, ob der Sensor unter normalen, unkritischen, kritischen oder sehr kritischen Bedingungen funktioniert.
Die Schwellenwerte des Sensors geben die Bereiche (min. und max. Werte) an, mit denen bestimmt wird, ob der Sensor unter normalen, unkritischen, kritischen oder sehr kritischen Bedingungen funktioniert. »MaxReadable« gibt den größten Wert der gemessenen Eigenschaft an, der vom numerischen Sensor gelesen werden kann. »MinReadable« gibt den kleinsten Wert der gemessenen Eigenschaft an, der vom numerischen Sensor gelesen werden kann. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. »NominalReading« gibt den normalen bzw. erwarteten Wert für den numerischen Sensor an. »NormalMax« gibt den normalen maximalen Bereich für den numerischen Sensor an. »NormalMin« gibt den normalen minimalen Wert für den numerischen Sensor an. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. »Resolution« gibt die Sensorfunktion zum Beheben von Unterschieden in der gemessenen Eigenschaft an. Dieser Wert ist davon abhängig, ob das Gerät linear über seinem dynamischen Bereich liegt. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten
492
Anhang B: WMI Klassenreferenz
StatusInfo
SystemCreationClassName
SystemName
Tolerance
UpperThresholdCritical
UpperThresholdFatal
UpperThresholdNonCritical
wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Gibt die Sensortoleranz für die gemessene Eigenschaft an. Der Wert der gemessenen physikalischen Eigenschaft wird anhand der Toleranz, der Auflösung und Genauigkeit berechnet. Die Toleranz ist davon abhängig, ob das Gerät linear über seinem dynamischen Bereich liegt. Die Schwellenwerte des Sensors geben die Bereiche (min. und max. Werte) an, mit denen bestimmt wird, ob der Sensor unter normalen, unkritischen, kritischen oder sehr kritischen Bedingungen funktioniert. Die Schwellenwerte des Sensors geben die Bereiche (min. und max. Werte) an, mit denen bestimmt wird, ob der Sensor unter normalen, unkritischen, kritischen oder sehr kritischen Bedingungen funktioniert. Die Schwellenwerte des Sensors geben die Bereiche (min. und max. Werte) an, mit denen bestimmt wird, ob der Sensor unter normalen, unkritischen, kritischen oder sehr kritischen Bedingungen funktioniert.
B.46 Win32_DCOMApplication AppID Caption Description InstallDate Name
Die Eigenschaft »AppID« ist eine GUID (Globally Unique Identifier) für die DCOMAnwendung. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden.
B.47 Win32_DCOMApplicationAccessAllowedSetting Status
493
Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
B.47 Win32_DCOMApplicationAccessAllowedSetting Element Setting
Die Referenz »Element« stellt die Funktion von Win32_DCOMApplication dar. Die Referenz »Setting« stellt die Funktion eines Benutzers dar, der auf eine unter Win32_DCOMApplication gruppierte Komponente zugreifen kann.
B.48 Win32_DCOMApplicationLaunchAllowedSetting Element Setting
Die Referenz »Element« stellt die Funktion von Win32_DCOMApplication dar. Die Referenz »Setting« stellt die Funktion eines Benutzers dar, der eine unter Win32_DCOMApplication gruppierte Komponente starten kann.
Die Eigenschaft »AppID« ist eine GUID (Globally Unique Identifier) für die DCOM-Anwendung. Die Eigenschaft »AuthenticationLevel« gibt die minimale Clientauthentifizierungsebene für den COM-Server an. Bei Null werden die Standardwerte verwendet. Authentifizierungsebenen: Keine – Es wird keine Authentifizierung ausgeführt. Verbinden – Die Authentifizierung wird nur ausgeführt, wenn der Client eine Beziehung mit der Anwendung einrichtet. Aufruf – Die Authentifizierung wird nur am Beginn eines Aufrufs ausgeführt, wenn die Anwendung eine Anforderung empfängt. Paket – Die Authentifizierung wird für alle vom Client empfangenen Daten ausgeführt. Paketintegrität – Alle zwischen dem Client und der Anwendung übertragenen Daten werden authentifiziert und überprüft. Paketsicherheit – Die Eigenschaften der anderen Authentifizierungsebenen werden verwendet, und alle Daten werden verschlüsselt. Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Die Eigenschaft »CustomSurrogate« enthält den Namen eines angepaßten Surrogats, in dem die DCOM-Anwendung aktiviert wird. Wenn dieser Wert Null und der Schlüssel TRUE ist, gibt das System einen Surrogatprozeß an.
Eine Textbeschreibung des Objekts »CIM_Setting«. Die Eigenschaft »EnableAtStorageActivation« gibt an, ob die Instanz der DCOM-Anwendung den gespeicherten Status der Anwendung erhält oder mit dem Status, in dem die Anwendung zuerst initialisiert wurde, startet. Die Eigenschaft »LocalService« enthält den Namen des Dienstes der DCOMAnwendung. Die Eigenschaft »RemoteServerName« gibt den Namen des Remoteservers mit der aktivierten Anwendung an. Die Eigenschaft »RunAsUser« gibt an, ob die Anwendung beim Aktivieren unter einem bestimmten Benutzerkonto ausgeführt wird. Die Eigenschaft »ServiceParameters« enthält die an die DCOM-Anwendung übergebenen Befehlszeilenparameter. Diese Eigenschaft ist nur gültig, wenn die Anwendung als Win32-Dienst geschrieben wurde. Die Kennung für das Objekt »CIM_Setting«. Die Eigenschaft »UseSurrogate« gibt an, ob die DCOM-Anwendung als deaktivierter Server aktiviert werden kann.
Eine ganze Zahl, die die Adressengröße des DMA-Kanals in Bits angibt. Zulässige Werte sind 8, 16, 32 oder 64 Bits. Geben Sie 0 ein, wenn die Größe unbekannt ist. Die Eigenschaft »Availability« gibt die Verfügbarkeit der DMA an. Gibt an, ob der Burstmodus vom DMA-Kanal unterstützt wird. Gibt an, ob DMA im »In Bytes«-Modus (Wert=4) ausgeführt werden kann oder nicht (Wert=3). Es können auch »Andere« (1) und »Unbekannt« (2) definiert werden. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. DMA-Kanalzeiten. Z.B. können »Typ A« (Wert =4) oder »Typ F« (6) angegeben werden. »CreationClassName« gibt den Namen der Klasse oder Teilklasse an, die beim Erstellen einer Instanz verwendet wird. Wenn diese Eigenschaft mit anderen Schlüsseleigenschaften dieser Klasse verwendet wird, können alle Instanzen der Klasse und der Teilklassen eindeutig erkannt werden. Der Erstellungsklassenname des bereichsdefinierenden Computersystems. Der Name des bereichsdefinierenden Computersystems. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Teil des Objektschlüsselwerts, DMA-Kanalnummer. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein.
B.51 Win32_DependentService MaxTransferSize
495
Die maximale Byteanzahl, die von diesem DMA-Kanal übertragen werden kann. Geben Sie 0 ein, wenn die Anzahl unbekannt ist. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Die Eigenschaft »Port« gibt den vom Hostbusadapter verwendeten DMAAnschluß an. Diese Angabe ist für einen MCA-Bustyp erforderlich. Beispiel: 12 Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMARTaktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Ein Array, das die vom DMA-Kanal unterstützte Übertragungsbreite in Bits angibt. Geben Sie 0 ein, wenn der Wert unbekannt ist. Gibt an, ob C-Burstzeiten unterstützt werden (Wert=5) oder nicht (Wert=4). Es können auch »Andere« (1), »Unbekannt« (2) und »ISA-kompatibel« (3) definiert werden. Gibt an, ob DMA im »In Words«-Modus (Wert=4) ausgeführt werden kann oder nicht (Wert=3). Es können auch »Andere« (1) und »Unbekannt« (2) definiert werden.
Die Referenz »Antecedent« stellt den Win32-Basisdienst dar, der den Basisdienst enthält, der von der Eigenschaft »Dependent« in dieser Klasse abhängig ist. Die Referenz »Dependent« stellt den Win32-Basisdienst dar, der einen Basisdienst enthält, der von der Eigenschaft »Antecedent« in dieser Klasse abhängig ist. Der Typ der Dienstabhängigkeit. Diese Eigenschaft beschreibt, ob der zugeordnete Dienst abgeschlossen (Wert=2), gestartet (3) oder nicht gestartet (4) sein muß, um ausgeführt werden zu können.
B.52 Win32_Desktop BorderWidth Caption
Die Eigenschaft »BorderWidth« legt die Rahmenbreite für alle Fenster mit einstellbaren Rahmen fest. Beispiel: 3. Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«.
Die Eigenschaft »CoolSwitch« gibt an, ob die schnelle Programmumschaltung aktiviert ist. Die Programmumschaltung ermöglicht das Wechseln von Fenstern mit der Tastenkombination ALT+TAB. Die Eigenschaft »CursorBlinkRate« gibt die Cursorblinkgeschwindigkeit an. Beispiel: 530. Eine Textbeschreibung des Objekts »CIM_Setting«. Die Eigenschaft »DragFullWindows« gibt an, ob der Fensterinhalt beim Verschieben des Fensters angezeigt wird. Werte: TRUE oder FALSE. TRUE gibt an, daß der Fensterinhalt beim Verschieben angezeigt wird. Die Eigenschaft »GridGranularity« gibt die Rasterweite für Fenster auf dem Desktop an, um das Organisieren von Fenstern zu vereinfachen. Das Raster wird normalerweise vom Benutzer nicht bemerkt. Beispiel: 1. Die Eigenschaft »IconSpacing« legt den Abstand zwischen Symbolen fest. Beispiel: 75 Die Eigenschaft »IconTitleFaceName« gibt die Schriftart für die Symbolnamen an. Beispiel: MS San Serif. Die Eigenschaft »IconTitleSize« gibt den Schriftgrad für Symbole an. Beispiel: 9. Die Eigenschaft »IconTitleWrap« gibt an, ob der Symboltitel in die nächste Zeile umgebrochen wird. Werte: TRUE oder FALSE. TRUE gibt an, daß der Titel umgebrochen wird. Die Eigenschaft »Name« gibt den Namen des aktuellen Desktopprofils an. Beispiel: MainProf Die Eigenschaft »Pattern« gibt den Namen des Hintergrundmusters für den Desktop an. Die Eigenschaft »ScreenSaverActive« gibt an, ob der Bildschirmschoner aktiv ist. Werte: TRUE oder FALSE. TRUE gibt an, daß der Bildschirmschoner aktiv ist. Die Eigenschaft »ScreenSaverExecutable« gibt den Namen der aktuellen Bildschirmschonerdatei an. Beispiel: LOGON.SCR. Die Eigenschaft »ScreenSaverSecure« legt fest, ob das Kennwort für den Bildschirmschoner aktiviert ist. Werte: TRUE oder FALSE. TRUE gibt an, daß das Bildschirmschonerkennwort aktiviert ist. Die Eigenschaft »ScreenSaverTimeout« gibt den Zeitraum an, bevor der Bildschirmschoner gestartet wird. Die Kennung für das Objekt »CIM_Setting«. Die Eigenschaft »Wallpaper« gibt den Dateinamen für das Hintergrundbild des Desktops an. Beispiel: WINNT.BMP Die Eigenschaft »WallpaperStretched« gibt an, ob das Hintergrundbild gestreckt wird, um den gesamten Bildschirm auszufüllen. Microsoft Plus! muß installiert werden, damit diese Option verfügbar ist. Werte: TRUE oder FALSE. TRUE gibt an, daß das Hintergrundbild gestreckt ist. FALSE gibt an, daß die ursprünglichen Abmessungen des Hintergrundbilds auf dem Desktophintergrund beibehalten werden.
B.53 Win32_DesktopMonitor WallpaperTiled
497
Die Eigenschaft »WallpaperTiled« gibt an, ob das Hintergrundbild nebeneinander oder zentriert angezeigt wird. Werte: TRUE oder FALSE. TRUE gibt an, daß das Hintergrundbild nebeneinander angezeigt wird.
B.53 Win32_DesktopMonitor result as Integer = SetPowerState (PowerState as Integer, Time as Date/Time)
»SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Parameter »PowerState« folgende Werte festgelegt werden: 1=»Kein Energiesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Bandbreite des Monitors in MegaHertz. Geben Sie 0 ein, wenn der Wert unbekannt ist. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an.
498
Anhang B: WMI Klassenreferenz
DeviceID DisplayType ErrorCleared
ErrorDescription
InstallDate
IsLocked LastErrorCode MonitorManufacturer MonitorType Name
Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die den Desktopmonitor eindeutig kennzeichnet. Beispiel: DesktopMonitor1 In dieser Eigenschaft kann der Typ des Desktopmonitors, z.B. Multiscan oder Monochrom (Wert 2 oder 3), angegeben werden. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Gibt an, ob das Gerät gesperrt ist, um die Benutzereingabe oder -ausgabe zu verhindern. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »MonitorManufacturer« gibt den Hersteller des Monitors an. Beispiel: NEC Die Eigenschaft »MonitorType« gibt den Typ des Monitors an. Beispiel: NEC 5FGp Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Die Eigenschaft »PixelsPerXLogicalInch« gibt die Auflösung entlang der X-Achse (horizontal) des Bildschirms an. Die Eigenschaft »PixelsPerYLogicalInch« gibt die Auflösung entlang der Y-Achse (vertikal) des Bildschirms an. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann.
B.54 Win32_DeviceBus PowerManagementSupported
499
Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht daß die Energieverwaltungsfunktionen aktiviert sind. Bildschirmkoordinaten für die logische Anzeigehöhe. Bildschirmkoordinaten für die logische Anzeigebreite. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft.
ScreenHeight ScreenWidth Status
StatusInfo
SystemCreationClassName
SystemName
B.54 Win32_DeviceBus Antecedent Dependent
Die Referenz »Antecedent« stellt die Eigenschaften des Systembus dar, der vom logischen Gerät verwendet wird. Die Referenz »Dependent« stellt die Eigenschaften des logischen Geräts dar, das den Systembus verwendet.
Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. »CreationClassName« gibt den Namen der Klasse oder Teilklasse an, die beim Erstellen einer Instanz verwendet wird. Wenn diese Eigenschaft mit anderen Schlüsseleigenschaften dieser Klasse verwendet wird, können alle Instanzen der Klasse und der Teilklassen eindeutig erkannt werden. Der Erstellungsklassenname des bereichsdefinierenden Computersystems. Der Name des bereichsdefinierenden Computersystems. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »EndingAddress« enthält die letzte Adresse der im Speicher abgebildeten E/A. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »MemoryType« gibt die Merkmale der Speicherressource in einem Win32-System an. Beispiel: Lesen/Schreiben. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Die Eigenschaft »StartingAddress« enthält die erste Adresse der im Speicher abgebildeten E/A. Dieser Wert sollte für die Hardwareressourcenkennung verwendet werden, um den abgebildeten E/A-Ressourcenschlüssel zu erstellen. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMARTaktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
B.56 Win32_DeviceSettings Element Setting
Die Referenz »Element« stellt die Eigenschaften des logischen Geräts dar, für das die Einstellungen übernommen werden können. Die Referenz »Setting« stellt die Einstellungen dar, die für das logische Gerät übernommen werden können.
B.57 Win32_Directory
501
B.57 Win32_Directory result as Integer = TakeOwnerShip
result as Integer = ChangeSecurityPermissions (Option as Integer, SecurityDescriptor as CIM-Object)
result as Integer = Copy (FileName as String)
Die Methode »TakeOwnerShip« übernimt den Besitz der logischen Datei, die im Objektpfad angegeben ist. Wenn die logische Datei ein Verzeichnis ist, übernimt die Methode den Besitz aller Dateien und Unterverzeichnisse, die im Verzeichnis enthaltenen sind. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFSDateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »ChangeSecurityPermissions« ändert die Sicherheitsrechte für die im Objektpfad angegebene logische Datei. Wenn die logische Datei ein Verzeichnis ist, werden die Sicherheitsrechte aller im Verzeichnis enthaltener Dateien und Unterverzeichnisse geändert. Die Methode gibt den Wert 0 zurück, wenn die Rechte geändert wurden. Jeder andere Wert zeigt einen Fehler an. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »Copy« kopiert die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist, in das im Eingabeparameter festgelegte Verzeichnis. Der Wert 0 wird zurückgegeben, wenn die Datei kopiert wurde. Andere Werte zeigen einen Fehler an. Das Kopieren wird nicht unterstützt, wenn eine vorhandene Datei überschrieben werden muß. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig.
502
Anhang B: WMI Klassenreferenz
result as Integer = Rename(FileName as String)
result as Integer = Delete
result as Integer = Compress
result as Integer = Uncompress
Die Methode »Rename« benennt die logische Datei (oder das Verzeichnis) um, die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei umbenannt wurde. Andere Werte zeigen einen Fehler an. Die Umbenennung wird nicht unterstützt, wenn das Ziel ein anderes Laufwerk ist oder eine vorhandene Datei überschrieben werden muß. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »Delete« löscht die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei gelöscht wurde. Andere Werte zeigen einen Fehler an. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »Compress« komprimiert die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei komprimiert wurde. Andere Werte zeigen einen Fehler an. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »Uncompress« dekomprimiert die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei dekomprimiert wurde. Andere Werte zeigen einen Fehler an. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig.
B.57 Win32_Directory result as Integer = TakeOwnerShipEx (Recursive as Boolean, StartFileName as String)
result as Integer = ChangeSecurityPermissionsEx (Option as Integer, Recursive as Boolean, SecurityDescriptor as CIM-Object, StartFileName as String)
result as Integer = CopyEx (FileName as String, Recursive as Boolean, StartFileName as String)
503
Die Methode »TakeOwnerShipEx« übernimt den Besitz der logischen Datei, die im Objektpfad angegeben ist. Wenn die logische Datei ein Verzeichnis ist, übernimt die Methode den Besitz aller Dateien und Unterverzeichnisse, die im Verzeichnis enthaltenen sind. Der Wert 0 wird zurückgegeben, wenn der Vorgang erfolgreich beendet wurde. Andere Werte zeigen einen Fehler an. »TakeOwnerShipEx« ist eine erweiterte Version der Methode »TakeOwnerShip«. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »ChangeSecurityPermissionsEx« ändert die Sicherheitsrechte für die im Objektpfad angegebene logische Datei. Wenn die logische Datei ein Verzeichnis ist, werden die Sicherheitsrechte aller im Verzeichnis enthaltener Dateien und Unterverzeichnisse geändert. Die Methode gibt den Wert 0 zurück, wenn die Rechte geändert wurden. Jeder andere Wert zeigt einen Fehler an. »ChangeSecurityPermissionsEx« ist eine erweiterte Version der Methode »ChangeSecurityPermissions«. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFSDateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »CopyEx« kopiert die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist, in das im Parameter »FileName« festgelegte Verzeichnis. Der Wert 0 wird zurückgegeben, wenn die Datei kopiert wurde. Andere Werte zeigen einen Fehler an. Das Kopieren wird nicht unterstützt, wenn eine vorhandene Datei überschrieben werden muß. »CopyEx« ist eine erweiterte Version der Methode »Copy«. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig.
504
Anhang B: WMI Klassenreferenz
result as Integer = DeleteEx (StartFileName as String)
result as Integer = CompressEx(Recursive as Boolean, StartFileName as String)
result as Integer = UncompressEx(Recursive as Boolean, StartFileName as String)
result as Boolean = GetEffectivePermission (Permissions as Integer) AccessMask
Die Methode »DeleteEx« löscht die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei gelöscht wurde. Andere Werte zeigen einen Fehler an. »DeleteEx« ist eine erweiterte Version der Methode »Delete«. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »CompressEx« komprimiert die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei komprimiert wurde. Andere Werte zeigen einen Fehler an. »CompressEx« ist eine erweiterte Version der Methode »Compress«. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »UncompressEx« dekomprimiert die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei dekomprimiert wurde. Andere Werte zeigen einen Fehler an. »UncompressEx« ist eine erweiterte Version der Methode »Uncompress«. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »GetEffectivePermission« bestimmt, ob der Aufrufer über die vom Argument »Permission« angegebenen zusammengesetzten Berechtigungen für das Dateiobjekt und ggf. die Freigabe verfügt, auf der sich die Datei oder das Verzeichnis befindet. Die Eigenschaft »AccessMask« ist ein Bitarray, das die Zugriffsrechte für die Datei oder das Verzeichnis des Benutzers oder der Gruppe darstellt, für die die Instanz zurückgegeben wird. Diese Eigenschaft wird nur in Windows NT und Windows 2000 unterstützt. Auf Windows 98 und Windows NT/2000 FAT-Datenträgern wird FULL_ACCESS zurückgegeben, da keine Objektsicherheit festgelegt ist.
Die Eigenschaft »Archive« ist ein boolescher Wert, der angibt, ob die Datei archiviert werden soll. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »Compressed« ist ein boolescher Wert, der angibt, daß die Datei komprimiert ist. Die Eigenschaft »CompressionMethod« ist eine formfreie Zeichenfolge, die den Algorithmus oder das Programm zum Komprimieren der logischen Datei angibt. Wenn es nicht möglich ist, das Komprimierungsschema zu beschreiben, wird Folgendes angegeben: »Unbekannt«, wenn nicht bekannt ist, ob die logische Datei komprimiert ist. »Komprimiert«, wenn die Datei komprimiert ist, aber das Komprimierungsschema unbekannt ist. »Nicht komprimiert«, wenn die logische Datei nicht komprimiert ist. Die Eigenschaft »CreationClassName« gibt den Klassennamen an. Die Eigenschaft »CreationDate« gibt das Erstellungsdatum der Datei an. Die Eigenschaft »CSCreationClassName« gibt die Klasse des Computersystems an. Die Eigenschaft »CSName« gibt den Namen des Computersystems an. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »Drive« gibt den Laufwerkbuchstaben (einschließlich Doppelpunkt) der Datei an. Beispiel: c: Die Eigenschaft »EightDotThreeFileName« gibt den DOS-kompatiblen Namen der Datei an. Beispiel: c:\progra~1 Die Eigenschaft »Encrypted« ist ein boolescher Wert, der angibt, daß die Datei verschlüsselt ist. Die Eigenschaft »EncryptionMethod« ist eine formfreie Zeichenfolge, die den Algorithmus oder das Programm zum Verschlüsseln der logischen Datei angibt. Wenn es z.B. aus Sicherheitsgründen nicht möglich ist, das Verschlüsselungsschema zu beschreiben, wird Folgendes angegeben: »Unbekannt«, wenn nicht bekannt ist, ob die logische Datei verschlüsselt ist. »Verschlüsselt«, wenn die Datei verschlüsselt ist, aber das Verschlüsselungsschema unbekannt ist. »Nicht verschlüsselt«, wenn die logische Datei nicht verschlüsselt ist. Die Eigenschaft »Extension« gibt die Erweiterung der Datei ohne Punkt an. Beispiel: txt, mof, mdb. Die Eigenschaft »FileName« gibt den Namen der Datei ohne Erweiterung an. Beispiel: autoexec Die Eigenschaft »FileSize« gibt die Datengröße in Bytes an. Die Eigenschaft »FileType« stellt den in der Eigenschaft »Extension« angegebenen Dateityp dar. Die Eigenschaft »FSCreationClassName« gibt die Klasse des Dateisystems an. Die Eigenschaft »FSName« gibt den Namen des Dateisystems an. Die Eigenschaft »Hidden« ist ein boolescher Wert, der angibt, ob die Datei versteckt ist.
506
Anhang B: WMI Klassenreferenz
InstallDate
InUseCount LastAccessed LastModified Name
Path Readable Status
System Writeable
Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »InUseCount« gibt die Anzahl der geöffneten Instanzen einer Datei an. Die Eigenschaft »LastAccessed« gibt an, wann zuletzt auf die Datei zugegriffen wurde. Die Eigenschaft »LastModified« gibt an, wann die Datei zuletzt geändert wurde. Die Eigenschaft »Name« gibt den vererbten Namen an, der als Schlüssel einer logischen Datei innerhalb eines Dateisystems dient. Es müssen vollständige Pfadnamen angegeben werden. Beispiel: c:\winnt\system\win.ini Die Eigenschaft »Path« gibt den Pfad der Datei an, einschließlich umgekehrter Schrägstriche am Anfang und am Ende. Beispiel: \windows\system\ Die Eigenschaft »Readable« ist ein boolescher Wert, der angibt, ob die Datei gelesen werden kann. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMARTaktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Eigenschaft »System« ist ein boolescher Wert, der angibt, ob die Datei eine Systemdatei ist. Die Eigenschaft »Writeable« ist ein boolescher Wert, der angibt, ob die Datei geschrieben werden kann.
B.58 Win32_DirectorySpecification result as Integer = Invoke
Caption CheckID
Die Aufrufmethode soll eine bestimmte Überprüfung auswerten. Einzelheiten bezüglich der Methode für die Auswertung einer bestimmten Überprüfung in einem CIM-Kontext werden von den nicht abstrakten Teilklassen »CIM_ Check« angezeigt. Die Ergebnisse dieser Auswertungsmethode basieren auf dem zurückgegebenen Wert. A 0 (Null) wird zurückgegeben, wenn die Bedingung erfüllt wurde. Alle anderen Werte zeigen an, daß die Bedingung nicht erfüllt wurde. Eine Kennung, die in Verbindung mit anderen Schlüsseln verwendet wird, um die Überprüfung eindeutig zu identifizieren.
B.59 Win32_DiskDrive CheckMode
DefaultDir
Description Directory DirectoryPath
DirectoryType Name SoftwareElementID SoftwareElementState TargetOperatingSystem Version
507
Die Eigenschaft »CheckMode« zeigt an, ob eine Bedingung in der Umgebung erfüllt oder nicht erfüllt werden soll. Wenn dieser Wert True ist, soll diese Bedingung erfüllt werden (z.B. eine Datei soll sich auf dem Computer befinden) und daher der Aufruf() als True zurückgegeben werden. Wenn der Wert falsch ist, soll diese Bedingung nicht erfüllt werden (z.B. eine Datei soll sich nicht auf dem Computer befinden) und daher der Aufruf als falsch zurückgegeben werden. Die Eigenschaft »CheckMode« zeigt an, ob eine Bedingung in der Umgebung erfüllt oder nicht erfüllt werden soll. Wenn dieser Wert True ist, soll diese Bedingung erfüllt werden (z.B. eine Datei soll sich auf dem Computer befinden) und daher der Aufruf() als True zurückgegeben werden. Wenn der Wert falsch ist, soll diese Bedingung nicht erfüllt werden (z.B. eine Datei soll sich nicht auf dem Computer befinden) und daher der Aufruf als falsch zurückgegeben werden. Eine Beschreibung der Objekte. Eine Beschreibung der Objekte. Die Eigenschaft »DirectoryPath« gibt den Namen eines Verzeichnisses an. Der von einem Programmhersteller angegebene Wert ist ein standardmäßiger oder empfohlener Pfadname. Der Wert kann für eine bestimmte Umgebung geändert werden. Die Eigenschaft »DirectoryType« gibt den zu beschreibenden Verzeichnistyp an. Der Name zum Identifizieren der Softwarekomponente. Kennung für die Softwarekomponente. Der Status einer Softwarekomponente. Zielbetriebssystem der Softwarekomponente. Versionsformat: .. oder .
B.59 Win32_DiskDrive result as Integer = SetPowerState(PowerState as Integer, Time as Date/Time)
»SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Parameter »PowerState« folgende Werte festgelegt werden: 1=»Kein Energiesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an.
Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Die Eigenschaft »BytesPerSector« gibt die Anzahl der Bytes in jedem Sektor des physikalischen Laufwerks an. Beispiel: 512 Funktionen des Geräts für den Medienzugriff. Wenn das Gerät z.B. »Zufälliger Zugriff«, »Austauschbare Medien« und »Automatische Reinigung« unterstützt, werden die Werte 3, 7 und 9 in das Datenfeld geschrieben. Formfreie Zeichenfolgen mit genaueren Erklärungen zu den im Datenfeld »Capabilities« angezeigten Funktionen des Geräts für den Medienzugriff. Jeder Eintrag in diesem Array bezieht sich auf den Eintrag im Datenfeld »Capabilities« unter dem gleichen Index. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Eine formfreie Zeichenfolge, die den Algorithmus oder das Programm angibt, der bzw. das die Komprimierung unterstützt. Wenn es nicht möglich ist, das Komprimierungsschema zu beschreiben, wird Folgendes angegeben: »Unbekannt«, wenn nicht bekannt ist, ob das Gerät die Komprimierung unterstützt. »Komprimiert«, wenn das Gerät die Komprimierung unterstützt, aber das Komprimierungsschema unbekannt ist. »Nicht komprimiert«, wenn das Gerät die Komprimierung nicht unterstützt. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Standardblockgröße für das Gerät in Bytes. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die das Laufwerk von anderen Geräten im System unterscheidet. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist.
Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Die formfreie Zeichenfolge »ErrorMethodology« beschreibt den Typ der Fehlererkennung und -korrektur, der von diesem Gerät unterstützt wird. Die Eigenschaft »Index« gibt die physikalische Laufwerksnummer des angegebenen Laufwerks an. Der Wert 0xFF gibt an, daß das angegebene Laufwerk keinem physikalischen Laufwerk zugeordnet ist. Beispiel: 1 Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »InterfaceType« gibt den Schnittstellentyp des physikalischen Laufwerks an. Beispiel: SCSI »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »Manufacturer« gibt den Hersteller des Laufwerks an. Beispiel: Seagate Maximale Größe in Bytes des Mediums, auf das zugegriffen wird. Maximale Größe in KB des vom Gerät unterstützten Mediums. Die Eigenschaft »MediaLoaded« gibt an, ob das Medium geladen ist. Für Festplatten ist diese Eigenschaft immer TRUE. Werte: TRUE oder FALSE. TRUE gibt an, daß das Medium geladen ist. Die Eigenschaft »MediaType« gibt den Medientyp an, der von diesem Gerät verwendet wird. Beispiel: Wechseldatenträger Minimale Größe in Bytes des Mediums, auf das zugegriffen wird. Die Eigenschaft »Model« gibt die Modellnummer des Laufwerks an. Beispiel: ST32171W Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Boolescher Wert, der angibt, daß das Laufwerk gereinigt werden muß. In der Eigenschaft »Capabilities« wird angegeben, ob eine automatische oder manuelle Reinigung möglich ist. Wenn das Gerät für den Medienzugriff mehrere individuelle Medien unterstützt, gibt diese Eigenschaft die maximale Medienanzahl an, die unterstützt oder eingelegt werden kann. Die Eigenschaft »Partitions« gibt die Anzahl der Partitionen auf dem physikalischen Laufwerk an, die vom Betriebssystem erkannt werden. Beispiel: 2 Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b
Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht daß die Energieverwaltungsfunktionen aktiviert sind. Die Eigenschaft »SCSIBus« gibt die SCSI-Busnummer des Laufwerks an. Beispiel: 0 Die Eigenschaft »SCSILogicalUnit« gibt die SCSI LUN (Logical Unit Number) des Laufwerks an. Beispiel: 0 Die Eigenschaft »SCSIPort« gibt die SCSI-Anschlußnummer des Laufwerks an. Beispiel: 0 Die Eigenschaft »SCSITargetId« gibt die SCSI-Kennung des Laufwerks an. Beispiel: 0. Die Eigenschaft »SectorsPerTrack« gibt die Anzahl der Sektoren in jeder Spur des physikalischen Laufwerks an. Beispiel: 63 Die Eigenschaft »Size« gibt die Größe des Laufwerks an. Diese wird durch Multiplizieren aller Zylinder, der Spuren in den Zylindern, der Sektoren in den Spuren und den Bytes in den Sektoren berechnet. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
B.59 Win32_DiskDrive StatusInfo
SystemCreationClassName
SystemName
TotalCylinders
TotalHeads
TotalSectors
TotalTracks
TracksPerCylinder
511
Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Eigenschaft »TotalCylinders« gibt die Gesamtanzahl der Zylinder auf dem physikalischen Laufwerk an. Hinweis: Der Wert für diese Eigenschaft wird über die erweiterte Funktion von BIOS Interrupt 13h ermittelt. Der Wert ist möglicherweise ungenau, wenn das Laufwerk ein Übersetzungsschema verwendet, um Datenträger mit hoher Kapazität zu unterstützen. Fordern Sie beim Hersteller genaue Laufwerkspezifikationen an. Beispiel: 657 Die Eigenschaft »TotalHeads« gibt die Gesamtanzahl der Köpfe auf dem Laufwerk an. Hinweis: Der Wert für diese Eigenschaft wird über die erweiterte Funktion von BIOS Interrupt 13h ermittelt. Der Wert ist möglicherweise ungenau, wenn das Laufwerk ein Übersetzungsschema verwendet, um Datenträger mit hoher Kapazität zu unterstützen. Fordern Sie beim Hersteller genaue Laufwerkspezifikationen an. Die Eigenschaft »TotalSectors« gibt die Gesamtanzahl der Sektoren auf dem physikalischen Laufwerk an. Hinweis: Der Wert für diese Eigenschaft wird über die erweiterte Funktion von BIOS Interrupt 13h ermittelt. Der Wert ist möglicherweise ungenau, wenn das Laufwerk ein Übersetzungsschema verwendet, um Datenträger mit hoher Kapazität zu unterstützen. Fordern Sie beim Hersteller genaue Laufwerkspezifikationen an. Beispiel: 2649024 Die Eigenschaft »TotalTracks« gibt die Gesamtanzahl der Spuren auf dem physikalischen Laufwerk an. Hinweis: Der Wert für diese Eigenschaft wird über die erweiterte Funktion von BIOS Interrupt 13h ermittelt. Der Wert ist möglicherweise ungenau, wenn das Laufwerk ein Übersetzungsschema verwendet, um Datenträger mit hoher Kapazität zu unterstützen. Fordern Sie beim Hersteller genaue Laufwerkspezifikationen an. Beispiel: 42048 Die Eigenschaft »TracksPerCylinder« gibt die Anzahl der Spuren in jedem Zylinder auf dem physikalischen Laufwerk an. Hinweis: Der Wert für diese Eigenschaft wird über die erweiterte Funktion von BIOS Interrupt 13h ermittelt. Der Wert ist möglicherweise ungenau, wenn das Laufwerk ein Übersetzungsschema verwendet, um Datenträger mit hoher Kapazität zu unterstützen. Fordern Sie beim Hersteller genaue Laufwerkspezifikationen an. Beispiel: 64
Die Referenz »Antecedent« stellt das Win32_DiskDrive dar, das die Eigenschaften des Laufwerks enthält, auf dem sich die Partition befindet. Die Referenz »Dependent« stellt die Win32-Datenträgerpartition mit den Eigenschaften einer Datenträgerpartition auf dem Laufwerk dar.
B.61 Win32_DiskPartition result as Integer = SetPowerState (PowerState as Integer, Time as Date/Time)
result as Integer = Reset
Access
Availability
»SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Parameter »PowerState« folgende Werte festgelegt werden: 1=»Kein Energiesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Die Eigenschaft »Access« gibt an, ob das Medium lesbar (Wert=1), beschreibbar (Wert=2) oder beides (Wert=3) ist. »Unbekannt« (0) kann ebenfalls definiert werden. Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet.
Größe der Speichererweiterungsblöcke in Byte. Geben Sie 1 ein, wenn die Größe unbekannt oder ein Blockkonzept ungültig ist (z.B. für zusammengesetzte Erweiterungen, Speicher oder logische Datenträger). Größe der Speichererweiterungsblöcke in Byte. Geben Sie 1 ein, wenn die Größe unbekannt oder ein Blockkonzept ungültig ist (z.B. für zusammengesetzte Erweiterungen, Speicher oder logische Datenträger). Die Eigenschaft »BootPartition« legt die aktive Partition fest. Die aktive Partition wird vom Betriebssystem zum Starten von der Festplatte verwendet. Werte: TRUE oder FALSE. TRUE gibt an, daß die Partition aktiv ist. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die das Laufwerk und die Partition eindeutig kennzeichnet. Die Eigenschaft »DiskIndex« gibt die Indexnummer des Datenträgers mit der Partition an. Beispiel: 0. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Die formfreie Zeichenfolge »ErrorMethodology« beschreibt den Typ der Fehlererkennung und -korrektur, der von dieser Speichererweiterung unterstützt wird. Die Eigenschaft »HiddenSectors« gibt die Anzahl der versteckten Sektoren in der Partition an. Beispiel: 63 Die Eigenschaft »Index« gibt die Indexnummer der Partition an. Beispiel: 1 Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an.
514
Anhang B: WMI Klassenreferenz
Name
NumberOfBlocks
PNPDeviceID PowerManagementCapabilities
PowerManagementSupported
PrimaryPartition
Purpose RewritePartition
Size
Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Gesamtanzahl der aufeinander folgenden Blöcke. Jeder Block entspricht in der Größe dem in der Eigenschaft »BlockSize« angegebenen Wert. Die Gesamtgröße der Speichererweiterung kann berechnet werden, indem der Wert der Eigenschaft »BlockSize« mit dem Wert dieser Eigenschaft multipliziert wird. Wenn der Wert in »BlockSize« 1 ist, gibt diese Eigenschaft die Gesamtgröße der Speichererweiterung an. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht daß die Energieverwaltungsfunktionen aktiviert sind. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht daß die Energieverwaltungsfunktionen aktiviert sind. Formfreie Zeichenfolge, die das Medium und/oder seine Verwendung beschreibt. Die Eigenschaft »RewritePartition« gibt an, ob die Partitionsinformationen geändert wurden. Wenn eine Partition mit IOCTL_DISK_SET_DRIVE_LAYOUT geändert wird, wird mit diesem Mitglied bestimmt, welche Partition geändert wurde und neu geschrieben werden muß. Werte: TRUE oder FALSE. TRUE gibt an, daß die Partition neu geschrieben werden muß. Die Eigenschaft »Size« gibt die Gesamtgröße der Partition in Byte an. Beispiel: 1059045376
B.62 Win32_DisplayConfiguration StartingOffset Status
StatusInfo
SystemCreationClassName
SystemName
Type
515
Die Eigenschaft »StartingOffset« gibt den Startoffset (in Byte) der Partition. Beispiel: 32256 Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Eigenschaft »Type« gibt den Partitionstyp an.
Die Eigenschaft »BitsPerPel« gibt die Anzahl der Bits zum Darstellen der Farben in dieser Konfiguration (Bits pro Pixel) an. Beispiel: 8. Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Die Eigenschaft »DeviceName« gibt den Namen des Bildschirms an. Die Eigenschaft »DisplayFlags« gibt an, ob es sich um einen Farbmonitor ohne Zeilensprung handelt. Diese Eigenschaft enthält zwei Informationsbits über den Bildschirm. Die Eigenschaft »DisplayFrequency« gibt die vertikale Aktualisierungsrate des Bildschirms an. Die Aktualisierungsrate legt fest, wie oft der Bildschirm pro Sekunde neu gezeichnet wird.
Die Eigenschaft »DitherType« gibt den Farbmischungstyp des Bildschirms an. Diese Eigenschaft kann vordefinierte Werte von 1 bis 5 oder treiberdefinierte Werte von 6 bis 256 verarbeiten. S/W-Farbmischung ist eine spezielle Methode zum Definieren der Grenzen zwischen Schwarz-, Weiß- und Grauskalierungen. Diese Methode kann nicht auf Bilder (z.B. gescannte Fotos) mit kontinuierlichen Farbverläufen angewendet werden. Die Eigenschaft »DriverVersion« gibt die Version des Bildschirmtreibers an. Die Eigenschaft »ICMIntent« gibt den Wert einer der drei möglichen ICMMethoden an, die standardmäßig verwendet werden sollten. Diese Eigenschaft wird hauptsächlich für Nicht-ICM-Anwendungen verwendet. Diese Eigenschaft kann vordefinierte Werte von 1 bis 3 und treiberdefinierte Werte von 4 bis 256 verarbeiten. Die Eigenschaft »ICMMethod« gibt die Verwendung von ICM an. Für NichtICM-Anwendungen gibt diese Eigenschaft an, ob ICM aktiviert oder deaktiviert ist. Die Eigenschaft »LogPixels« enthält die Pixelanzahl pro logischem Zoll. Diese Eigenschaft ist nur mit Geräten gültig, die mit Pixeln arbeiten (das schließt z.B. Drucker aus). Die Eigenschaft »PelsHeight« gibt die Höhe der anzeigbaren Oberfläche an. Die Eigenschaft »PelsWidth« gibt die Breite der anzeigbaren Oberfläche an. Die Kennung für das Objekt »CIM_Setting«. Die Eigenschaft »SpecificationVersion« gibt die Versionsnummer der Initialisierungsdaten für den Win32-Bildschirm an.
Die Eigenschaft »BitsPerPixel« gibt die Anzahl der Bits zum Darstellen der Farben in dieser Konfiguration oder die Bits in jedem Pixel an. Beispiel: 8 Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Die Eigenschaft »ColorPlanes« gibt die aktuelle Anzahl der in der Bildschirmkonfiguration verwendeten Farbebenen an. Eine Farbebene ist eine Methode zum Darstellen der Pixelfarben. Anstatt jedem Pixel einen RGBWert zuzuweisen, wird die Grafik in die primären Farbkomponenten (Rot, Grün, Blau) aufgeteilt und in separaten Ebenen gespeichert. Diese Methode ermöglicht größer Farbtiefen auf 8- und 16-Bit Videosystemen. Die meisten Grafiksysteme verfügen über eine Bitbreite, die zum Speichern von Farbtiefeninformationen ausreicht; d.h. es ist nur eine Farbebene erforderlich. Beispiel: 1 Eine Textbeschreibung des Objekts »CIM_Setting«. Die Eigenschaft »DeviceEntriesInAColorTable« gibt die Anzahl der Farbindizes in einer Farbtabelle eines Bildschirms an, wenn das Gerät eine Farbtiefe von höchstens 8 Bit pro Pixel hat. Für Geräte mit größeren Farbtiefen wird -1 zurückgegeben. Beispiel: 256
B.64 Win32_DriverVXD DeviceSpecificPens
517
Die Eigenschaft »DeviceSpecificPens« gibt die aktuelle Anzahl der gerätespezifischen Pens an. Der Wert 0xFFFFFFFF gibt an, daß das Gerät keine Pens unterstützt. Pens sind logische Eigenschaften, die Bildschirmen vom Bildschirmcontroller zugeordnet werden und zum Zeichnen von Linien, Polygonen und Text verwendet werden. Beispiel: 3 Die Eigenschaft »HorizontalResolution« gibt die aktuelle Pixelanzahl der Anzeige in horizontaler Richtung (X-Achse) an. Beispiel: 1024 Die Eigenschaft »Name« enthält den Namen des in dieser Konfiguration verwendeten Adapters. Die Eigenschaft »RefreshRate« gibt die Aktualisierungsrate des Videoadapters an. Die Werte 0 oder 1 geben eine Standardrate an. Der Wert -1 gibt eine optimale Rate an. Beispiel: 72 Die Eigenschaft »ReservedSystemPaletteEntries« gibt die aktuelle Anzahl der Farbindexeinträge an, die für das System reserviert sind. Dieser Wert ist nur für Einstellungen gültig, die eine indizierte Palette verwenden. Indizierte Paletten werden nicht für Farbtiefen über 8 Bits pro Pixel verwendet. Wenn die Farbtiefe 8 Bits pro Pixel überschreitet, ist dieser Wert Null. Beispiel: 20 Die Kennung für das Objekt »CIM_Setting«. Die Eigenschaft »SystemPaletteEntries« gibt die aktuelle Anzahl der Farbindexeinträge an, die für das System reserviert sind. Dieser Wert ist nur für Einstellungen gültig, die eine indizierte Palette verwenden. Indizierte Paletten werden nicht für Farbtiefen über 8 Bits pro Pixel verwendet. Wenn die Farbtiefe 8 Bits pro Pixel überschreitet, ist dieser Wert Null. Beispiel: 20 Die Eigenschaft »VerticalResolution« gibt die aktuelle Pixelanzahl der Anzeige in vertikaler Richtung (Y-Achse) an. Beispiel: 768 Die Eigenschaft »VideoMode« enthält eine lesbare Beschreibung der aktuellen Bildschirmauflösung und der Farbeinstellung. Beispiel: 1024 X 768 mit 256 Farben.
HorizontalResolution Name RefreshRate
ReservedSystemPaletteEntries
SettingID SystemPaletteEntries
VerticalResolution VideoMode
B.64 Win32_DriverVXD BuildNumber Caption CodeSet Control
Die interne Kennung für die Kompilierung der Softwarekomponente. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Der von der Softwarekomponente verwendete Codesatz. Die Eigenschaft »Control« gibt die Offsetadresse für die Steuerungsprozeduren des Treibers an. Der virtuelle Gerätemanager ruft die Prozedur auf, um Steuerungsmeldungen an das virtuelle Gerätesystem zu senden. Die Systemsteuerungsmeldungen weisen das virtuelle Gerät zum Ausführen von Vorgängen an, z.B. zum Initialisieren oder zum Benachrichtigen von Geräteänderungen.
518
Anhang B: WMI Klassenreferenz
Description DeviceDescriptorBlock
IdentificationCode InstallDate LanguageEdition
Manufacturer Name OtherTargetOS
PM_API
SerialNumber ServiceTableSize SoftwareElementID
SoftwareElementState
Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DeviceDescriptorBlock« gibt die Offsetadresse der DDBStruktur an. Die DDB (Device Descriptor Block) enthält Informationen, einschließlich der Interruptliste oder andere Daten für die Kommunikation mit diesem VXD, die das Betriebssystem verwendet, um Treiberprozeduren auszuführen. Der Wert dieser Eigenschaft gibt die Herstellerkennung der Softwarekomponente an, z.B. eine SKU (Stock Keeping Unit) oder eine Teilenummer. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Der Wert dieser Eigenschaft gibt die Sprachversion der Softwarekomponente an. Es sollten die in ISO 639 definierten Sprachcodes verwendet werden. Wenn es sich bei der Softwarekomponente um eine mehrsprachige oder internationale Version handelt, verwenden Sie die Multilingual-Zeichenfolge. Hersteller der Softwarekomponente Der Name zum Identifizieren der Softwarekomponente. Die Eigenschaft »OtherTargetOS« gibt den Hersteller und den Betriebssystemtyp einer Softwarekomponente an, wenn die Eigenschaft »TargetOperatingSystem« den Wert 1 (»Andere«) hat. Wenn die Eigenschaft »TargetOperatingSystem« den Wert »Andere« hat, darf der Wert der Eigenschaft »OtherTargetOS« nicht Null sein. Wenn die Eigenschaft »TargetOperatingSystem« einen anderen Wert hat, muß der Wert der Eigenschaft »OtherTargetOS« Null sein. »PM_API« gibt die Offsetadresse der API (Application Programming Interface) im geschützten Modus für die VXD an. Diese Funktionen ermöglichen Anwendungen den direkten Zugriff auf Funktionen der VXD. Die der Softwarekomponente zugewiesene serielle Nummer. Die Eigenschaft »ServiceTableSize« gibt die Anzahl der installierten Dienste und Gerätetreiberdienste des Betriebssystems an. Beispiel: 1024 Eine Kennung für die Softwarekomponente, die in Verbindung mit anderen Schlüsseln verwendet wird, um »CIM_SoftwareElement« eindeutig darzustellen. Der »SoftwareElementState« wird in diesem Modell festgelegt, um verschiedene Zustände eines Softwareelements während seiner Lebensdauer anzuzeigen. – Ein Softwareelement im einsetzbaren Status zeigt die erforderlichen Details zum Verteilen und die Bedingungen und Vorgänge an, die zum Erstellen eines Softwareelements im installierbaren Status (z.B. der nächsten Status) Vorraussetzung sind. – Ein Softwareelement im installierbaren Zustand zeigt die erforderlichen Details zum Installieren und die Bedingungen und Vorgänge an, die zum Erstellen eines Softwareelements im ausführbaren Status (z.B. der nächsten Status) Voraussetzung sind. – Ein Softwareelement im ausführbaren Status zeigt die erforderlichen Details zum Installieren und die Bedingungen und Vorgänge an, die zum Erstellen eines Softwareelements im ausführenden Status (z.B. der nächsten Status) Voraussetzung sind. – Ein Softwareelement im ausführenden Status zeigt die erforderlichen Details zum Überprüfen und Ausführen eines Startelements an.
B.65 Win32_DuplicateFileAction Status
TargetOperatingSystem
V86_API
Version
519
Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMARTaktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während dem erneuten Spiegeln eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Eigenschaft »TargetOperatingSystem« ermöglicht das Festlegen der Betriebssystemumgebung. Die Version des Betriebssystems und die Architektur müssen angegeben werden, da der Wert dieser Eigenschaft die binäre Ausführung nicht sicherstellt. Diese Informationen ermöglichen die für eine Softwarekomponente erforderliche Betriebssystemebene eindeutig festzulegen. »V86_API« gibt die Offsetadresse der API (Application Programming Interface) für die Verwendung im virtuellen 8086-Modus an. Diese Funktionen ermöglichen Anwendungen den direkten Zugriff auf Funktionen der VXD. Die Eigenschaft »Version« gibt die Versionsnummer des VXD-Treibers an. Beispiel: 3,51
B.65 Win32_DuplicateFileAction result as Integer = Invoke
ActionID Caption DeleteAfterCopy Description Destination Direction
Die Methode »Invoke« führt einen bestimmten Vorgang aus. Die Ausführungsdetails hängen von der Implementierung ab. Die Ergebnisse der Methode basieren auf dem Rückgabewert. Der Wert 0 wird zurückgegeben, wenn die Bedingung erfüllt wurde. Der Wert 1 wird zurückgegeben, wenn die Methode nicht unterstützt wird. Jeder andere Wert zeigt an, daß die Bedingung nicht erfüllt wurde. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Gibt an, ob die Quelldatei nach dem Kopiervorgang gelöscht wird. Eine Beschreibung des Objekts. Der vollqualifizierte Zieldateiname. Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«.
520
Anhang B: WMI Klassenreferenz
FileKey
Name SoftwareElementID SoftwareElementState Source TargetOperatingSystem Version
Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. Der Name zum Identifizieren der Softwarekomponente. »SoftwareElementID« gibt eine ID für die Softwarekomponente an. »SoftwareElementState« gibt den Status der Softwarekomponente an. Der vollqualifizierte Quelldateiname. »TargetOperatingSystem« gibt das Zielbetriebssystem der Softwarekomponente an. Versionsformat: .. oder .
B.66 Win32_Environment Caption Description InstallDate Name
Status
SystemVariable
UserName
VariableValue
Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »Name« enthält den Namen einer Win32-Umgebungsvariablen. Eine Anwendung kann eine neue Umgebungsvariable erstellen, wenn der Name einer noch nicht vorhandenen Variablen angegeben wird. Beispiel: Path. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Eigenschaft »SystemVariable« gibt an, ob die Variable eine Systemvariable ist. Eine Systemvariable wird vom Betriebssystem festgelegt und ist unabhängig von benutzerdefinierten Einstellungen. Werte: TRUE oder FALSE. TRUE gibt an, daß die Variable eine Systemvariable ist. Die Eigenschaft »UserName« gibt den Besitzer der Umgebungseinstellung an. Der Wert »« wird für Win32-Systemeinstellungen (im Gegensatz zu benutzerspezifischen Einstellungen) und der Wert »« für Standardeinstellungen verwendet. Beispiel: Jsmith. Die Eigenschaft »VariableValue« enthält die Platzhaltervariable einer Win32Umgebungsvariablen. Informationen wie das Dateisystemverzeichnis können sich zwischen Computern unterscheiden. Das Betriebssystem ersetzt diese durch Platzhalter. Beispiel: %SystemRoot%.
B.67 Win32_EnvironmentSpecification
521
B.67 Win32_EnvironmentSpecification result as Integer = Invoke
Caption CheckID CheckMode
Description Environment Name SoftwareElementID SoftwareElementState TargetOperatingSystem Value Version
Die Aufrufmethode soll eine bestimmte Überprüfung auswerten. Einzelheiten bezüglich der Methode für die Auswertung einer bestimmten Überprüfung in einem CIM-Kontext werden von den nicht abstrakten Teilklassen »CIM_ Check« angezeigt. Die Ergebnisse dieser Auswertungsmethode basieren auf dem zurückgegebenen Wert. A 0 (Null) wird zurückgegeben, wenn die Bedingung erfüllt wurde. Alle anderen Werte zeigen an, daß die Bedingung nicht erfüllt wurde. Eine Kennung, die in Verbindung mit anderen Schlüsseln verwendet wird, um die Überprüfung eindeutig zu identifizieren. Die Eigenschaft »CheckMode« zeigt an, ob eine Bedingung in der Umgebung erfüllt oder nicht erfüllt werden soll. Wenn dieser Wert True ist, soll diese Bedingung erfüllt werden (z.B. eine Datei soll sich auf dem Computer befinden) und daher der Aufruf() als True zurückgegeben werden. Wenn der Wert falsch ist, soll diese Bedingung nicht erfüllt werden (z.B. eine Datei soll sich nicht auf dem Computer befinden) und daher der Aufruf als falsch zurückgegeben werden. Eine Beschreibung der Objekte. Eine Beschreibung der Objekte. Der Name zum Identifizieren der Softwarekomponente. Kennung für die Softwarekomponente. Der Status einer Softwarekomponente. Zielbetriebssystem der Softwarekomponente. Zielbetriebssystem der Softwarekomponente. Versionsformat: .. oder .
B.68 Win32_ExtensionInfoAction result as Integer = Invoke
ActionID Argument Caption
Die Methode »Invoke« führt einen bestimmten Vorgang aus. Die Ausführungsdetails hängen von der Implementierung ab. Die Ergebnisse der Methode basieren auf dem Rückgabewert. Der Wert 0 wird zurückgegeben, wenn die Bedingung erfüllt wurde. Der Wert 1 wird zurückgegeben, wenn die Methode nicht unterstützt wird. Jeder andere Wert zeigt an, daß die Bedingung nicht erfüllt wurde. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist.
522
Anhang B: WMI Klassenreferenz
Command Description Direction
Extension
MIME Name ProgID ShellNew ShellNewValue SoftwareElementID SoftwareElementState TargetOperatingSystem Verb Version
Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Eine Beschreibung des Objekts. Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. Der dieser Erweiterung zugeordnete MIME-Typ. Der Name zum Identifizieren der Softwarekomponente. Der Name zum Identifizieren der Softwarekomponente. Der Name zum Identifizieren der Softwarekomponente. Der Name zum Identifizieren der Softwarekomponente. »SoftwareElementID« gibt eine ID für die Softwarekomponente an. »SoftwareElementState« gibt den Status der Softwarekomponente an. »TargetOperatingSystem« gibt das Zielbetriebssystem der Softwarekomponente an. »TargetOperatingSystem« gibt das Zielbetriebssystem der Softwarekomponente an. Versionsformat: .. oder .
B.69 Win32_Fan result as Integer = SetPowerState (PowerState as Integer, Time as Date/Time)
result as Integer = Reset
»SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Parameter »PowerState« folgende Werte festgelegt werden: 1=»Kein Energiesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an.
B.69 Win32_Fan result as Integer = SetSpeed (DesiredSpeed as Integer)
Fordert an, daß die Lüftergeschwindigkeit auf den im Eingabeparameter der Methode festgelegten Wert gesetzt wird. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Der boolesche Wert »ActiveCooling« gibt an, daß die Kühlgerät aktive Kühlung (im Gegensatz zu passiver Kühlung) unterstützt. Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. »DesiredSpeed« gibt die angeforderte Lüftergeschwindigkeit in Drehungen pro Minute an, wenn eine variable Lüftergeschwindigkeit unterstützt wird (VariableSpeed = TRUE). Die aktuelle Geschwindigkeit wird über einen Sensor (CIM_Tachometer) bestimmt, der dem Lüfter in »CIM_AssociatedSensor« zugeordnet ist. Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die den Lüfter angibt. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden.
524
Anhang B: WMI Klassenreferenz
PNPDeviceID PowerManagementCapabilities
PowerManagementSupported
Status
StatusInfo
SystemCreationClassName
SystemName
VariableSpeed
Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Gibt an, ob der Lüfter unterschiedliche Geschwindigkeiten unterstützt.
B.70 Win32_FileSpecification
525
B.70 Win32_FileSpecification result as Integer = Invoke
Attributes
Caption
CheckID CheckMode
CheckSum CRC1 CRC2
Die Aufrufmethode soll eine bestimmte Überprüfung auswerten. Einzelheiten bezüglich der Methode für die Auswertung einer bestimmten Überprüfung in einem CIM-Kontext werden von den nicht abstrakten Teilklassen »CIM_ Check« angezeigt. Die Ergebnisse dieser Auswertungsmethode basieren auf dem zurückgegebenen Wert. A 0 (Null) wird zurückgegeben, wenn die Bedingung erfüllt wurde. Alle anderen Werte zeigen an, daß die Bedingung nicht erfüllt wurde. Integer containing bit flags representing file attributes (with the decimal value of each bit position in parentheses). See the remarks below for more information: Bit 0: Read Only (1) Bit 1: Hidden (2) Bit 2: System (4) Bit 8: Split (256) – the file is split between two or more compression cabinets Bit 9: Vital (512) – this file is vital for the proper operation of the component to which it belongs Bit 12: Permanent (4096) – the file will not be removed on uninstall Bit 13: Uncompressed (8192) – the file is uncompressed on the source media Bit 14: Patch (16384) (reserved for future use) Bit 15: PatchSourceIgnore (32768) – the file can be ignored during a patch upgrade if it is run-fromsource Integer containing bit flags representing file attributes (with the decimal value of each bit position in parentheses). See the remarks below for more information: Bit 0: Read Only (1) Bit 1: Hidden (2) Bit 2: System (4) Bit 8: Split (256) – the file is split between two or more compression cabinets Bit 9: Vital (512) – this file is vital for the proper operation of the component to which it belongs Bit 12: Permanent (4096) – the file will not be removed on uninstall Bit 13: Uncompressed (8192) – the file is uncompressed on the source media Bit 14: Patch (16384) (reserved for future use) Bit 15: PatchSourceIgnore (32768) – the file can be ignored during a patch upgrade if it is run-fromsource Eine Kennung, die in Verbindung mit anderen Schlüsseln verwendet wird, um die Überprüfung eindeutig zu identifizieren. Die Eigenschaft »CheckMode« zeigt an, ob eine Bedingung in der Umgebung erfüllt oder nicht erfüllt werden soll. Wenn dieser Wert True ist, soll diese Bedingung erfüllt werden (z.B. eine Datei soll sich auf dem Computer befinden) und daher der Aufruf() als True zurückgegeben werden. Wenn der Wert falsch ist, soll diese Bedingung nicht erfüllt werden (z.B. eine Datei soll sich nicht auf dem Computer befinden) und daher der Aufruf als falsch zurückgegeben werden. Die Eigenschaft »Checksum« ist die aus der 16-Bit-Summe der ersten 32 Bytes der Datei berechnete Prüfsumme. Die Eigenschaft »CRC1« ist der mit den mittleren 512 KB berechnete CRCWert. Die Eigenschaft »CRC2« ist der CRC-Wert für die mittleren 512 KB mit einem Offsetmodulo 3 zum Dateibeginn.
526
Anhang B: WMI Klassenreferenz
CreateTimeStamp Description FileID FileSize Language MD5Checksum
Name Sequence SoftwareElementID SoftwareElementState TargetOperatingSystem Version
Erstellungsdatum und -uhrzeit der Datei. Eine Beschreibung der Objekte. Eine Beschreibung der Objekte. Eine Beschreibung der Objekte. Liste der durch Kommas getrennten Sprachkennungen. Der MD5-Algorithmus berechnet eine 128-Bit-Prüfsumme für eine Datei oder ein Objekt. Da die Wahrscheinlichkeit, daß zwei unterschiedliche Dateien die gleiche MD5-Prüfsumme generieren, sehr gering ist, kann diese zum Erstellen einer eindeutigen Dateikennung verwendet werden. Wenn zwei Dateien die gleiche MD5-Prüfsumme besitzen, sind sie höchstwahrscheinlich identisch. Der MD5-Algorithmus generiert für die MOF-Spezifikation der MD5-Eigenschaft immer 32 Zeichen, z.B. generiert die Zeichenfolge abcdefghijklmnopqrstuvwxyz die Zeichenfolge c3fcd3d76192e4007dfb496cca 67e13b. Informationen über das Implementieren des MD5-Algorithmus finden Sie unter http://www. rsa.com/pub/rfc1321.txt. Der Name der Datei oder der Name der Datei mit einem Verzeichnispräfix. Sequence with respect to the media images; order must track cabinet order. Kennung für die Softwarekomponente. Der Status einer Softwarekomponente. Zielbetriebssystem der Softwarekomponente. Versionsformat: .. oder .
B.71 Win32_FloppyController result as Integer = SetPowerState(PowerState as Integer, Time as Date/Time)
result as Integer = Reset
»SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Parameter »PowerState« folgende Werte festgelegt werden: 1=»Kein Energiesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an.
Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die den Diskettencontroller von anderen Geräten im System unterscheidet. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »Manufacturer« gibt den Hersteller des Diskettencontrollers an. Beispiel: Acme Maximale Anzahl der direkt adressierbaren Einheiten, die vom Controller unterstützt werden. Wenn der Wert unbekannt ist, geben Sie 0 ein. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b
528
Anhang B: WMI Klassenreferenz
PowerManagementCapabilities
PowerManagementSupported
ProtocolSupported Status
StatusInfo
SystemCreationClassName
SystemName
TimeOfLastReset
Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Das vom Controller zum Zugriff auf gesteuerte Geräte verwendete Protokoll. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während dem erneuten Spiegeln eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Eigenschaft »TimeOfLastReset« gibt an, wann der Controller zuletzt zurückgesetzt (ausgeschalten oder erneut initialisiert) wurde.
B.72 Win32_FloppyDrive
529
B.72 Win32_FloppyDrive result as Integer = SetPowerState (PowerState as Integer, Time as Date/Time)
result as Integer = Reset
Availability
Capabilities
CapabilityDescriptions
Caption
»SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Parameter »PowerState« folgende Werte festgelegt werden: 1=»Kein Energiesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Funktionen des Geräts für den Medienzugriff. Wenn das Gerät z.B. »Zufälliger Zugriff«, »Austauschbare Medien« und »Automatische Reinigung« unterstützt, werden die Werte 3, 7 und 9 in das Datenfeld geschrieben. Formfreie Zeichenfolgen mit genaueren Erklärungen zu den im Datenfeld »Capabilities« angezeigten Funktionen des Geräts für den Medienzugriff. Jeder Eintrag in diesem Array bezieht sich auf den Eintrag im Datenfeld »Capabilities« unter dem gleichen Index. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an.
LastErrorCode Manufacturer MaxBlockSize MaxMediaSize MinBlockSize Name
NeedsCleaning
NumberOfMediaSupported
PNPDeviceID
Eine formfreie Zeichenfolge, die den Algorithmus oder das Programm angibt, der bzw. das die Komprimierung unterstützt. Wenn es nicht möglich ist, das Komprimierungsschema zu beschreiben, wird Folgendes angegeben: »Unbekannt«, wenn nicht bekannt ist, ob das Gerät die Komprimierung unterstützt. »Komprimiert«, wenn das Gerät die Komprimierung unterstützt, aber das Komprimierungsschema unbekannt ist. »Nicht komprimiert«, wenn das Gerät die Komprimierung nicht unterstützt. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Standardblockgröße für das Gerät in Byte. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die das Diskettenlaufwerk von anderen Geräten im System unterscheidet. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Die formfreie Zeichenfolge »ErrorMethodology« beschreibt den Typ der Fehlererkennung und -korrektur, der von diesem Gerät unterstützt wird. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »Manufacturer« gibt den Hersteller des Diskettenlaufwerks an. Beispiel: Acme Maximale Größe in Byte des Mediums, auf das zugegriffen wird. Maximale Größe in KB des vom Gerät unterstützten Mediums. Minimale Größe in Byte des Mediums, auf das zugegriffen wird. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Boolescher Wert, der angibt, daß das Laufwerk gereinigt werden muß. In der Eigenschaft »Capabilities« wird angegeben, ob eine automatische oder manuelle Reinigung möglich ist. Wenn das Gerät für den Medienzugriff mehrere individuelle Medien unterstützt, gibt diese Eigenschaft die maximale Medienanzahl an, die unterstützt oder eingelegt werden kann. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b
Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während dem erneuten Spiegeln eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft.
532
Anhang B: WMI Klassenreferenz
B.73 Win32_FontInfoAction result as Integer = Invoke
ActionID Caption Description Direction
File
FontTitle
Name SoftwareElementID SoftwareElementState TargetOperatingSystem Version
Die Methode »Invoke« führt einen bestimmten Vorgang aus. Die Ausführungsdetails hängen von der Implementierung ab. Die Ergebnisse der Methode basieren auf dem Rückgabewert. Der Wert 0 wird zurückgegeben, wenn die Bedingung erfüllt wurde. Der Wert 1 wird zurückgegeben, wenn die Methode nicht unterstützt wird. Jeder andere Wert zeigt an, daß die Bedingung nicht erfüllt wurde. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Eine Beschreibung des Objekts. Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. Der Name zum Identifizieren der Softwarekomponente. »SoftwareElementID« gibt eine ID für die Softwarekomponente an. »SoftwareElementState« gibt den Status der Softwarekomponente an. »TargetOperatingSystem« gibt das Zielbetriebssystem der Softwarekomponente an. Versionsformat: .. oder .
B.74 Win32_Group Caption Description Domain InstallDate Name
Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »Domain« gibt die Namen der Windows-Domäne an, zu der das Gruppenkonto gehört. Beispiel: NA-SALES Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »Name« gibt den Namen des Win32-Gruppenkontos in der Domäne an, der vom Domänenmitglied der Klasse definiert wurde.
B.75 Win32_GroupUser SID
SIDType
Status
533
Die Eigenschaft »SID« enthält die SID (Security Identifier) für dieses Konto. Eine SID ist ein variabler Zeichenfolgenwert zum Identifizieren eines Vertrauensnehmers. Jedes Konto besitzt eine von einer Autorität (z.B. einer Windows-Domäne) ausgestellte eindeutige SID, die in einer Sicherheitsdatenbank gespeichert wird. Wenn sich ein Benutzer anmeldet, wird seine SID aus der Datenbank abgefragt und in das Zugriffstoken eingetragen. Anhand der SID im Zugriffstoken wird der Benutzer in allen nachfolgenden Interaktionen mit Windows-Sicherheit identifiziert. Wenn eine SID als eindeutige Kennung für einen Benutzer oder eine Gruppe verwendet wurde, kann sie nicht für einen anderen Benutzer bzw. eine andere Gruppe verwendet werden. Die Eigenschaft »SIDType« enthält Werte, die den SID-Typ angeben: SidTypeUser – Gibt eine Benutzer-SID an. SidTypeGroup – Gibt eine Gruppen-SID an. SidTypeDomain – Gibt eine Domänen-SID an. SidTypeAlias – Gibt eine Alias-SID an. SidTypeWellKnownGroup – Gibt eine SID für eine bekannte Gruppe an. SidTypeDeletedAccount – Gibt eine SID für ein gelöschtes Konto an. SidTypeInvalid – Gibt eine ungültige SID an. SidTypeUnknown – Gibt einen unbekannten SID-Typ an. SidTypeComputer – Gibt eine SID für einen Computer an. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
B.75 Win32_GroupUser GroupComponent PartComponent
Die Referenz »GroupComponent« stellt eine Gruppe dar, von der das Konto ein Mitglied ist. Die Referenz »PartComponent« stellt einen Benutzer oder ein Systemkonto dar, der bzw. das Teil einer Gruppe oder eines Kontos ist.
B.76 Win32_HeatPipe »SetPowerState« definiert den gewünschten Energiestatus und den Zeitresult as Integer = SetPowerState(PowerState as In- punkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Parameter »PowerState« folgende Werte festgelegt werden: 1=»Kein Energieteger, Time as Date/Time) sparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an.
Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Der boolesche Wert »ActiveCooling« gibt an, daß die Kühlgerät aktive Kühlung (im Gegensatz zu passiver Kühlung) unterstützt. Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die das Wärmerohr kennzeichnet. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b
B.76 Win32_HeatPipe PowerManagementCapabilities
PowerManagementSupported
Status
StatusInfo
SystemCreationClassName
SystemName
535
Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während dem erneuten Spiegeln eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft.
536
Anhang B: WMI Klassenreferenz
B.77 Win32_IDEController »SetPowerState« definiert den gewünschten Energiestatus und den Zeitresult as Integer = SetPowerState(PowerState as In- punkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Parameter »PowerState« folgende Werte festgelegt werden: 1=»Kein Enerteger, Time as Date/Time) giesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. result as Integer = Reset Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Availability Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Caption Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. ConfigManagerErrorCode Gibt den Fehlercode des Win32-Konfigurations-Managers an. ConfigManagerUserConfig Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. CreationClassName Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Description Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. DeviceID Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die den SCSIController von anderen Geräten im System unterscheidet. ErrorCleared Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. ErrorDescription Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge.
B.77 Win32_IDEController InstallDate
LastErrorCode Manufacturer MaxNumberControlled Name
PNPDeviceID PowerManagementCapabilities
PowerManagementSupported
ProtocolSupported Status
537
Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »Manufacturer« gibt den Hersteller des IDE-Controllers an. Maximale Anzahl der direkt adressierbaren Einheiten, die vom Controller unterstützt werden. Wenn der Wert unbekannt ist, geben Sie 0 ein. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht daß die Energieverwaltungsfunktionen aktiviert sind. Das vom Controller zum Zugriff auf gesteuerte Geräte verwendete Protokoll. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
538
Anhang B: WMI Klassenreferenz
StatusInfo
SystemCreationClassName
SystemName
TimeOfLastReset
Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Eigenschaft »TimeOfLastReset« gibt an, wann der Controller zuletzt zurückgesetzt (ausgeschalten oder erneut initialisiert) wurde.
B.78 Win32_IDEControllerDevice AccessState
Antecedent Dependent NegotiatedDataWidth
NegotiatedSpeed
NumberOfHardResets NumberOfSoftResets
Die Eigenschaft »AccessState« gibt an, ob der Controller das Gerät steuert oder darauf zugreift (Wert=1) oder nicht (Wert=2). Es kann auch der Wert »Unbekannt« (0) definiert werden. Diese Informationen sind erforderlich, wenn ein logisches Gerät von mehreren Controllern gesteuert werden kann. Die Referenz »Antecedent« stellt den dem Gerät zugeordneten IDEController dar. Die Referenz »Dependent« stellt das mit dem IDE-Controller verbundene logische CIM-Gerät dar. Wenn mehrere Bus- und/oder Verbindungsdatenbreiten möglich sind, definiert die Eigenschaft »NegotiatedDataWidth« die verwendete Datenbreite in Bits. Wenn die Datenbreite nicht ausgehandelt wurde oder diese Informationen nicht verfügbar sind, sollte der Wert der Eigenschaft 0 sein. Wenn mehrere Bus- und/oder Verbindungsgeschwindigkeiten möglich sind, definiert die Eigenschaft »NegotiatedSpeed« die verwendete Geschwindigkeit in Bits pro Sekunde. Wenn die Verbindungs- oder Busgeschwindigkeit nicht ausgehandelt wurde oder diese Informationen nicht verfügbar sind, sollte der Wert der Eigenschaft 0 sein. Anzahl der vom Controller ausgelösten Kaltstarts. Anzahl der vom Controller ausgelösten Warmstarts.
B.79 Win32_IRQResource Availability Caption
Verfügbarkeit der IRQ. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an.
B.79 Win32_IRQResource CreationClassName
CSCreationClassName CSName Description Hardware
InstallDate
IRQNumber Name
Shareable Status
TriggerLevel
TriggerType
Vector
539
»CreationClassName« gibt den Namen der Klasse oder Teilklasse an, die beim Erstellen einer Instanz verwendet wird. Wenn diese Eigenschaft mit anderen Schlüsseleigenschaften dieser Klasse verwendet wird, können alle Instanzen der Klasse und der Teilklassen eindeutig erkannt werden. »CSCreationClassName« enthält den Erstellungsklassennamen des bereichsdefinierenden Computersystems. »CSName« enthält den Namen des bereichsdefinierenden Computersystems. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »Hardware« gibt an, ob der Interrupt hardware- oder softwarebasiert ist. Ein Hardware-IRQ ist ein physikalisches Kabel vom Peripheriegerät zum PIC-Chip (Programmable Interrupt Controller) über den die CPU von zeitkritischen Ereignissen benachrichtigt werden kann. Einige IRQLeitungen sind für Standardgeräte, z.B. die Tastatur, Diskettenlaufwerke und die Systemuhr, reserviert. Ein Softwareinterrupt ermöglicht Anwendungen, den Prozessor zu benachrichtigen. Werte: TRUE oder FALSE. TRUE gibt an, daß der Interrupt hardwarebasiert ist. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Teil des Objektschlüsselwerts, IRQ-Nummer. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Boolescher Wert, der angibt, ob die IRQ freigegeben werden kann. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMARTaktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während dem erneuten Spiegeln eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die IRQ-Ebene gibt an, ob der Interrupt von einem hohen (Wert=4) oder niedrigen (Wert=3) Hardwaresignal ausgelöst wird. Es können auch »Andere« (1) und »Unbekannt« (2) definiert werden. Der IRQ-Typ gibt an, ob Interrupts über Kanten (Wert=4) oder Schwellen (Wert=3) ausgelöst werden. Es können auch »Andere« (1) und »Unbekannt« (2) definiert werden. Die Eigenschaft »Vector« gibt den Vektor der Win32 IRQ-Ressource an. Ein Vektor enthält die Speicheradresse der Funktion, die ausgeführt wird, wenn die Interruptanforderung von der CPU bestätigt wurde.
540
Anhang B: WMI Klassenreferenz
B.80 Win32_ImplementedCategory Category Component
Die Referenz »Category« stellt die von der COM-Klasse verwendete Komponentenkategorie dar. Die Referenz »Category« stellt die COM-Klasse dar, die die zugeordnete Kategorie verwendet.
B.81 Win32_InfraredDevice result as Integer = SetPowerState »SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Pa(PowerState as Integer, Time as rameter »PowerState« folgende Werte festgelegt werden: 1=»Kein EnerDate/Time) giesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. result as Integer = Reset Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Availability Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Caption Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. ConfigManagerErrorCode Gibt den Fehlercode des Win32-Konfigurations-Managers an. ConfigManagerUserConfig Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. CreationClassName Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Description Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an.
LastErrorCode Manufacturer MaxNumberControlled Name
PNPDeviceID PowerManagementCapabilities
PowerManagementSupported
ProtocolSupported
541
Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die das Infrarotgerät von anderen Geräten im System unterscheidet. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »Manufacturer« gibt den Hersteller des Infrarotgeräts an. Beispiel: Acme Maximale Anzahl der direkt adressierbaren Einheiten, die vom Controller unterstützt werden. Wenn der Wert unbekannt ist, geben Sie 0 ein. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Das vom Controller zum Zugriff auf gesteuerte Geräte verwendete Protokoll.
542
Anhang B: WMI Klassenreferenz
Status
StatusInfo
SystemCreationClassName
SystemName
TimeOfLastReset
Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während dem erneuten Spiegeln eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Eigenschaft »TimeOfLastReset« gibt an, wann der Controller zuletzt zurückgesetzt (ausgeschalten oder erneut initialisiert) wurde.
B.82 Win32_IniFileSpecification result as Integer = Invoke
Action Caption CheckID
Die Aufrufmethode soll eine bestimmte Überprüfung auswerten. Einzelheiten bezüglich der Methode für die Auswertung einer bestimmten Überprüfung in einem CIM-Kontext werden von den nicht abstrakten Teilklassen »CIM_ Check« angezeigt. Die Ergebnisse dieser Auswertungsmethode basieren auf dem zurückgegebenen Wert. A 0 (Null) wird zurückgegeben, wenn die Bedingung erfüllt wurde. Alle anderen Werte zeigen an, daß die Bedingung nicht erfüllt wurde.
Eine Kennung, die in Verbindung mit anderen Schlüsseln verwendet wird, um die Überprüfung eindeutig zu identifizieren.
Name Section SoftwareElementID SoftwareElementState TargetOperatingSystem Value Version
543
Die Eigenschaft »CheckMode« zeigt an, ob eine Bedingung in der Umgebung erfüllt oder nicht erfüllt werden soll. Wenn dieser Wert True ist, soll diese Bedingung erfüllt werden (z.B. eine Datei soll sich auf dem Computer befinden) und daher der Aufruf() als True zurückgegeben werden. Wenn der Wert falsch ist, soll diese Bedingung nicht erfüllt werden (z.B. eine Datei soll sich nicht auf dem Computer befinden) und daher der Aufruf als falsch zurückgegeben werden. Die Eigenschaft »Checksum« ist die aus der 16-Bit-Summe der ersten 32 Bytes der Datei berechnete Prüfsumme. Die Eigenschaft »CRC1« ist der mit den mittleren 512 KB berechnete CRCWert. Die Eigenschaft »CRC2« ist der CRC-Wert für die mittleren 512 KB mit einem Offsetmodulo 3 zum Dateibeginn. Erstellungsdatum und -uhrzeit der Datei. Eine Beschreibung der Objekte. Eine Beschreibung der Objekte. Eine Beschreibung der Objekte. Eine Beschreibung der Objekte. Der MD5-Algorithmus berechnet eine 128-Bit Prüfsumme für eine Datei oder ein Objekt. Da die Wahrscheinlichkeit, daß zwei unterschiedliche Dateien die gleiche MD5-Prüfsumme generieren sehr gering ist, kann diese zum Erstellen einer eindeutigen Dateikennung verwendet werden. Wenn zwei Dateien die gleiche MD5-Prüfsumme besitzen, sind sie höchstwahrscheinlich identisch. Der MD5-Algorithmus generiert für die MOF-Spezifikation der MD5-Eigenschaft immer 32 Zeichen, z.B. generiert die Zeichenfolge abcdefghijklmnopqrstuvwxyz die Zeichenfolge c3fcd3d76192e4007dfb496cca 67e13b. Informationen über das Implementieren des MD5-Algorithmus finden Sie unter http://www. rsa.com/pub/rfc1321.txt. Der Name der Datei oder der Name der Datei mit einem Verzeichnispräfix. Der Name der Datei oder der Name der Datei mit einem Verzeichnispräfix. Kennung für die Softwarekomponente. Der Status einer Softwarekomponente. Zielbetriebssystem der Softwarekomponente. Zielbetriebssystem der Softwarekomponente. Versionsformat: .. oder .
B.83 Win32_InstalledSoftwareElement Software System
Verweist auf die installierte Softwarekomponente. Verweist auf das Computersystem, auf dem eine bestimmte Softwarekomponente installiert ist.
544
Anhang B: WMI Klassenreferenz
B.84 Win32_Keyboard result as Integer = SetPowerState »SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Pa(PowerState as Integer, Time as rameter »PowerState« folgende Werte festgelegt werden: 1=»Kein EnerDate/Time) giesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. result as Integer = Reset Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Availability Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Caption Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. ConfigManagerErrorCode Gibt den Fehlercode des Win32-Konfigurations-Managers an. ConfigManagerUserConfig Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. CreationClassName Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Description Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. DeviceID »DeviceID« enthält eine Adresse oder andere Informationen, um das logische Gerät eindeutig zu benennen. ErrorCleared Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. ErrorDescription Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge.
B.84 Win32_Keyboard InstallDate
IsLocked LastErrorCode Layout Name
NumberOfFunctionKeys
Password
PNPDeviceID PowerManagementCapabilities
PowerManagementSupported
Status
545
Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Gibt an, ob das Gerät gesperrt ist, um die Benutzereingabe oder -ausgabe zu verhindern. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Eine formfreie Zeichenfolge, die das Tastaturlayout beschreibt. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Eine ganze Zahl, die angibt, ob ein Tastaturkennwort aktiviert ist (Wert=4), um die lokale Eingabe zu verhindert. Andere Werte: »Deaktiviert« (3), »Nicht implementiert« (5), »Andere« (1) und »Unbekannt« (2). Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
546
Anhang B: WMI Klassenreferenz
StatusInfo
SystemCreationClassName
SystemName
Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft.
B.85 Win32_LaunchCondition result as Integer = Invoke
Caption CheckID CheckMode
Condition
Description Name SoftwareElementID
Die Aufrufmethode soll eine bestimmte Überprüfung auswerten. Einzelheiten bezüglich der Methode für die Auswertung einer bestimmten Überprüfung in einem CIM-Kontext werden von den nicht abstrakten Teilklassen »CIM_ Check« angezeigt. Die Ergebnisse dieser Auswertungsmethode basieren auf dem zurückgegebenen Wert. A 0 (Null) wird zurückgegeben, wenn die Bedingung erfüllt wurde. Alle anderen Werte zeigen an, daß die Bedingung nicht erfüllt wurde. Eine Kennung, die in Verbindung mit anderen Schlüsseln verwendet wird, um die Überprüfung eindeutig zu identifizieren. Die Eigenschaft »CheckMode« zeigt an, ob eine Bedingung in der Umgebung erfüllt oder nicht erfüllt werden soll. Wenn dieser Wert True ist, soll diese Bedingung erfüllt werden (z.B. eine Datei soll sich auf dem Computer befinden) und daher der Aufruf() als True zurückgegeben werden. Wenn der Wert falsch ist, soll diese Bedingung nicht erfüllt werden (z.B. eine Datei soll sich nicht auf dem Computer befinden) und daher der Aufruf als falsch zurückgegeben werden. Die Eigenschaft »CheckMode« zeigt an, ob eine Bedingung in der Umgebung erfüllt oder nicht erfüllt werden soll. Wenn dieser Wert True ist, soll diese Bedingung erfüllt werden (z.B. eine Datei soll sich auf dem Computer befinden) und daher der Aufruf() als True zurückgegeben werden. Wenn der Wert falsch ist, soll diese Bedingung nicht erfüllt werden (z.B. eine Datei soll sich nicht auf dem Computer befinden) und daher der Aufruf als falsch zurückgegeben werden. Eine Beschreibung der Objekte. Der Name zum Identifizieren der Softwarekomponente. Kennung für die Softwarekomponente.
B.86 Win32_LoadOrderGroup SoftwareElementState TargetOperatingSystem Version
547
Der Status einer Softwarekomponente. Zielbetriebssystem der Softwarekomponente. Versionsformat: .. oder .
Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DriverEnabled« gibt an, ob Treiber mit Systemdiensten in der Ladegruppe enthalten sein können. Werte: TRUE oder FALSE. TRUE gibt an, daß Treiber in der Ladegruppe enthalten sein können. Die Eigenschaft »GroupOrder« gibt die Sequenz an, in der diese Dienstgruppe in das Betriebssystem geladen wird. Beispiel: 2 Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »Name« gibt den Namen der Ladegruppe an. Beispiel: Primärer Datenträger Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMARTaktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
Die Referenz »Antecedent« stellt die Win32-Ladegruppe dar, die die Eigenschaften der Ladegruppe enthält, die vor dem abhängigen Basisdienst dieser Klasse gestartet werden muß. Die Referenz »Dependent« stellt den Win32-Basisdienst dar, der die Eigenschaften des Basisdienstes enthält, der von der Ladegruppe abhängig ist.
Die Referenz »GroupComponent« stellt die Win32-Ladegruppe dar, die die Eigenschaften der Ladegruppe enthält, die dem Basisdienst zugeordnet ist. Die Referenz »PartComponent« stellt den Win32-Basisdienst dar, der den Basisdienst enthält, der ein Mitglied einer Ladegruppe ist.
B.89 Win32_LogicalDisk »SetPowerState« definiert den gewünschten Energiestatus und den Zeitresult as Integer = SetPowerState(PowerState as In- punkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Parameter »PowerState« folgende Werte festgelegt werden: 1=»Kein Enerteger, Time as Date/Time) giesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. result as Integer = Reset Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Access Die Eigenschaft »Access« gibt an, ob das Medium lesbar (Wert=1), beschreibbar (Wert=2) oder beides (Wert=3) ist. »Unbekannt« (0) kann ebenfalls definiert werden. Availability Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. BlockSize Größe der Speichererweiterungsblöcke in Byte. Geben Sie 1 ein, wenn die Größe unbekannt oder ein Blockkonzept ungültig ist (z.B. für zusammengesetzte Erweiterungen, Speicher oder logische Datenträger).
Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »Compressed« gibt an, ob der logische Datenträger als einzelne komprimierte Einheit vorhanden ist; z.B. als ein DoubleSpaceDatenträger. Wenn die dateibasierte Komprimierung (z.B. NTFS) unterstützt wird, ist diese Eigenschaft FALSE. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die den logischen Datenträger von anderen Geräten im System unterscheidet. Die Eigenschaft »DriveType« enthält einen numerischen Wert entsprechend dem Laufwerk, das dieser logische Datenträger darstellt. Zusätzliche Werte finden Sie in der SDK-Dokumentation. Beispiel: Ein CDROM-Laufwerk würde 5 zurückgeben. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Die formfreie Zeichenfolge »ErrorMethodology« beschreibt den Typ der Fehlererkennung und -korrektur, der von dieser Speichererweiterung unterstützt wird. Die Eigenschaft »FileSystem« gibt das Dateisystem auf dem logischen Datenträger an. Beispiel: NTFS Die Eigenschaft »FileSystem« gibt das Dateisystem auf dem logischen Datenträger an. Beispiel: NTFS Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »MaximumComponentLength« gibt die maximale Länge einer Dateinamenkomponente an, die vom Win32-Laufwerk unterstützt wird. Eine Dateinamenkomponente ist der Teil des Dateinamens zwischen den umgekehrten Schrägstrichen. Der Wert kann verwendet werden, um anzugeben, ob lange Dateinamen von einem Dateisystem unterstützt werden. Für ein FAT-Dateisystem, das lange Namen unterstützt, wird z.B. der Wert 255 gespeichert, statt 8.3. Lange Namen können auch von NTFS-Dateisystemen unterstützt werden. Beispiel: 255 Die Eigenschaft »MediaType« gibt den Medientyp an, der sich im logischen Laufwerk befindet. Dieser Wert wird in der Aufzählung MEDIA_TYPE in winioctl.h angegeben. Hinweis: Der Wert ist für austauschbare Laufwerke möglicherweise nicht genau, wenn sich kein Medium im Laufwerk befindet.
550
Anhang B: WMI Klassenreferenz
Name
NumberOfBlocks
PNPDeviceID PowerManagementCapabilities
PowerManagementSupported
ProviderName Purpose Size Status
Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Gesamtanzahl der aufeinander folgenden Blöcke. Jeder Block entspricht in der Größe dem in der Eigenschaft »BlockSize« angegebenen Wert. Die Gesamtgröße der Speichererweiterung kann berechnet werden, indem der Wert der Eigenschaft »BlockSize« mit dem Wert dieser Eigenschaft multipliziert wird. Wenn der Wert in »BlockSize« 1 ist, gibt diese Eigenschaft die Gesamtgröße der Speichererweiterung an. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Die Eigenschaft »ProviderName« gibt den Netzwerkpfad zum logischen Gerät an. Formfreie Zeichenfolge, die das Medium und/oder seine Verwendung beschreibt. Formfreie Zeichenfolge, die das Medium und/oder seine Verwendung beschreibt. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während dem erneuten Spiegeln eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
B.90 Win32_LogicalDiskRootDirectory StatusInfo
SupportsFileBasedCompression
SystemCreationClassName
SystemName
VolumeName VolumeSerialNumber
551
Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Eigenschaft »SupportsFileBasedCompression« gibt an, ob die dateibasierte Komprimierung, z.B. NTFS, von der logischen Datenträgerpartition unterstützt wird. Diese Eigenschaft ist FALSE, wenn die Eigenschaft »Compressed« TRUE ist. Werte: TRUE oder FALSE. TRUE gibt an, daß der logische Datenträger die Komprimierung unterstützt. Die Eigenschaft »SupportsFileBasedCompression« gibt an, ob die dateibasierte Komprimierung, z.B. NTFS, von der logischen Datenträgerpartition unterstützt wird. Diese Eigenschaft ist FALSE, wenn die Eigenschaft »Compressed« TRUE ist. Werte: TRUE oder FALSE. TRUE gibt an, daß der logische Datenträger die Komprimierung unterstützt. Die Eigenschaft »SupportsFileBasedCompression« gibt an, ob die dateibasierte Komprimierung, z.B. NTFS, von der logischen Datenträgerpartition unterstützt wird. Diese Eigenschaft ist FALSE, wenn die Eigenschaft »Compressed« TRUE ist. Werte: TRUE oder FALSE. TRUE gibt an, daß der logische Datenträger die Komprimierung unterstützt. Die Eigenschaft »VolumeName« gibt den Datenträgernamen des logischen Datenträgers an. Einschränkungen: Maximal 32 Zeichen. Die Eigenschaft »VolumeSerialNumber« gibt die serielle Nummer des logischen Datenträgers an. Einschränkungen: Maximal 11 Zeichen Beispiel: A8C3-D032
Die Referenz »GroupComponent« stellt die Eigenschaften des logischen Datenträgers in der Zuordnung »Win32_LogicalDiskRootDirectory« dar. Die Referenz »PartComponent« stellt die Eigenschaften der Verzeichnisstruktur in der Zuordnung »Win32_LogicalDiskRootDirectory« dar.
B.91 Win32_LogicalDiskToPartition Antecedent
Dependent
Die Referenz »Antecedent« stellt die Win32-Datenträgerpartition mit den Eigenschaften einer Datenträgerpartition dar, auf der sich der logische Datenträger befindet. Die Referenz »Dependent« stellt den logischen Win32-Datenträger dar, der die Eigenschaften eines logischen Datenträgers auf einer physikalischen Datenträgerpartition enthält.
552
Anhang B: WMI Klassenreferenz
EndingAddress
»EndingAddress« gibt die Endadresse der höheren Speicherebene in der niedrigeren Speicherebene an. Diese Eigenschaft kann zum Zuordnen von nicht zusammenhängenden Erweiterungen in einer höheren Gruppierung verwendet werden. »StartingAddress« gibt die Startadresse der höheren Speicherebene in der niedrigeren Speicherebene an.
StartingAddress
B.92 Win32_LogicalFileAccess AccessMask GuidInheritedObjectType GuidObjectType Inheritance SecuritySetting Trustee Type
Bitflags, die angeben, welche Berechtigungen betroffen sind. Die GUID des Objekttyps, von dem dieses Objekt erbt. Die GUID des Objekttyps, dem die Sicherheitseinstellungen zugewiesen sind. Bitflags, die die Vererbungsmethode der Zugriffsrechte angeben. Die Sicherheitseinstellungen des Datei-/Verzeichnisobjekts können nicht aufgelistet werden. Ein Eintrag in der Objekt-DACL. Der für den Vertrauensnehmer angegebene Zugriffstyp.
B.93 Win32_LogicalFileAuditing AuditedAccessMask GuidInheritedObjectType GuidObjectType Inheritance SecuritySetting Trustee Type
Bitflags, die angeben, welche Vorgänge überwacht werden. Die GUID des Objekttyps von dem dieses Objekt erbt. Die GUID des Objekttyps, dem die Sicherheitseinstellungen zugewiesen sind. Bitflags, die die Vererbungsmethode der Überwachungsrichtlinien angeben. Die Sicherheitseinstellungen des Datei-/Verzeichnisobjekts können nicht aufgelistet werden. Ein Eintrag in der Objekt-SACL. Der für den Vertrauensnehmer angegebene Zugriffstyp.
B.94 Win32_LogicalFileGroup Group SecuritySetting
Die Gruppe des Datei-/Verzeichnisobjekts. Die Sicherheitseinstellungen des Datei-/Verzeichnisobjekts können nicht aufgelistet werden.
B.95 Win32_LogicalFileOwner
553
B.95 Win32_LogicalFileOwner Owner SecuritySetting
Der Besitzer des Datei-/Verzeichnisobjekts. Die Sicherheitseinstellungen des Datei-/Verzeichnisobjekts können nicht aufgelistet werden.
B.96 Win32_LogicalFileSecuritySetting result as Integer = GetSecurityDescriptor result as Integer = SetSecurityDescriptor (Descriptor as CIM-Object) Caption ControlFlags Description OwnerPermissions Path SettingID
Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Der vollständige Pfadname der Datei oder des Verzeichnisses. Die Kennung für das Objekt »CIM_Setting«.
Caption Description Name SettingID TotalPageFileSpace
TotalPhysicalMemory
TotalVirtualMemory
Die Eigenschaft »AvailableVirtualMemory« gibt den für einen aufrufenden Prozeß verfügbaren (nicht reservierten) Speicher an. Diese Eigenschaft wurde durch die Eigenschaft »FreeVirutualMemory » in der Klasse »CIM_ OperatingSystem« ersetzt. Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Die Eigenschaft »Name« gibt an, daß diese Klasse eine logische Speicherkonfiguration darstellt. Beispiel: LogicalMemoryConfiguration Die Kennung für das Objekt »CIM_Setting«. Die Eigenschaft »TotalPageFileSpace« gibt die Gesamtgröße des Speichers in der Auslagerungsdatei an. Diese Eigenschaft wurde durch die Eigenschaft »SizeStoredInPagingFiles« in der Klasse »CIM_OperatingSystem« ersetzt. Die Eigenschaft »TotalPhysicalMemory« gibt die Gesamtgröße des physikalischen Speichers an, der für das Betriebssystem verfügbar ist. Diese Eigenschaft wurde durch die Eigenschaft »TotalVisibleMemorySize« in der Klasse »CIM_OperatingSystem« ersetzt. Die Eigenschaft »TotalVirtualMemory« gibt die Gesamtgröße des Speichers an, der für einen aufrufenden Prozeß verfügbar ist. Diese Eigenschaft wurde durch die Eigenschaft »TotalVirtualMemorySize« in der Klasse »CIM_OperatingSystem« ersetzt.
Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »GroupName« gibt den Namen der Win32Programmgruppe an. Programmgruppen sind als Dateiordner in Win32 implementiert. Beispiel: Zubehör\Systemprogramme Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »Name« gibt den Benutzernamen, gefolgt vom Gruppennamen an. Programmgruppen sind als Dateiordner in Win32 implementiert. Beispiel: All Users:Zubehör\Systemprogramme Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Eigenschaft »UserName« gibt die Benutzer an, die auf die Win32Programmgruppe zugreifen können. Programmgruppen sind als Dateiordner in Win32 implementiert. Beispiel: Alle Benutzer
Die Referenz »Antecedent« stellt die dem Dateiverzeichnis zugeordnete logische Win32-Programmgruppe dar. Die Referenz »Dependent« stellt das Win32-Verzeichnis dar, das das Dateiverzeichnis für die logische Programmgruppe enthält.
Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein.
B.101 Win32_LogicalProgramGroupItemDataFile Name
Status
555
Die geerbte Eigenschaft »Name« dient als Schlüssel einer Win32_LogicalProgramGroupItemInstanz. Programmgruppen werden als Dateiordner in Win32 implementiert. Es müssen vollständige Pfadnamen angegeben werden. Beispiel: f:\WINNT\Profiles\a-kevhu.000\ Startmenü\Programme\Zubehör\WordPad.Lnk Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während dem erneuten Spiegeln eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
Die Referenz »Antecedent« gibt »Win32_LogicalProgramGroupItem« an, das Programmgruppierungen im Startmenü darstellt. Die Referenz »Dependent« stellt die der Programmgruppe zugeordnete Klasse »CIM_DataFile« dar.
B.102 Win32_LogicalShareAccess AccessMask GuidInheritedObjectType GuidObjectType Inheritance SecuritySetting Trustee Type
Bitflags, die angeben, welche Berechtigungen betroffen sind. Die GUID des Objekttyps, von dem dieses Objekt erbt. Die GUID des Objekttyps, dem die Sicherheitseinstellungen zugewiesen sind. Bitflags, die die Vererbungsmethode der Zugriffsrechte angeben. Die Sicherheitseinstellungen des freigegebenen Objekts. Ein Eintrag in der Objekt-DACL. Der für den Vertrauensnehmer angegebene Zugriffstyp.
B.103 Win32_LogicalShareAuditing AuditedAccessMask GuidInheritedObjectType GuidObjectType Inheritance SecuritySetting Trustee Type
Bitflags, die angeben, welche Vorgänge überwacht werden. Die GUID des Objekttyps, von dem dieses Objekt erbt. Die GUID des Objekttyps, dem die Sicherheitseinstellungen zugewiesen sind. Bitflags, die die Vererbungsmethode der Überwachungsrichtlinien angeben. Die Sicherheitseinstellungen des freigegebenen Objekts. Ein Eintrag in der Objekt-SACL. Der für den Vertrauensnehmer angegebene Zugriffstyp.
556
Anhang B: WMI Klassenreferenz
B.104 Win32_LogicalShareSecuritySetting result as Integer = GetSecurityDescriptor(obj) result as Integer = SetSecurityDescriptor (Descriptor as CIM-Object) Caption ControlFlags Description Name SettingID
Liefert ein Security-Descriptor-Objekt zurück, das die Sicherheitseinstellungen dieses Objekts definiert. War die Aktion erfolgreich, dann liefert result den Wert 0 zurück Aktiviert ein neues Security-Descriptor Objekt, das geänderte Sicherheitseinstellungen beinhalten kann. Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Freigabename Die Kennung für das Objekt »CIM_Setting«.
B.105 Win32_MIMEInfoAction result as Integer = Invoke
ActionID Caption CLSID ContentType Description Direction
Extension
Name SoftwareElementID SoftwareElementState
Die Methode »Invoke« führt einen bestimmten Vorgang aus. Die Ausführungsdetails hängen von der Implementierung ab. Die Ergebnisse der Methode basieren auf dem Rückgabewert. Der Wert 0 wird zurückgegeben, wenn die Bedingung erfüllt wurde. Der Wert 1 wird zurückgegeben, wenn die Methode nicht unterstützt wird. Jeder andere Wert zeigt an, daß die Bedingung nicht erfüllt wurde. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Eine Beschreibung des Objekts. Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. Der Name zum Identifizieren der Softwarekomponente. »SoftwareElementID« gibt eine ID für die Softwarekomponente an. »SoftwareElementState« gibt den Status der Softwarekomponente an.
B.106 Win32_MSIResource TargetOperatingSystem Version
557
»TargetOperatingSystem« gibt das Zielbetriebssystem der Softwarekomponente an. Versionsformat: .. oder .
Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Die Kennung für das Objekt »CIM_Setting«.
B.107 Win32_MemoryArray result as Integer = SetPowerState »SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Pa(PowerState as Integer, Time as rameter »PowerState« folgende Werte festgelegt werden: 1=»Kein EnerDate/Time) giesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. result as Integer = Reset Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Access Die Eigenschaft »Access« gibt an, ob das Medium lesbar (Wert=1), beschreibbar (Wert=2) oder beides (Wert=3) ist. »Unbekannt« (0) kann ebenfalls definiert werden. AdditionalErrorData Die Eigenschaft »AdditionalErrorData« enthält zusätzliche Fehlerinformationen. Ein Beispiel ist das ECC-Syndrom oder die Rückgabe der Prüfbits, wenn eine CRC-basierte Fehlermethode verwendet wird. Wenn ein Einzelbit-Fehler gefunden wird und der CRC-Algorithmus bekannt ist, ist es möglich, das fehlerhafte Bit zu bestimmen. Dieser Datentyp (ECCSyndrom, Prüfbit, Paritätsbit oder andere Herstellerinformationen) ist in diesem Feld enthalten. Diese Eigenschaft wird nur verwendet, wenn die Eigenschaft »ErrorInfo« nicht 3 ist.
Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Größe der Speichererweiterungsblöcke in Bytes. Geben Sie 1 ein, wenn die Größe unbekannt oder ein Blockkonzept ungültig ist (z.B. für zusammengesetzte Erweiterungen, Speicher oder logische Datenträger). Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Die Eigenschaft »CorrectableError« gibt an, ob der letzte Fehler korrigierbar war. Diese Eigenschaft wird nicht verwendet, wenn »ErrorInfo« 3 ist Werte: True oder False. True gibt an, daß der Fehler korrigierbar ist. Die Eigenschaft »CorrectableError« gibt an, ob der letzte Fehler korrigierbar war. Diese Eigenschaft wird nicht verwendet, wenn »ErrorInfo« 3 ist Werte: True oder False. True gibt an, daß der Fehler korrigierbar ist. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die das Speicherarray eindeutig kennzeichnet. Beispiel: Speicherarray 1 Die Eigenschaft »EndingAddress« gibt die Endadresse an, auf die von einer Anwendung oder dem Betriebssystem verwiesen wird. Diese Speicheradresse wird von einem Speichercontroller für das Speicherobjekt zugeordnet. Die Eigenschaft »ErrorAccess« gibt den Speichervorgang an, der den letzten Fehler verursacht hat. Diese Eigenschaft ist nur gültig, wenn »ErrorInfo« nicht 3 ist. Die Eigenschaft »ErrorAddress« gibt die Adresse des letzten Speicherfehlers an. Diese Eigenschaft wird nur verwendet, wenn »ErrorInfo« nicht 3 ist. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die Eigenschaft »ErrorData« enthält die Daten des letzten Speicherzugriffs mit einem Fehler. Die Daten belegen das erste N-Oktett des Datenfelds, das für die in der Eigenschaft »ErrorTransferSize« angegebenen Bits erforderlich ist. Wenn der Wert 0 ist, wird diese Eigenschaft nicht verwendet.
Die Eigenschaft »ErrorDataOrder« gibt die Reihenfolge der in der Eigenschaft »ErrorData« gespeicherten Daten an. Diese Eigenschaft wird nur verwendet, wenn »ErrorTransferSize« 0 ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Die Eigenschaft »ErrorGranularity« gibt die Ebene für die Fehlerbehebung an. Beispiel: Geräteebene. Die Eigenschaft »ErrorInfo« beschreibt den Typ des zuletzt aufgetretenen Fehlers. Die Werte 12 bis 14 werden in dieser Eigenschaft nicht verwendet. Diese Werte geben in der Eigenschaft »CorrectableError« an, ob ein Fehler korrigierbar ist. Die Eigenschaft »ErrorMethodology« gibt den Typ der von der Speicherhardware verwendeten Fehlerüberprüfung an. Die Eigenschaft »ErrorResolution« gibt die Datenmenge des letzten Fehlers an. Diese Eigenschaft wird nicht verwendet, wenn »ErrorInfo« 3 ist. Die Eigenschaft »ErrorTime« gibt den Zeitpunkt des letzten Speicherfehlers an. Diese Eigenschaft ist nur gültig, wenn »ErrorInfo« nicht 3 ist. Die Eigenschaft »ErrorTransferSize« gibt die Größe der übertragenen Daten an, die den letzten Fehler enthalten. Diese Eigenschaft ist 0, wenn kein Fehler aufgetreten ist. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Gesamtanzahl der aufeinander folgenden Blöcke. Jeder Block entspricht in der Größe dem in der Eigenschaft »BlockSize« angegebenen Wert. Die Gesamtgröße der Speichererweiterung kann berechnet werden, indem der Wert der Eigenschaft »BlockSize« mit dem Wert dieser Eigenschaft multipliziert wird. Wenn der Wert in »BlockSize« 1 ist, gibt diese Eigenschaft die Gesamtgröße der Speichererweiterung an. Die Eigenschaft »OtherErrorDescription« enthält weitere Informationen, wenn die Eigenschaft »ErrorInfo« 1 ist. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b
560
Anhang B: WMI Klassenreferenz
PowerManagementCapabilities
PowerManagementSupported
Purpose StartingAddress
Status
StatusInfo
SystemCreationClassName
Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Formfreie Zeichenfolge, die das Medium und/oder seine Verwendung beschreibt. Die Eigenschaft »StartingAddress« gibt die Startadresse an, auf die von einer Anwendung oder dem Betriebssystem verwiesen wird. Diese Speicheradresse wird von einem Speichercontroller für das Speicherobjekt zugeordnet. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft.
Die Eigenschaft »SystemLevelAddress« gibt an, ob es sich bei den Adreßinformationen in der Eigenschaft »ErrorAddress« um eine Systemadresse (TRUE) oder eine physikalische Adresse (FALSE) handelt. Diese Eigenschaft wird nur verwendet, wenn der Wert für die Eigenschaft »ErrorInfo« 3 ist. Werte: TRUE oder FALSE. TRUE gibt an, daß »ErrorAddress« eine Systemadresse enthält. Die Eigenschaft »SystemLevelAddress« gibt an, ob es sich bei den Adressinformationen in der Eigenschaft »ErrorAddress« um eine Systemadresse (TRUE) oder eine physikalische Adresse (FALSE) handelt. Diese Eigenschaft wird nur verwendet, wenn der Wert für die Eigenschaft »ErrorInfo« 3 ist. Werte: TRUE oder FALSE. TRUE gibt an, daß »ErrorAddress« eine Systemadresse enthält.
Die Referenz »Antecedent« gibt das physikalische Speicherarray an, das das logische Speicherarray implementiert. Die Referenz »Dependent« gibt das vom physikalischen Speicherarray implementierte logische Speicherarray an.
B.109 Win32_MemoryDevice »SetPowerState« definiert den gewünschten Energiestatus und den Zeitresult as Integer = SetPowerState(PowerState as In- punkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Parameter »PowerState« folgende Werte festgelegt werden: 1=»Kein Enerteger, Time as Date/Time) giesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. result as Integer = Reset Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an.
Die Eigenschaft »Access« gibt an, ob das Medium lesbar (Wert=1), beschreibbar (Wert=2) oder beides (Wert=3) ist. »Unbekannt« (0) kann ebenfalls definiert werden. Die Eigenschaft »AdditionalErrorData« enthält zusätzliche Fehlerinformationen. Ein Beispiel ist das ECC-Syndrom oder die Rückgabe der Prüfbits, wenn eine CRC-basierte Fehlermethode verwendet wird. Wenn ein Einzelbit-Fehler gefunden wird und der CRC-Algorithmus bekannt ist, ist es möglich, das fehlerhafte Bit zu bestimmen. Dieser Datentyp (ECCSyndrom, Prüfbit, Paritätsbit oder andere Herstellerinformationen) ist in diesem Feld enthalten. Diese Eigenschaft wird nur verwendet, wenn die Eigenschaft »ErrorInfo« nicht 3 ist. Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Größe der Speichererweiterungsblöcke in Byte. Geben Sie 1 ein, wenn die Größe unbekannt oder ein Blockkonzept ungültig ist (z.B. für zusammengesetzte Erweiterungen, Speicher oder logische Datenträger). Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Die Eigenschaft »CorrectableError« gibt an, ob der letzte Fehler korrigierbar war. Diese Eigenschaft wird nicht verwendet, wenn »ErrorInfo« 3 ist. Werte: True oder False. True gibt an, daß der Fehler korrigierbar ist. Die Eigenschaft »CorrectableError« gibt an, ob der letzte Fehler korrigierbar war. Diese Eigenschaft wird nicht verwendet, wenn »ErrorInfo« 3 ist. Werte: True oder False. True gibt an, daß der Fehler korrigierbar ist. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die das Speichergerät eindeutig kennzeichnet. Beispiel: Speichergerät 1 Die Eigenschaft »EndingAddress« gibt die Endadresse an, auf die von einer Anwendung oder dem Betriebssystem verwiesen wird. Diese Speicheradresse wird von einem Speichercontroller für das Speicherobjekt zugeordnet. Die Eigenschaft »ErrorAccess« gibt den Speichervorgang an, der den letzten Fehler verursacht hat. Diese Eigenschaft ist nur gültig, wenn »ErrorInfo« nicht 3 ist.
Die Eigenschaft »ErrorAddress« gibt die Adresse des letzten Speicherfehlers an. Diese Eigenschaft wird nur verwendet, wenn »ErrorInfo« nicht 3 ist. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die Eigenschaft »ErrorData« enthält die Daten des letzten Speicherzugriffs mit einem Fehler. Die Daten belegen das erste N-Oktett des Datenfelds, das für die in der Eigenschaft »ErrorTransferSize« angegebenen Bits erforderlich ist. Wenn der Wert 0 ist, wird diese Eigenschaft nicht verwendet. Die Eigenschaft »ErrorDataOrder« gibt die Reihenfolge der in der Eigenschaft »ErrorData« gespeicherten Daten an. Diese Eigenschaft wird nur verwendet, wenn »ErrorTransferSize« 0 ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Die Eigenschaft »ErrorGranularity« gibt die Ebene für die Fehlerbehebung an. Beispiel: Geräteebene. Die Eigenschaft »ErrorInfo« beschreibt den Typ des zuletzt aufgetretenen Fehlers. Die Werte 12 bis 14 werden in dieser Eigenschaft nicht verwendet. Diese Werte geben in der Eigenschaft »CorrectableError« an, ob ein Fehler korrigierbar ist. Die Eigenschaft »ErrorMethodology« gibt den Typ der von der Speicherhardware verwendeten Fehlerüberprüfung an. Die Eigenschaft »ErrorResolution« gibt die Datenmenge des letzten Fehlers an. Diese Eigenschaft wird nicht verwendet, wenn »ErrorInfo« 3 ist. Die Eigenschaft »ErrorTime« gibt den Zeitpunkt des letzten Speicherfehlers an. Diese Eigenschaft ist nur gültig, wenn »ErrorInfo« nicht 3 ist. Die Eigenschaft »ErrorTransferSize« gibt die Größe der übertragenen Daten an, die den letzten Fehler enthalten. Diese Eigenschaft ist 0, wenn kein Fehler aufgetreten ist. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Gesamtanzahl der aufeinander folgenden Blöcke. Jeder Block entspricht in der Größe dem in der Eigenschaft »BlockSize« angegebenen Wert. Die Gesamtgröße der Speichererweiterung kann berechnet werden, indem der Wert der Eigenschaft »BlockSize« mit dem Wert dieser Eigenschaft multipliziert wird. Wenn der Wert in »BlockSize« 1 ist, gibt diese Eigenschaft die Gesamtgröße der Speichererweiterung an. Die Eigenschaft »OtherErrorDescription« enthält weitere Informationen, wenn die Eigenschaft »ErrorInfo« 1 ist. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b
564
Anhang B: WMI Klassenreferenz
PowerManagementCapabilities
PowerManagementSupported
Purpose StartingAddress
Status
StatusInfo
SystemCreationClassName
SystemLevelAddress
Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Formfreie Zeichenfolge, die das Medium und/oder seine Verwendung beschreibt. Die Eigenschaft »StartingAddress« gibt die Startadresse an, auf die von einer Anwendung oder dem Betriebssystem verwiesen wird. Diese Speicheradresse wird von einem Speichercontroller für das Speicherobjekt zugeordnet. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Eigenschaft »SystemLevelAddress« gibt an, ob es sich bei den Adreßinformationen in der Eigenschaft »ErrorAddress« um eine Systemadresse (TRUE) oder eine physikalische Adresse (FALSE) handelt. Diese Eigenschaft wird nur verwendet, wenn der Wert für die Eigenschaft »ErrorInfo« 3 ist. Werte: TRUE oder FALSE. TRUE gibt an, daß »ErrorAddress« eine Systemadresse enthält.
B.110 Win32_MemoryDeviceArray SystemName
565
Die Eigenschaft »SystemLevelAddress« gibt an, ob es sich bei den Adreßinformationen in der Eigenschaft »ErrorAddress« um eine Systemadresse (TRUE) oder eine physikalische Adresse (FALSE) handelt. Diese Eigenschaft wird nur verwendet, wenn der Wert für die Eigenschaft »ErrorInfo« 3 ist. Werte: TRUE oder FALSE. TRUE gibt an, daß »ErrorAddress« eine Systemadresse enthält.
Die Referenz »GroupComponent« stellt das Speicherarray in der Zuordnung »Win32_MemoryDeviceArray« dar. Die Referenz »PartComponent« stellt ein Speichergerät in der Zuordnung »Win32_MemoryDeviceArray« dar.
Die Referenz »Antecedent« stellt den physikalischen Speicher dar, der die Speicherkomponente enthält. Die Referenz »Dependent« stellt die im physikalischen Speicher vorhandene Speicherkomponente dar.
B.112 Win32_MotherboardDevice »SetPowerState« definiert den gewünschten Energiestatus und den Zeitresult as Integer = SetPowerState(PowerState as In- punkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Parameter »PowerState« folgende Werte festgelegt werden: 1=»Kein Enerteger, Time as Date/Time) giesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. result as Integer = Reset Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an.
Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die das Motherboard eindeutig kennzeichnet. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann.
PrimaryBusType RevisionNumber SecondaryBusType Status
StatusInfo
SystemCreationClassName
SystemName
567
Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Die Eigenschaft »PrimaryBusType« gibt den primären Bustyp des Motherboards an. Beispiel: PCI Die Eigenschaft »RevisionNumber« gibt die Revisionsnummer des Motherboards an. Beispiel: 00 Die Eigenschaft »SecondaryBusType« gibt den sekundären Bustyp des Motherboards an. Beispiel: ISA Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft.
B.113 Win32_MoveFileAction result as Integer = Invoke
ActionID
Die Methode »Invoke« führt einen bestimmten Vorgang aus. Die Ausführungsdetails hängen von der Implementierung ab. Die Ergebnisse der Methode basieren auf dem Rückgabewert. Der Wert 0 wird zurückgegeben, wenn die Bedingung erfüllt wurde. Der Wert 1 wird zurückgegeben, wenn die Methode nicht unterstützt wird. Jeder andere Wert zeigt an, daß die Bedingung nicht erfüllt wurde. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist.
568
Anhang B: WMI Klassenreferenz
Caption Description DestFolder DestName Direction
FileKey
Name Options SoftwareElementID SoftwareElementState SourceFolder SourceName TargetOperatingSystem Version
Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Eine Beschreibung des Objekts. Eine Beschreibung des Objekts. Eine Beschreibung des Objekts. Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. Der Name zum Identifizieren der Softwarekomponente. Der Name zum Identifizieren der Softwarekomponente. »SoftwareElementID« gibt eine ID für die Softwarekomponente an. »SoftwareElementState« gibt den Status der Softwarekomponente an. »SoftwareElementState« gibt den Status der Softwarekomponente an. »SoftwareElementState« gibt den Status der Softwarekomponente an. »TargetOperatingSystem« gibt das Zielbetriebssystem der Softwarekomponente an. Versionsformat: .. oder .
B.114 Win32_NTEventlogFile result as Integer = TakeOwnerShip
Die Methode »TakeOwnerShip« übernimt den Besitz der logischen Datei, die im Objektpfad angegeben ist. Wenn die logische Datei ein Verzeichnis ist, übernimt die Methode den Besitz aller Dateien und Unterverzeichnisse, die im Verzeichnis enthalten sind. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFSDateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig.
B.114 Win32_NTEventlogFile result as Integer = ChangeSecurityPermissions (Option as Integer, SecurityDescriptor as CIM-Object)
result as Integer = Copy(FileName as String)
result as Integer = Rename(FileName as String)
569
Die Methode »ChangeSecurityPermissions« ändert die Sicherheitsrechte für die im Objektpfad angegebene logische Datei. Wenn die logische Datei ein Verzeichnis ist, werden die Sicherheitsrechte aller im Verzeichnis enthaltener Dateien und Unterverzeichnisse geändert. Die Methode gibt den Wert 0 zurück, wenn die Rechte geändert wurden. Jeder andere Wert zeigt einen Fehler an. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »Copy« kopiert die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist, in das im Eingabeparameter festgelegte Verzeichnis. Der Wert 0 wird zurückgegeben, wenn die Datei kopiert wurde. Andere Werte zeigen einen Fehler an. Das Kopieren wird nicht unterstützt, wenn eine vorhandene Datei überschrieben werden muß. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »Rename« benennt die logische Datei (oder das Verzeichnis) um, die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei umbenannt wurde. Andere Werte zeigen einen Fehler an. Die Umbenennung wird nicht unterstützt, wenn das Ziel ein anderes Laufwerk ist oder eine vorhandene Datei überschrieben werden muß. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig.
570
Anhang B: WMI Klassenreferenz
result as Integer = Delete
result as Integer = Compress
result as Integer = Uncompress
result as Integer = TakeOwnerShipEx (Recursive as Boolean, StartFileName as String)
Die Methode »Delete« löscht die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei gelöscht wurde. Andere Werte zeigen einen Fehler an. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »Compress« komprimiert die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei komprimiert wurde. Andere Werte zeigen einen Fehler an. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »Uncompress« dekomprimiert die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei dekomprimiert wurde. Andere Werte zeigen einen Fehler an. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »TakeOwnerShipEx« übernimt den Besitz der logischen Datei, die im Objektpfad angegeben ist. Wenn die logische Datei ein Verzeichnis ist, übernimt die Methode den Besitz aller Dateien und Unterverzeichnisse, die im Verzeichnis enthaltenen sind. Der Wert 0 wird zurückgegeben, wenn der Vorgang erfolgreich beendet wurde. Andere Werte zeigen einen Fehler an. »TakeOwnerShipEx« ist eine erweiterte Version der Methode »TakeOwnerShip«. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig.
B.114 Win32_NTEventlogFile
571
Die Methode »ChangeSecurityPermissionsEx« ändert die Sicherheitsrechte für die im Objektpfad angegebene logische Datei. Wenn die logische Datei ein Verzeichnis ist, werden die Sicherheitsrechte aller im Verzeichnis enthaltener Dateien und Unterverzeichnisse geändert. Die Methode gibt den Wert 0 zurück, wenn die Rechte geändert wurden. Jeder andere Wert zeigt einen Fehler an. »ChangeSecurityPermissionsEx« ist eine erweiterte Version der Methode »ChangeSecurityPermissions«. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFSDateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »CopyEx« kopiert die logische Datei (oder das Verzeichnis), die result as Integer = CopyEx(FileName as String, Re- im Objektpfad angegeben ist, in das im Parameter »FileName« festgelegte Verzeichnis. Der Wert 0 wird zurückgegeben, wenn die Datei kopiert wurde. cursive as Boolean, StartFiAndere Werte zeigen einen Fehler an. Das Kopieren wird nicht unterstützt, leName as String) wenn eine vorhandene Datei überschrieben werden muß. »CopyEx« ist eine erweiterte Version der Methode »Copy«. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »DeleteEx« löscht die logische Datei (oder das Verzeichnis), die result as Integer = im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die DaDeleteEx(StartFileName as tei gelöscht wurde. Andere Werte zeigen einen Fehler an. »DeleteEx« ist eine String) erweiterte Version der Methode »Delete«. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. result as Integer = ChangeSecurityPermissionsEx(Option as Integer, Recursive as Boolean, SecurityDescriptor as CIM-Object, StartFileName as String)
572
Anhang B: WMI Klassenreferenz
result as Integer = CompressEx(Recursive as Boolean, StartFileName as String)
result as Integer = UncompressEx(Recursive as Boolean, StartFileName as String)
result as Boolean = GetEffectivePermission (Permissions as Integer) result as Integer = ClearEventlog (ArchiveFileName as String) result as Integer = BackupEventlog (ArchiveFileName as String) AccessMask
Archive Caption
Die Methode »CompressEx« komprimiert die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei komprimiert wurde. Andere Werte zeigen einen Fehler an. »CompressEx« ist eine erweiterte Version der Methode »Compress«. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »UncompressEx« dekomprimiert die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei dekomprimiert wurde. Andere Werte zeigen einen Fehler an. »UncompressEx« ist eine erweiterte Version der Methode »Uncompress«. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »GetEffectivePermission« bestimmt, ob der Aufrufer über die vom Argument »Permission« angegebenen zusammengesetzten Berechtigungen für das Dateiobjekt und ggf. die Freigabe verfügt, auf der sich die Datei oder das Verzeichnis befindet.
Die Eigenschaft »AccessMask« ist ein Bitarray, das die Zugriffsrechte für die Datei oder das Verzeichnis des Benutzers oder der Gruppe darstellt, für die die Instanz zurückgegeben wird. Diese Eigenschaft wird nur in Windows NT und Windows 2000 unterstützt. Auf Windows 98 und Windows NT/2000 FAT-Datenträgern wird FULL_ACCESS zurückgegeben, da keine Objektsicherheit festgelegt ist. Die Eigenschaft »Archive« ist ein boolescher Wert, der angibt, ob die Datei archiviert werden soll. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an.
Die Eigenschaft »Compressed« ist ein boolescher Wert, der angibt, daß die Datei komprimiert ist. Die Eigenschaft »CompressionMethod« ist eine formfreie Zeichenfolge, die den Algorithmus oder das Programm zum Komprimieren der logischen Datei angibt. Wenn es nicht möglich ist, das Komprimierungsschema zu beschreiben, wird Folgendes angegeben: »Unbekannt«, wenn nicht bekannt ist, ob die logische Datei komprimiert ist. »Komprimiert«, wenn die Datei komprimiert ist, aber das Komprimierungsschema unbekannt ist. »Nicht komprimiert«, wenn die logische Datei nicht komprimiert ist. Die Eigenschaft »CreationClassName« gibt den Klassennamen an. Die Eigenschaft »CreationDate« gibt das Erstellungsdatum der Datei an. Die Eigenschaft »CSCreationClassName« gibt die Klasse des Computersystems an. Die Eigenschaft »CSName« gibt den Namen des Computersystems an. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »Drive« gibt den Laufwerkbuchstaben (einschließlich Doppelpunkt) der Datei an. Beispiel: c: Die Eigenschaft »EightDotThreeFileName« gibt den DOS-kompatiblen Namen der Datei an. Beispiel: c:\progra~1 Die Eigenschaft »Encrypted« ist ein boolescher Wert, der angibt, daß die Datei verschlüsselt ist. Die Eigenschaft »EncryptionMethod« ist eine formfreie Zeichenfolge, die den Algorithmus oder das Programm zum Verschlüsseln der logischen Datei angibt. Wenn es z.B. aus Sicherheitsgründen nicht möglich ist, das Verschlüsselungsschema zu beschreiben, wird Folgendes angegeben: »Unbekannt«, wenn nicht bekannt ist, ob die logische Datei verschlüsselt ist. »Verschlüsselt«, wenn die Datei verschlüsselt ist, aber das Verschlüsselungsschema unbekannt ist. »Nicht verschlüsselt«, wenn die logische Datei nicht verschlüsselt ist. Die Eigenschaft »Extension« gibt die Erweiterung der Datei ohne Punkt an. Beispiel: txt, mof, mdb. Die Eigenschaft »FileName« gibt den Namen der Datei ohne Erweiterung an. Beispiel: autoexec Die Eigenschaft »FileSize« gibt die Datengröße in Byte an. Die Eigenschaft »FileType« stellt den in der Eigenschaft »Extension« angegebenen Dateityp dar. Die Eigenschaft »FSCreationClassName« gibt die Klasse des Dateisystems an. Die Eigenschaft »FSName« gibt den Namen des Dateisystems an. Die Eigenschaft »Hidden« ist ein boolescher Wert, der angibt, ob die Datei versteckt ist. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein.
574
Anhang B: WMI Klassenreferenz
InUseCount LastAccessed LastModified LogfileName Manufacturer MaxFileSize Name
NumberOfRecords
OverwriteOutDated
OverWritePolicy
Path Readable Sources Status
System Version Writeable
Die Eigenschaft »InUseCount« gibt die Anzahl der geöffneten Instanzen einer Datei an. Die Eigenschaft »LastAccessed« gibt an, wann zuletzt auf die Datei zugegriffen wurde. Die Eigenschaft »LastModified« gibt an, wann die Datei zuletzt geändert wurde. Die Eigenschaft »LastModified« gibt an, wann die Datei zuletzt geändert wurde. Herstellerzeichenfolge aus der Versionsressource, falls vorhanden. Herstellerzeichenfolge aus der Versionsressource, falls vorhanden. Die Eigenschaft »Name« gibt den vererbten Namen an, der als Schlüssel einer logischen Datei innerhalb eines Dateisystems dient. Es müssen vollständige Pfadnamen angegeben werden. Beispiel: c:\winnt\system\win.ini Die Eigenschaft »Name« gibt den vererbten Namen an, der als Schlüssel einer logischen Datei innerhalb eines Dateisystems dient. Es müssen vollständige Pfadnamen angegeben werden. Beispiel: c:\winnt\system\win.ini Die Eigenschaft »Name« gibt den vererbten Namen an, der als Schlüssel einer logischen Datei innerhalb eines Dateisystems dient. Es müssen vollständige Pfadnamen angegeben werden. Beispiel: c:\winnt\system\win.ini Die Eigenschaft »Name« gibt den vererbten Namen an, der als Schlüssel einer logischen Datei innerhalb eines Dateisystems dient. Es müssen vollständige Pfadnamen angegeben werden. Beispiel: c:\winnt\system\win.ini Die Eigenschaft »Path« gibt den Pfad der Datei an, einschließlich umgekehrter Schrägstriche am Anfang und am Ende. Beispiel: \windows\system\ Die Eigenschaft »Readable« ist ein boolescher Wert, der angibt, ob die Datei gelesen werden kann. Die Eigenschaft »Readable« ist ein boolescher Wert, der angibt, ob die Datei gelesen werden kann. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMARTaktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Eigenschaft »System« ist ein boolescher Wert, der angibt, ob die Datei eine Systemdatei ist. Versionszeichenfolge aus der Versionsressource, falls vorhanden. Die Eigenschaft »Writeable« ist ein boolescher Wert, der angibt, ob die Datei geschrieben werden kann.
B.115 Win32_NetworkAdapter
575
B.115 Win32_NetworkAdapter result as Integer = SetPowerState »SetPowerState« definiert den gewünschten Energiestatus und den Zeit(PowerState as Integer, Time as punkt, zu dem das Gerät in diesen Status versetzt wird, indem für den PaDate/Time) rameter »PowerState« folgende Werte festgelegt werden: 1=»Kein Energiesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. result as Integer = Reset Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. AdapterType Die Eigenschaft »AdapterType« gibt das verwendete Netzwerkmedium an. Diese Eigenschaft ist möglicherweise nicht für alle in dieser Klasse aufgeführten Netzwerkadapter verfügbar. Nur Windows NT. AutoSense Boolescher Wert, der angibt, ob der Netzwerkadapter die Geschwindigkeit des Mediums automatisch bestimmen kann. Availability Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Caption Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. ConfigManagerErrorCode Gibt den Fehlercode des Win32-Konfigurations-Managers an. ConfigManagerUserConfig Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. CreationClassName Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Description Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. DeviceID Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die den Netzwerkadapter von anderen Geräten im System unterscheidet. ErrorCleared Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. ErrorDescription Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge.
576
Anhang B: WMI Klassenreferenz
Index InstallDate
Installed
LastErrorCode MACAddress
Manufacturer MaxNumberControlled
MaxSpeed Name
NetworkAddresses PermanentAddress
PNPDeviceID PowerManagementCapabilities
Die Eigenschaft »Index« gibt die Indexnummer des Netzwerkadapters an, die in der Systemregistrierung gespeichert ist. Beispiel: 0. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »Installed« gibt an, ob der Netzwerkadapter installiert ist. Werte: TRUE oder FALSE. TRUE gibt an, daß der Netzwerkadapter installiert ist. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »MACAddress« gibt die MAC-Adresse des Netzwerkadapters an. Eine MAC-Adresse ist eine eindeutige 48-Bit-Nummer, die dem Netzwerkadapter vom Hersteller zugewiesen und für die TCP/IPKommunikation verwendet wird. Die Eigenschaft »Manufacturer« gibt den Hersteller des Netzwerkadapters an. Beispiel: 3COM. Die Eigenschaft »MaxNumberControlled« gibt die maximale Anzahl der direkt adressierbaren Anschlüsse an, die von diesem Netzwerkadapter unterstützt werden. Geben Sie 0 ein, wenn der Wert unbekannt ist. Die maximale Geschwindigkeit des Netzwerkadapters in Bits pro Sekunde. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Ein Array mit Zeichenfolgen, das die Netzwerkadressen für einen Adapter angibt. »PermanentAddress« definiert die in einem Adapter hartcodierte Netzwerkadresse. Diese Adresse kann über ein Firmware-Update oder die Softwarekonfiguration geändert werden. Das Feld sollte aktualisiert werden, nachdem die Änderung vorgenommen wurde. »PermanentAddress« sollte leer sein, wenn keine hartcodierte Adresse für den Netzwerkadapter vorhanden ist. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann.
Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Die Eigenschaft »ProductName« gibt den Produktnamen des Netzwerkadapters an. Beispiel: Fast EtherLink XL Die Eigenschaft »ServiceName« gibt den Dienstnamen des Netzwerkadapters an. Dieser Name ist gewöhnlich kürzer als der vollständige Produktname. Beispiel: Elnkii. Eine Schätzung der aktuellen Bandbreite in Bits pro Sekunde. Für Endpunkte mit unterschiedlicher Bandbreite oder für Endpunkte ohne genaue Schätzung, sollte diese Eigenschaft die nominale Bandbreite enthalten. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Eigenschaft »TimeOfLastReset« gibt an, wann der Netzwerkadapter zuletzt zurückgesetzt wurde.
B.116 Win32_NetworkAdapterConfiguration result as Integer = EnableDHCP
Die Methode »EnableDHCP« aktiviert DHCP (Dynamic Host Configuration Protocol) für den Dienst mit diesem Netzwerkadapter. DHCP ermöglicht die dynamische Zuordnung von IP-Adressen. Die Methode gibt den Wert 0 zurück, wenn der Vorgang einwandfrei abgeschlossen wurde. Jede andere Zahl zeigt einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: WMI
578
Anhang B: WMI Klassenreferenz
result as Integer = RenewDHCPLease
Die Methode »RenewDHCPLease« erneuert die IP-Adresse auf bestimmten DHCP-Netzwerkadaptern. Die Lease für die über einen DHCP-Server zugeordnete IP-Adresse hat ein Ablaufdatum, das der Client erneuern muß, wenn die zugeordnete IP-Adresse weiter verwendet werden soll. Die Methode gibt den Wert 0 zurück, wenn der Vorgang einwandfrei abgeschlossen wurde. Jede andere Zahl zeigt einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: WMI result as Integer = RenewDHCPLeaseAll Die Methode »RenewDHCPLeaseAll« erneuert die IP-Adressen auf allen DHCP-Netzwerkadaptern. Die Lease für die über einen DHCP-Server zugeordnete IP-Adresse hat ein Ablaufdatum, das der Client erneuern muß, wenn die zugeordnete IP-Adresse weiter verwendet werden soll. Die Methode gibt den Wert 0 zurück, wenn der Vorgang einwandfrei abgeschlossen wurde. Jede andere Zahl zeigt einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: WMI result as Integer = ReleaseDHCPLease Die Methode »ReleaseDHCPLease« gibt die an einen bestimmten DHCP-Netzwerkadapter gebundene IP-Adresse frei. Warnung: Wenn DHCP auf dem lokalen System aktiviert ist, wird TCP/IP für diesen Netzwerkadapter deaktiviert. Alle TCP/IPVerbindungen gehen verloren, wenn kein alternativer Pfad zum Zielsystem angegeben wird. Befehl wird von folgender API-Funktion bereitgestellt: WMI result as Integer = ReleaseDHCPLeaseAll Die Methode »ReleaseDHCPLeaseAll« gibt die an alle DHCPNetzwerkadapter gebundenen IP-Adressen frei. Warnung: Wenn DHCP auf dem lokalen Computer aktiviert ist, werden alle DHCP TCP/IP-Verbindungen abgebrochen. Befehl wird von folgender API-Funktion bereitgestellt: WMI Die Methode »EnableStatic« aktiviert die statische TCP/IPresult as Integer = EnableStatic Adressierung für den Zieladapter. Deshalb ist DHCP für diesen (IPAddress as String, SubnetMask as Netzwerkadapter deaktiviert. Die Methode gibt den Wert 0 zuString) IPAddress=Der Parameter »IPAddress« rück, wenn der Vorgang einwandfrei abgeschlossen wurde. Jede listet alle statischen IP-Adressen für den andere Zahl zeigt einen Fehler an. aktuellen Netzwerkadapter auf. Beispiel: Befehl wird von folgender API-Funktion bereitgestellt: WMI 155.34.22.0 SubnetMask=Der Parameter »SubnetMask« enthält die Subnetzmasken, die die Werte im Parameter »IPAddress« ergänzen. Beispiel: 255.255.0.0
B.116 Win32_NetworkAdapterConfiguration result as Integer = SetGateways (DefaultIPGateway as String, GatewayCostMetric as Integer) DefaultIPGateway= »DefaultIPGateway« ist ein Eingabeparameter der Methode »SetGateways«. Er enthält eine Liste der IP-Adressen der Gateways, an die Netzwerkpakete umgeleitet werden. GatewayCostMetric=Der Parameter »GatewayCostMetric« weist einen Wert im Bereich von 1 bis 9999 zu, der verwendet wird. um die schnellsten und zuverlässigsten Routen zu berechnen. Die Werte dieses Parameters entsprechen den Werten im Parameter »DefaultIPGateway« Der Standardwert für ein Gateway ist 1. Nur Windows 2000. Optional=Wahr result as Integer = EnableDNS (DNSDomain as String, DNSDomainSuffixSearchOrder as String, DNSHostName as String, DNSServerSearchOrder as String) DNSDomain=Der Parameter »DNSDomain« gibt die DNS-Domäne an. Dem Organisationsnamen folgt ein Punkt und eine Erweiterung, die den Organisationstyp angibt. Beispiel: microsoft.com Optional=Wahr DNSDomainSuffixSearchOrder=Der Parameter »DNSDomainSuffixSearchOrder« gibt die DNS-Domänensuffixe an, die während der Namensauflösung an Hostnamen angehängt werden. Wenn ein vollqualifizierter Domänenname (FQDN) von einem Hostnamen aufgelöst wird, wird der lokale Domänenname angehängt. Wenn der Domänenname nicht angehängt werden kann, werden anhand der Domänensuffixliste zusätzliche FQDNs erstellt. Optional=Wahr DNSHostName=Der Parameter »DNSHostName« gibt den Namen des
579
Die Methode »SetGateways« gibt eine Liste der Gateways an, die verwendet werden, um Pakete an ein anderes als das mit dem Adapter verbundenen Subnetz, umzuleiten. Die Methode gibt den Wert 0 zurück, wenn der Vorgang einwandfrei abgeschlossen wurde. Jede andere Zahl zeigt einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: WMI
Die Methode »EnableDNS« aktiviert die DNS (Domain Name System) für den Dienst auf dem TCP/IP-Netzwerkadapter. Die Methode gibt den Wert 0 zurück, wenn der Vorgang einwandfrei abgeschlossen wurde. Jede andere Zahl zeigt einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services\Tcpip\ Parameters
580
Anhang B: WMI Klassenreferenz
DNS-Hosts an, der von dieser Methode aktiviert wird. Beispiel: corpdns Optional=Wahr DNSServerSearchOrder=Der Parameter »DNSServerSearchOrder« gibt die Liste der Server-IP-Adressen an, die für DNSServerabfragen verwendet werden. Optional=Wahr result as Integer = SetDNSDomain (DNSDomain as String) DNSDomain=Der Parameter »DNSDomain« gibt die DNS-Domäne an. Dem Organisationsnamen folgt ein Punkt und eine Erweiterung, die den Organisationstyp angibt. Beispiel: microsoft.com
Die Methode »SetDNSDomain« ermöglicht das Festlegen der DNS-Domäne. Die Methode gibt den Wert 0 zurück, wenn der Vorgang einwandfrei abgeschlossen wurde. Jede andere Zahl zeigt einen Fehler an. Diese Methode ist abhängig von der Instanz und wird auf einzelne Adapter angewendet. In Windows 2000 wird die Einstellung für den Zieladapter übernommen. In NT4 ist diese Einstellung global. Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services\Tcpip\ Parameters Die Methode »SetDNSServerSearchOrder« ermöglicht das Festleresult as Integer = SetDNSServerSegen der Serversuchreihenfolge als Elementearray. Die Methode archOrder gibt den Wert 0 zurück, wenn der Vorgang einwandfrei abge(DNSServerSearchOrder as String) DNSServerSearchOrder=Der Parameter schlossen wurde. Jede andere Zahl zeigt einen Fehler an. Diese Methode ist abhängig von der Instanz und wird auf einzelne Ad»DNSServerSearchOrder« gibt die Liste der Server-IP-Adressen an, die für DNS- apter angewendet. In Windows 2000 wird die Einstellung für den Zieladapter übernommen. In NT4 ist diese Einstellung global. Serverabfragen verwendet werden. BeiBefehl wird von folgender API-Funktion bereitgestellt: spiel: 130.215.24.1 157.54.164.1 Win32Registry|SYSTEM\CurrentControlSet\Services\Tcpip\ Parameters Die Methode »SetDNSSuffixSearchOrder« ermöglicht das Festleresult as Integer = gen der Suffixsuchreihenfolge als Elementearray. Die Methode SetDNSSuffixSearchOrder gibt den Wert 0 zurück, wenn der Vorgang einwandfrei abge(DNSDomainSuffixSearchOrder as schlossen wurde. Jede andere Zahl zeigt einen Fehler an. Diese String) DNSDomainSuffixSearchOrder=Der Pa- Methode ist unabhängig von der Instanz und wird auf alle Adapter angewendet. Nur Windows NT. rameter »DNSServerSearchOrder« gibt die Liste der Server-IP-Adressensuffixe an, Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services\Tcpip\ die für DNS-Serverabfragen verwendet Parameters werden. Beispiel: 130.215.24.1 157.54.164.1
B.116 Win32_NetworkAdapterConfiguration result as Integer = SetDynamicDNSRegistration (DomainDNSRegistrationEnabled as Boolean, FullDNSRegistrationEnabled as Boolean) DomainDNSRegistrationEnabled=Der Parameter »DomainDNSRegistrationEnabled« gibt an, ob die IP-Adressen für diese Verbindung in DNS unter dem Domänennamen registriert werden (zusätzlich zur Registrierung unter dem vollständigen DNS-Namen des Computers). Der Domänenname dieser Verbindung wird mit der Methode »SetDNSDomain()« festgelegt oder von DHCP zugeordnet. Der registrierte Name ist der Hostname des Computers mit dem angehängten Domänennamen. Dieser Parameter hat nur Bedeutung, wenn »FullDNSRegistrationEnabled« aktiviert ist. Standard: FALSE. Nur Windows 2000. Optional=Wahr FullDNSRegistrationEnabled=Der Parameter »FullDNSRegistrationEnabled« gibt an, ob die IP-Adressen für diese Verbindung unter dem vollständigen DNSNamen des Computers registriert sind. Der vollständige DNS-Name des Computers wird in der Registerkarte Netzwerkidentifikation in der Systemsteuerung angezeigt. Nur Windows 2000. result as Integer = SetIPConnectionMetric (IPConnectionMetric as Integer) IPConnectionMetric=Der Parameter »IPConnectionMetric« weist einen Wert zwischen 1 und 9999 zu. Der Parameter gibt die Kosten für die Verwendung der konfigurierten Routen für den IP-Adapter an und ist der gewichtete Wert für die Routen in der IP-Routingtabelle. Wenn mehrere Routen zu einem Ziel in der IPRoutingtabelle vorhanden sind, wird die Route mit der niedrigsten Metrik verwendet. Der Standardwert ist 1. Nur Windows 2000.
581
Die Methode »SetDynamicDNSRegistration« gibt die dynamische DNS-Registrierung der IP-Adressen für den IP-Adapter an. Die Methode gibt den Wert 0 zurück, wenn der Vorgang einwandfrei abgeschlossen wurde. Jede andere Zahl zeigt einen Fehler an. Nur Windows 2000. Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services\Tcpip\ Parameters
Die Methode »SetIPConnectionMetric« wird verwendet, um die Routingmetrik für den IP-Adapter festzulegen. Der Wert 0 wird zurückgegeben, wenn die Metrik festgelegt wurde. Andere Werte zeigen einen Fehler an. Nur Windows 2000. Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services\Tcpip\ Parameters
582
Anhang B: WMI Klassenreferenz
result as Integer = SetWINSServer (WINSPrimaryServer as String, WINSSecondaryServer as String) WINSPrimaryServer=Der Parameter »WINSPrimaryServer« gibt die IP-Adresse des primären WINS-Servers an. WINSSecondaryServer=Der Parameter »WINSSecondaryServer« gibt die IPAdresse des sekundären WINS-Servers an. result as Integer = EnableWINS (DNSEnabledForWINSResolution as Boolean, WINSEnableLMHostsLookup as Boolean, WINSHostLookupFile as String, WINSScopeID as String) DNSEnabledForWINSResolution=Der Parameter »DNSEnabledForWINSResolution« gibt an, ob DNS (Domain Name System) für die Namensauflösung über WINS-Auflösung aktiviert ist. WINSEnableLMHostsLookup=Der Parameter »WINSEnableLMHostsLookup« gibt an, ob lokale Abfragedateien verwendet werden. Abfragedateien enthalten die Zuordnungen von IP-Adressen zu Hostnamen. WINSHostLookupFile=Der Parameter »WINSEnableLMHostsLookup« gibt die Abfragedateien mit den Zuordnungen von IP-Adressen zu Hostnamen an. Falls verfügbar, befinden sich die Dateien in %SystemRoot%\system32\drivers\usw. optional=Wahr WINSScopeID=Der Parameter »WINSScopeID« gibt die Bereichskennung an, die an den NetBIOS-Namen des Computers angehängt wird. Systeme mit der gleichen Bereichskennung können mit diesem Computer kommunizieren. optional=Wahr
Die Methode »SetWINSServer« legt den primären und sekundären WINS-Server auf dem TCP/IP-Netzwerkadapter fest. Diese Methode wird unabhängig vom Netzwerkadapter angewendet. Die Methode gibt den Wert 0 zurück, wenn der Vorgang einwandfrei abgeschlossen wurde. Jede andere Zahl zeigt einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Device Input and Output Functions|DeviceIoControl Die Methode »EnableWINS« TCP/IP-spezifische WINSEinstellungen unabhängig vom Netzwerkadapter. Die Methode gibt den Wert 0 zurück, wenn der Vorgang einwandfrei abgeschlossen wurde. Jede andere Zahl zeigt einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services
B.116 Win32_NetworkAdapterConfiguration result as Integer = SetTcpipNetbios (TcpipNetbiosOptions as Integer) TcpipNetbiosOptions=Der Parameter »TcpipNetbiosOptions« gibt eine Bitmap für die möglichen NetBIOS-Einstellungen über TCP/IP an. BitValues = Array: 0=EnableNetbiosViaDhcp 1=EnableNetbios 2=DisableNetbios result as Integer = EnableIPSec (IPSecPermitIPProtocols as String, IPSecPermitTCPPorts as String, IPSecPermitUDPPorts as String) IPSecPermitIPProtocols=Der Parameter »IPSecPermitIPProtocols« gibt die Protokolle an, die über IP ausgeführt werden können. Der Wert Null gibt an, daß alle Protokolle über Zugriffsrechte verfügen. Eine leere Zeichenfolge gibt an, daß kein Protokoll über Zugriffsrechte verfügt. IPSecPermitTCPPorts=Der Parameter »IPSecPermitTCPPorts« zeigt die Liste der Anschlüsse an, die Zugriffsrechte für TCP erhalten sollten. Der Wert Null gibt an, daß alle Anschlüsse über Zugriffsrechte verfügen. Eine leere Zeichenfolge gibt an, daß kein Anschluß Zugriffsrechte erhalten sollte. IPSecPermitUDPPorts=Der Parameter »IPSecPermitUDPPorts« zeigt die Liste der Anschlüsse an, die Zugriffsrechte für UDP erhalten sollten. Der Wert Null gibt an, daß alle Anschlüsse über Zugriffsrechte verfügen. Eine leere Zeichenfolge gibt an, daß kein Anschluß Zugriffsrechte erhalten sollte. result as Integer = DisableIPSec
583
Die Methode »SetTcpipNetbios« legt den Standardvorgang von NetBIOS über TCP/IP fest. Nur Windows 2000. Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services
Die Methode »EnableIPSec« wird verwendet, um die IPSicherheit auf dem TCP/IP-Netzwerkadapter zu aktivieren. Die Methode gibt den Wert 0 zurück, wenn der Vorgang einwandfrei abgeschlossen wurde. Jede andere Zahl zeigt einen Fehler an. Anschlüsse sind nur sicher, wenn die Eigenschaft »IPFilterSecurityEnabled« TRUE ist. Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services|Tcpip\Para meters\Interfaces
Die Methode »DisableIPSec« deaktiviert die IP-Sicherheit auf dem TCP/IP-aktivierten Netzwerkadapter. Die Methode gibt den Wert 0 zurück, wenn der Vorgang einwandfrei abgeschlossen wurde. Jede andere Zahl zeigt einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services|Tcpip\ Parameters\Interfaces
584
Anhang B: WMI Klassenreferenz
Die Methode »SetIPXVirtualNetworkNumber« legt die virtuelle IPX-Netzwerknummer (Internetworking Packet Exchange) auf dem Zielcomputer fest. Windows 2000 und Windows NT 3.51 oder höher verwenden eine interne Netzwerknummer für internes Routing. Die interne Netzwerknummer (oder die virtuelle Netzwerknummer) kennzeichnet den Computer im Netzwerk. Die Methode gibt den Wert 0 zurück, wenn sie erfolgreich ausgeführt wurde, oder einen anderen Wert, um einen Fehler anzuzeigen. Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services\nwlnkipx\ Parameters Die Methode »SetIPXFrameTypeNetworkPairs« legt IPXresult as Integer = SetIPXFrameTypeNetworkPairs(IPXFrameType as Integer, Netzwerknummern/Rahmenpaare für den Netzwerkadapter fest. Windows 2000 und Windows NT 3.51, und höher, verwenden eiIPXNetworkNumber as String) IPXFrameType=Der Parameter »IPXFra- ne IPX-Netzwerknummer (externe Netzwerknummer) für Routingzwecke, die jeder konfigurierten Kombination aus Rahmentyp meType« gibt ein Array mit Frametypkennungen an. Die Werte entsprechen und Netzwerkadapter zugewiesen wird. Diese Nummer muß für jedes Netzwerksegment eindeutig sein. Wenn der Rahmentyp auf den Elementen im Parameter »IPXNetAUTOMATISCH gesetzt ist, muß die Netzwerknummer 0 sein. workNumber«. Die Methode gibt den Wert 0 zurück, wenn sie erfolgreich ausValues = Array: geführt wurde. Jede andere Zahl zeigt einen Fehler an. 0=Ethernet II Befehl wird von folgender API-Funktion bereitgestellt: 1=Ethernet 802.3 Win32Registry|SYSTEM\CurrentControlSet\Services\nwlnkipx\ 2=Ethernet 802.2 Parameters\Adapters 3=Ethernet SNAP 4=AUTO IPXNetworkNumber=Der Parameter »IPXNetworkNumber« gibt die Zeichen an, die einen Adapter im Computersystem eindeutig kennzeichnen. Die NetWare Link (NWLink) IPX/SPX-kompatible Übertragung in Windows 2000 und Windows NT 3.51, oder höher, verwendet zwei unterschiedliche Netzwerknummerntypen. Diese externe Netzwerknummer muß für jedes Netzwerksegment eindeutig sein. Für die Werte in dieser Liste ist ein entsprechender Wert im Parameter »IPXFrameType« erforderlich, um den Paketrahmentyp des Netzwerks zu identifizieren. result as Integer = SetIPXVirtualNetworkNumber (IPXVirtualNetNumber as String) IPXVirtualNetNumber=Der Parameter »IPXVirtualNetNumber« gibt die virtuelle Netzwerknummer für das System an.
B.116 Win32_NetworkAdapterConfiguration
585
Die Methode »SetDatabasePath«, die den Pfad zu den StandardInternetdatenbankdateien (HOSTS, LMHOSTS, NETWORKS, PROTOCOLS) angibt, wird von der Windows SocketsSchnittstelle verwendet. Die Methode gibt den Wert 0 zurück, wenn der Vorgang einwandfrei abgeschlossen wurde. Jede andere Zahl zeigt einen Fehler an. Standard: %SystemRoot%\system32\drivers\usw. Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services\Tcpip\ Parameters Die Methode »SetIPUseZeroBroadcast« legt die Verwendung von IP-Zeros-Broadcasts fest. Wenn dieser Parameter TRUE ist, verwendet IP Zeros-Broadcasts (0.0.0.0) anstatt Ones-Broadcasts (255.255.255.255). Die meisten Systeme verwenden OnesBroadcasts, aber die von BSD-Implementation abgeleiteten verwenden Zeros-Broadcasts. Systeme, die andere Broadcasts verwenden, können nicht im gleichen Netzwerk ausgeführt werden. Standard: FALSE. Die Methode gibt den Wert 0 zurück, wenn sie erfolgreich ausgeführt wurde. Jeder andere Wert zeigt einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services\Tcpip\ Parameters Die Methode »SetArpAlwaysSourceRoute« wird verwendet, um result as Integer = die Übertragung von ARP-Anforderungen von TCP/IP festzuleSetArpAlwaysSourceRoute gen. Die Methode gibt den Wert 0 zurück, wenn der Vorgang (ArpAlwaysSourceRoute as Boolean) ArpAlwaysSourceRoute=Der Parameter einwandfrei abgeschlossen wurde. Jede andere Zahl zeigt einen Fehler an. »ArpAlwaysSourceRoute« gibt an, ob TCP/IP ARP-Abfragen überträgt. Wenn Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services\Tcpip\ dieser Parameter auf TRUE gesetzt ist, überträgt TCP/IP ARP-Abfragen mit akti- Parameters viertem Quellrouting in Token RingNetzwerken. Standardmäßig sendet der Stapel ARP-Abfragen ohne Quellrouting zuerst und wiederholt den Vorgang mit aktiviertem Quellrouting, wenn keine Antwort empfangen wird. result as Integer = SetArpUseEtherSNAP Die Methode »SetArpUseEtherSNAP« aktiviert die 802.3 SNAPVerschlüsselung für Ethernetpakete. Standardmäßig überträgt der (ArpUseEtherSNAP as Boolean) ArpUseEtherSNAP=Der Parameter »Ar- Stack Pakete im DIX-Ethernetformat (Digital, Intel, Xerox). Es werden immer beide Formate empfangen. Die Methode gibt den pUseEtherSNAP« aktiviert (TRUE) Wert 0 zurück, wenn der Vorgang einwandfrei abgeschlossen TCP/IP, um Ethernetpakete mit 802.3 wurde. Jede andere Zahl zeigt einen Fehler an. SNAP-Verschlüsselung zu übertragen. Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services\Tcpip\ Parameters result as Integer = SetDatabasePath (DatabasePath as String) DatabasePath=Der Parameter »DatabasePath«, der einen gültigen Pfad zu den Standard-Internetdatenbankdateien (HOSTS, LMHOSTS, NETWORKS, PROTOCOLS) für Windows 2000 und Windows NT 3.51 oder höher angibt, wird von der Windows SocketsSchnittstelle verwendet result as Integer = SetIPUseZeroBroadcast (IPUseZeroBroadcast as Boolean) IPUseZeroBroadcast=Der Parameter »IPUseZeroBroadcast« gibt an, ob IPZero-Broadcast verwendet wird. True gibt an, daß IP-Zero-Broadcast verwendet wird.
586
Anhang B: WMI Klassenreferenz
result as Integer = SetDefaultTOS (DefaultTOS as Integer) DefaultTOS=Der Parameter »DefaultTOS« gibt den TOS-Wert (Type Of Service) im Header ausgehender IP-Pakete an. Die Werte werden in RFC 791 definiert. result as Integer = SetDefaultTTL (DefaultTTL as Integer) DefaultTTL=Der Parameter »DefaultTTL« gibt den TTL-Wert im Header von ausgehenden IP-Paketen an.
result as Integer = SetDeadGWDetect (DeadGWDetectEnabled as Boolean) DeadGWDetectEnabled=Der Parameter »DeadGWDetectEnabled« gibt einen Wert an, um die Identifizierung von deaktivierten Gateways zu aktivieren. TRUE gibt an, daß die Methode die Identifizierung von deaktivierten Gateways aktiviert.
result as Integer = SetPMTUBHDetect (PMTUBHDetectEnabled as Boolean) PMTUBHDetectEnabled=Der Parameter »PMTUBHDetectEnabled« gibt an, ob die Erkennung von Black Hole-Routern aktiviert ist. TRUE gibt an, daß TCP Black Hole-Router erkennt und Pakete in andere Netzwerkpfade umleitet.
Die Methode »SetDefaultTOS« wird verwendet, um den Standard-TOS-Wert im Header von ausgehenden IP-Paketen festzulegen. Die Methode gibt den Wert 0 zurück, wenn der Vorgang einwandfrei abgeschlossen wurde. Jede andere Zahl zeigt einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services\Tcpip\ Parameters Die Methode »SetDefaultTTL« wird verwendet, um den Standard-TTL-Wert im Header von ausgehenden IP-Paketen festzulegen. Der TTL-Wert gibt die Anzahl der Router für ein IP-Paket an. Jeder Router verringert den TTL-Wert eines Pakets um Eins und verwirft das Paket mit dem TTL-Wert 0. Standard: 32. Gültiger Bereich: 1 – 255 Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services\Tcpip\ Parameters Die Methode »SetDeadGWDetect« aktiviert die Identifizierung von deaktivierten Gateways. Wenn der Wert dieses Parameters TRUE ist, werden deaktivierte Gateways von TCP identifiziert. TCP ändert IP zu einem Reservegateway, wenn ein Segment mehrmals übertragen wird, ohne eine Rückmeldung zu erhalten. Die Methode gibt den Wert 0 zurück, wenn sie erfolgreich ausgeführt wurde. Jeder andere Wert zeigt einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services\Tcpip\ Parameters Die Methode »SetPMTUBHDetect« aktiviert die Erkennung von Black Hole-Routern. Wenn der Wert dieses Parameters TRUE ist, versucht TCP Black Hole-Router während dem Identifizieren des MTU-Pfades zu erkennen. Ein Black Hole-Router gibt keine ICMP-Meldungen bei nicht erreichbaren Zielen zurück, wenn ein IP-Datagramm fragmentiert werden muß und das Bit »Keine Fragmentierung« gesetzt ist. TCP ist vom Empfang dieser Meldungen abhängig, um einen MTU-Pfad zu identifizieren. Wenn diese Funktion aktiviert ist, sendet TCP Segmente ohne das Bit »Keine Fragmentierung«, wenn mehrere Segmentübertragungen nicht bestätigt werden. Wenn das Segment bestätigt wird, wird die maximale Segmentgröße erhöht und das Bit »Keine Fragmentierung« wird für künftige Pakete gesetzt. Wenn die Black HoleErkennung aktiviert ist, wird die maximale Anzahl der erneuten Segmentübertragungen erhöht. Die Methode gibt den Wert 0 zurück, wenn sie erfolgreich ausgeführt wurde. Jeder andere Wert zeigt einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\ Services\Tcpip\Parameters
B.116 Win32_NetworkAdapterConfiguration
587
Die Methode »SetPMTUDiscovery« aktiviert die Identifizierung der MTU (Maximum Transmission Unit). Wenn der Wert dieses Parameters True ist, versucht TCP die MTU (die größte Paketgröße) über den Pfad zum Remotehost zu identifizieren. Durch Identifizieren des MTU-Pfads und Beschränken der TCPSegmente auf diese Größe, kann die Fragmentierung von Routern vermieden werden, die Netzwerke mit unterschiedlicher MTU verbinden. Die Fragmentierung wirkt sich ungünstig auf den TCP-Durchsatz und die Netzwerkauslastung aus. Wenn der Wert dieses Parameter False ist, wird eine MTU von 576 Bytes für alle Verbindungen außerhalb des Subnetzes verwendet. Standard: TRUE. Die Methode gibt den Wert 0 zurück, wenn sie erfolgreich ausgeführt wurde. Jeder andere Wert zeigt einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services\Tcpip\ Parameters Die Methode »SetForwardBufferMemory« gibt die Größe des result as Integer = Speichers an, der von IP zum Speichern von Paketdaten in der SetForwardBufferMemory Routerpaketwarteschlange zugeordnet wird. Wenn dieser Puffer (ForwardBufferMemory as Integer) ForwardBufferMemory=Der Parameter voll ist, beginnt der Router Pakete in der Warteschlange zu ver»ForwardBufferMemory« gibt die Größer werfen. Der Wert dieses Parameters muß ein Vielfaches von 256 sein, da Datenpuffer von Paketwarteschlangen 256 Bytes groß der Routerpaketwarteschlange an, die zum Speichern von Paketdaten verwendet sind. Für größere Pakete sind mehrere Puffer miteinander verkettet. Der IP-Header für ein Paket wird separat gespeichert. wird. Dieser Parameter wird ignoriert, und die Puffer werden nicht zuUnits=Bytes geordnet, wenn der IP-Router nicht aktiviert ist. Die Puffergröße kann der Netzwerk-MTU entsprechen oder kleiner als 0xFFFFFFFF sein. Standard: 74240 (fünfzig 1480 Byte Pakete, gerundet zu einem Vielfachen von 256). Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services\Tcpip\ Parameters Die Methode »SetIGMPLevel« legt fest, in wie weit das System IPresult as Integer = SetIGMPLevel Multicast unterstützt und das IGM-Protokoll verwendet (Internet (IGMPLevel as Integer) IGMPLevel=Der Parameter »IGMPLevel« Group Management) verwendet. Die Methode gibt den Wert 0 zurück, wenn der Vorgang einwandfrei abgeschlossen wurde. Jede legt fest, in wie weit das System IPandere Zahl zeigt einen Fehler an. Multicast unterstützt und das IGMBefehl wird von folgender API-Funktion bereitgestellt: Protokoll verwendet (Internet Group Win32Registry|SYSTEM\CurrentControlSet\Services\Tcpip\ Management) verwendet. Auf Ebene 0 Parameters wird Multicast nicht unterstützt. Auf Ebene 1 werden nur IP-Multicastpakete gesendet. Auf Ebene 2 werden IPMulticastpakete gesendet und das ICGProtokoll wird zum Empfangen von Multicastpaketen verwendet. result as Integer = SetPMTUDiscovery (PMTUDiscoveryEnabled as Boolean) PMTUDiscoveryEnabled=Der Parameter »PMTUDiscoveryEnabled« aktiviert TCP, um die MTU (die größte Paketgröße) über den Pfad zum Remotehost zu identifizieren. True, gibt an, daß TCP versucht, die MTU zu identifizieren.
588
Anhang B: WMI Klassenreferenz
Values = Array: 0=Kein Multicast 1=IP-Multicast 2=IP/IGMP-Multicast result as Integer = SetKeepAliveInterval (KeepAliveInterval as Integer) KeepAliveInterval=Der Parameter »KeepAliveInterval« gibt den Wert für das Zeitintervall zwischen Keep AliveÜbertragungen an, bis eine Rückmeldung empfangen wird. Units=Milliseconds
result as Integer = SetKeepAliveTime (KeepAliveTime as Integer) KeepAliveTime=Der Parameter »KeepAliveTime« gibt das Zeitintervall an, nachdem TCP überprüft, ob eine Verbindung im Leerlauf noch verfügbar ist. Units=Milliseconds
result as Integer = SetMTU (MTU as Integer) MTU=Der Eingabeparameter »MTU« gibt die Standard-MTU (Maximum Transmission Unit) für eine Netzwerkschnittstelle an. Der Wertebereich umfaßt die minimale Paketgröße bis zur vom Netzwerk unterstützten MTU.
Die Methode »SetKeepAliveInterval« legt das Zeitintervall zwischen Keep Alive-Übertragungen fest, bis eine Rückmeldung empfangen wird. Wenn eine Rückmeldung empfangen wird, wird die Verzögerung bis zur nächsten Keep Alive-Übertragung erneut vom Wert in »KeepAliveTime« gesteuert. Die Verbindung wird abgebrochen, nachdem die von »TcpMaxDataRetransmissions« angegebene Anzahl der erneuten Übertragungen unbeantwortet bleiben. Die Methode gibt den Wert 0 zurück, wenn sie erfolgreich ausgeführt wurde. Jede andere Zahl zeigt einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services\Tcpip\ Parameters Die Methode »SetKeepAliveTime« legt fest, wie oft TCP durch Senden eines Keep Alive-Pakets überprüft, ob eine Verbindung im Leerlauf noch verfügbar ist. Wenn das Remotesystem erreicht werden kann und aktiv ist, wird die Keep Alive-Übertragung bestätigt. Keep Alive-Pakete werden nicht standardmäßig gesendet. Diese Funktion kann von einer Anwendung aktiviert werden. Die Methode gibt den Wert 0 zurück, wenn sie erfolgreich ausgeführt wurde. Jede andere Zahl zeigt einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services\Tcpip\ Parameters Die Methode »SetMTU« wird verwendet, um die Standard-MTU (Maximum Transmission Unit) für eine Netzwerkschnittstelle festzulegen. Die MTU ist die maximale Paketgröße (in Bytes), die über das Netzwerk übertragen wird. Ein IP-Datagramm kann mehrere Pakete umfassen. Werte, die größer als der Standardwert für das Netzwerk sind, verwenden die Standard-MTU. Werte kleiner als 68, verwenden eine MTU von 68. Die Methode gibt den Wert 0 zurück, wenn der Vorgang einwandfrei abgeschlossen wurde, oder einen anderen Wert, um einen Fehler anzuzeigen. Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services\Tcpip\ Parameters
B.116 Win32_NetworkAdapterConfiguration result as Integer = SetNumForwardPackets (NumForwardPackets as Integer) NumForwardPackets=Der Parameter »NumForwardPackets« gibt die Anzahl der IP-Paketheader für die Routerpaketwarteschlange an. Dieser Wert sollte mindestens dem Wert in der Eigenschaft »ForwardBufferMemory« dividiert durch die maximale IP-Datengröße des mit dem Router verbundenen Netzwerks entsprechen. Der Wert sollte nicht größer als der Wert in »ForwardBufferMemory« dividiert durch 256 sein, da für jedes Paket mindestens 256 Bytes Pufferspeicher erforderlich ist. Die optimale Anzahl weitergeleiteter Paket hängt vom Typ des Netzwerkverkehrs ab und liegt zwischen diesen zwei Werten. Wenn der Router deaktiviert ist, wird dieser Parameter ignoriert und es werden keine Header zugeordnet. Gültiger Bereich: 1 – 0xFFFFFFFE. result as Integer = SetTcpMaxConnectRetransmissions (TcpMaxConnectRetransmissions as Integer) TcpMaxConnectRetransmissions=Der Parameter »TcpMaxConnectRetransmissions« gibt an, wie oft TCP versucht, eine Verbindungsanforderung erneut zu übertragen, bevor der Vorgang abgebrochen wird. Gültiger Bereich: 0 – 0xFFFFFFFF. result as Integer = SetTcpMaxDataRetransmissions (TcpMaxDataRetransmissions as Integer) TcpMaxDataRetransmissions=Der Parameter »TcpMaxDataRetransmissions« gibt an, wie oft TCP versucht, einzelne Datensegmente erneut zu übertragen, bevor die Verbindung abgebrochen wird. Gültiger Bereich: 0 – 0xFFFFFFFF.
589
Die Methode »SetNumForwardPackets« gibt die Anzahl der IPPaketheader für die Routerpaketwarteschlange an. Wenn alle Header verwendet werden, werden Pakete in der Warteschlange verworfen. Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services\Tcpip\ Parameters
Die Methode »SetTcpMaxConnectRetransmissions« wird verwendet, um festzulegen, wie oft TCP versucht, eine Verbindungsanforderung erneut zu übertragen, bevor der Vorgang abgebrochen wird. Das ursprüngliche Zeitlimit für die erneute Übertragung von 3 Sekunden wird mit jedem Versuch verdoppelt. Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services\Tcpip\ Parameters|TcpMaxConnectRetransmissions
Die Methode »SetTcpMaxDataRetransmissions« bestimmt, wie oft TCP versucht, einzelne Datensegmente erneut zu übertragen, bevor die Verbindung abgebrochen wird. Der Zeitüberschreitungswert wird mit jeder erneuten Übertragung verdoppelt. Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services\Tcpip\ Parameters
590
Anhang B: WMI Klassenreferenz
result as Integer = SetTcpNumConnections (TcpNumConnections as Integer) TcpNumConnections=Der Parameter »TcpNumConnections« gibt die maximale Anzahl der gleichzeitig geöffneten Verbindungen an. Gültiger Bereich: 0 – 0xFFFFFE. result as Integer = SetTcpUseRFC1122UrgentPointer (TcpUseRFC1122UrgentPointer as Boolean) TcpUseRFC1122UrgentPointer=Der Parameter »TcpUseRFC1122UrgentPointer« gibt an, ob TCP für dringende Daten die RFC 1122-Spezifikation oder den Modus von BSD abgeleiteten Systemen verwendet. TRUE gibt an, daß dringende Daten im RFC 1122-Modus gesendet werden.
Die Methode »TcpNumConnections« legt die maximale Anzahl der gleichzeitig geöffneten Verbindungen fest. Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services\Tcpip\ Parameters
Die Methode »SetTcpUseRFC1122UrgentPointer« gibt an, ob TCP für dringende Daten die RFC 1122-Spezifikation oder den Modus von Berkeley Software Design (BSD) abgeleiteten Systemen verwendet. Die zwei Methoden definieren den entsprechenden Zeiger im TCP-Header und die Länge der dringenden Daten unterschiedlich und können nicht zusammen verwendet werden. Der Standard für Windows 2000 und Windows NT Version 3.51 oder höher ist der BSD-Modus. Die Methode gibt den Wert 0 zurück, wenn der Vorgang einwandfrei abgeschlossen wurde, oder einen anderen Wert, um einen Fehler anzuzeigen. Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services\Tcpip\ Parameters Die Methode »SetTcpWindowSize« wird verwendet, um die maresult as Integer = SetTcpWindowSize ximale TCP-Empfangsfenstergrößen festzulegen. Das Empfangs(TcpWindowSize as Integer) fenster gibt die Anzahl der Bytes an, die ohne Bestätigung überTcpWindowSize=Der Parameter tragen werden können. Größere Empfangsfenster verbessern im »TcpWindowSize« gibt die maximale TCP-Empfangsfenstergröße an, die ver- allgemeinen die Leistung in Netzwerken mit hoher Verzögerung oder Bandbreite. Das Empfangsfenster sollte ein Vielfaches der fügbar ist. Gültiger Bereich: 0 – 65535. maximalen TCP-Segmentgröße sein. Die Methode gibt den Wert Units=Bytes 0 zurück, wenn der Vorgang einwandfrei abgeschlossen wurde, oder einen anderen Wert, um einen Fehler anzuzeigen. Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services\Tcpip\ Parameters Die Methode »EnableIPFilterSec« wird verwendet, um die IPresult as Integer = EnableIPFilterSec Sicherheit global für alle IP-Netzwerkadapter zu aktivieren. Wenn (IPFilterSecurityEnabled as Boolean) IPFilterSecurityEnabled=Der Parameter die Sicherheit aktiviert ist, können betriebsbereite Sicherheits»IPFilterSecurityEnabled« gibt an, ob die merkmale für einen Netzwerkadapter mit der Methode »EnableIPSec« gesteuert werden. Die Methode gibt den Wert 0 zurück, IP-Sicherheit global für alle IPNetzwerkadapter aktiviert ist. Wenn der wenn der Vorgang einwandfrei ausgeführt wurde, und den Wert 1, wenn ein Neustart erforderlich ist. Jeder andere Wert zeigt eiEingabeparameter »IPFilterSecurityEnnen Fehler an. abled« TRUE ist, ist die Sicherheit aktiviert. Der gesamte Anschluß- und Proto- Befehl wird von folgender API-Funktion bereitgestellt: Win32Registry|SYSTEM\CurrentControlSet\Services\Tcpip\ kollverkehr wird nicht gefiltert. Parameters
Die Eigenschaft »ArpAlwaysSourceRoute« gibt an, ob für ARP (Address Resolution Protocol) immer Quellrouting verwenden werden muß. Wenn diese Eigenschaft TRUE ist, überträgt TCP/IP ARP-Abfragen mit aktiviertem Quellrouting in Token RingNetzwerken. Standardmäßig werden ARP-Abfragen ohne Quellrouting ausgeführt. Wenn keine Antwort empfangen wird, wird der Vorgang mit aktiviertem Quellrouting wiederholt. Quellrouting ermöglicht das Routing von Netzwerkpaketen über verschiedene Netzwerktypen. Standard: FALSE. Die Eigenschaft »ArpUseEtherSNAP« gibt an, ob Ethernetpakete IEEE 802.3 SNAP-Verschlüsselung verwendet. Wenn dieser Parameter auf 1 gesetzt ist, überträgt TCP/IP Ethernetpakete mit 802.3 SNAP-Verschlüsselung. Standardmäßig werden Pakete im DIX-Ethernetformat gesendet. Windows NT/Windows 2000Systeme können beide Formate empfangen. Standard: FALSE. Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_ Setting«. Die Eigenschaft »DatabasePath« gibt einen gültigen WindowsDateipfad zu den Standard-Internetdatenbankdateien (HOSTS, LMHOSTS, NETWORKS, PROTOCOLS) an. Der Pfad wird von der Windows Sockets-Schnittstelle verwendet. Nur Windows NT und Windows 2000. Die Eigenschaft »DeadGWDetectEnabled« gibt an, ob deaktivierte Gateways identifiziert werden. Wenn der Wert dieses Parameters TRUE ist, werden deaktivierte Gateways von TCP identifiziert. TCP ändert IP zu einem Reservegateway, wenn ein Segment mehrmals übertragen wird, ohne eine Rückmeldung zu erhalten. Standard: TRUE. Die Eigenschaft »DefaultIPGateway« enthält eine Liste der IPAdressen von Standardgateways, die vom Computersystem verwendet werden. Beispiel: 194.161.12.1 194.162.46.1 Die Eigenschaft »DefaultTOS« gibt den Standard-TOS-Wert (Type Of Service) im Header ausgehender IP-Pakete an. Die Werte werden in RFC 791 definiert. Standard: 0, Gültiger Bereich: 0 – 255. Die Eigenschaft »DefaultTTL« gibt den TTL-Standardwert (Time To Live) im Header ausgehender IP-Pakete an. TTL gibt den Anzahl der Router an, die ein IP-Paket übergibt, bevor es verworfen wird. Jeder Router verringert diesen Wert um Eins und verwirft das Paket, wenn TTL 0 ist. Standard: 32. Gültiger Bereich: 1 – 255. Eine Textbeschreibung des Objekts »CIM_Setting«.
592
Anhang B: WMI Klassenreferenz
DHCPEnabled
DHCPLeaseExpires
DHCPLeaseObtained
DHCPServer DNSDomain
DNSDomainSuffixSearchOrder
DNSEnabledForWINSResolution
DNSHostName
Die Eigenschaft »DHCPEnabled« gibt an, ob ein DHCP-Server (Dynamic Host Configuration Protocol) beim Herstellen einer Netzwerkverbindung dem Computersystem automatisch eine IPAdresse zuweist. Werte: TRUE oder FALSE. TRUE gibt an, daß DHCP aktiviert ist. Die Eigenschaft »DHCPLeaseExpires« gibt das Ablaufdatum für eine geleaste IP-Adresse an, die dem Computer vom DHCPServer zugewiesen wurde. Beispiel: 20521201000230.000000000 Die Eigenschaft »DHCPLeaseObtained« gibt das Ausstellungsdatum der geleasten IP-Adresse an, die dem Computer vom DHCPServer zugewiesen wurde. Beispiel: 19521201000230.000000000 Die Eigenschaft »DHCPServer« gibt die IP-Adresse des DHCPServers an. Beispiel: 154.55.34 Die Eigenschaft »DNSDomain« gibt einen Organisationsnamen gefolgt von einem Punkt und einer Erweiterung an. Der Name kann alle Buchstaben von A bis Z, die Ziffern 0 bis 9, Bindestriche und einen Punkt als Trennzeichen enthalten. Beispiel: microsoft.com. Die Eigenschaft »DNSDomainSuffixSearchOrder« gibt die DNSDomänensuffixe an, die während der Namensauflösung an Hostnamen angehängt werden. Wenn ein vollqualifizierter Domänenname (FQDN) von einem Hostnamen aufgelöst wird, wird der lokale Domänenname angehängt. Wenn der Domänenname nicht angehängt werden kann, werden anhand der Domänensuffixliste zusätzliche FQDNs erstellt. Beispiel: samples.microsoft.com example.microsoft.com Die Eigenschaft »DNSEnabledForWINSResolution« gibt an, ob DNS (Domain Name System) für die Namensauflösung über WINS (Windows Internet Naming Service) aktiviert ist. Wenn der Name mit DNS nicht aufgelöst werden kann, wird die Anforderung an WINS weitergeleitet. Die Eigenschaft »DNSHostName« gibt den Hostnamen an, der zum Identifizieren des lokalen Computers für die Authentifizierung durch einige Dienstprogramme verwendet wird. Andere TCP/IP-basierte Dienstprogramme können diesen Wert verwenden, um den Namen des lokalen Computers zu ermitteln. Hostnamen werden auf DNS-Servern in einer Tabelle gespeichert, die Namen zu IP-Adressen für DNS zuordnet. Der Name kann aus den Buchstaben A bis Z, den Zahlen 0 bis 9, einem Bindestrich und einem Punkt als Trennzeichen bestehen. Standardmäßig ist dieser Wert der Microsoft-Netzwerkcomputername. Der Netzwerkadministrator kann einen anderen Hostnamen erstellen, ohne den Computernamen zu ändern. Beispiel: corpdns
Die Eigenschaft »DNSServerSearchOrder« gibt die Reihenfolge der Server-IP-Adressen an, die für DNS-Serverabfragen verwendet werden. Die Eigenschaft »DomainDNSRegistrationEnabled« gibt an, ob die IP-Adressen für diese Verbindung in DNS unter dem Domänennamen registriert werden (zusätzlich zur Registrierung unter dem vollständigen DNS-Namen des Computers). Der Domänenname dieser Verbindung wird mit der Methode »SetDNSDomain()« festgelegt oder von DHCP zugeordnet. Der registrierte Name ist der Hostname des Computers mit dem angehängten Domänennamen. Nur Windows 2000. Die Eigenschaft »ForwardBufferMemory« gibt die Größe des Speichers an, der von IP zum Speichern von Paketdaten in der Routerpaketwarteschlange zugeordnet wird. Wenn dieser Puffer voll ist, beginnt der Router Pakete in der Warteschlange zu verwerfen. Der Wert dieses Parameters muß ein Vielfaches von 256 sein, da Datenpuffer von Paketwarteschlangen 256 Bytes groß sind. Für größere Pakete sind mehrere Puffer miteinander verkettet. Der IP-Header für ein Paket wird separat gespeichert. Dieser Parameter wird ignoriert und die Puffer werden nicht zugeordnet, wenn der IP-Router nicht aktiviert ist. Die Puffergröße kann der Netzwerk-MTU entsprechen oder kleiner als 0xFFFFFFFF sein. Standard: 74240 (fünfzig 1480 Byte Pakete, gerundet zu einem Vielfachen von 256). Die Eigenschaft »FullDNSRegistrationEnabled« gibt an, ob die IPAdressen für diese Verbindung unter dem vollständigen DNSNamen des Computers registriert sind. Der vollständige DNSName des Computers wird in der Registerkarte Netzwerkidentifikation in der Systemsteuerung angezeigt. Nur Windows 2000. »GatewayCostMetric« gibt eine ganze Zahl zwischen 1 und 9999 für die Kostenmetrik zum Berechnen der schnellsten, zuverlässigsten und/oder der kostengünstigsten Routen an. Dieses Argument entspricht »DefaultIPGateway«. Nur Windows 2000. Die Eigenschaft »IGMPLevel« gibt an, in wie weit das System IPMulticast unterstützt und das IGM-Protokoll verwendet (Internet Group Management) verwendet. Auf Ebene 0 wird Multicast nicht unterstützt. Auf Ebene 1 werden nur IP-Multicastpakete gesendet. Auf Ebene 2 werden IP-Multicastpakete gesendet und das ICG-Protokoll wird zum Empfangen von Multicastpaketen verwendet. Standard: 2. Die Eigenschaft »Index« gibt die Indexnummer der Win32Netzwerkadapterkonfiguration an. Die Indexnummer wird verwendet, wenn mehrere Konfigurationen verfügbar sind.
594
Anhang B: WMI Klassenreferenz
IPAddress
IPConnectionMetric
IPEnabled IPFilterSecurityEnabled
IPPortSecurityEnabled
IPSecPermitIPProtocols
IPSecPermitTCPPorts
IPSecPermitUDPPorts
Die Eigenschaft »IPAddress« enthält eine Liste der IP-Adressen, die dem aktuellen Netzwerkadapter zugewiesen sind. Beispiel: 155.34.22.0 »IPConnectionMetric« gibt die Kosten für die Verwendung der konfigurierten Routen für den IP-Adapter an und ist der gewichtete Wert für die Routen in der IP-Routingtabelle. Wenn mehrere Routen zu einem Ziel in der IP-Routingtabelle vorhanden sind, wird die Route mit der niedrigsten Metrik verwendet. Der Standardwert ist 1. Nur Windows 2000. Die Eigenschaft »IPEnabled« gibt an, ob TCP/IP für diesen Netzwerkadapter gebunden und aktiviert ist. Die Eigenschaft »IPFilterSecurityEnabled« gibt an, ob die IPAnschlußsicherheit global für alle IP-Netzwerkadapter aktiviert wird. Diese Eigenschaft wird mit folgenden Eigenschaften verwendet: IPSecPermitTCPPorts, IPSecPermitUDPPorts und IPSecPermitIPProtocols. TRUE gibt an, daß die IP-Anschlußsicherheit aktiviert ist, und die Sicherheitswerte der einzelnen Netzwerkadapter aktiv sind. FALSE gibt an, daß die IP-Filtersicherheit für alle Netzwerkadapter deaktiviert ist, und ermöglicht ungefilterten Anschluß- und Protokollverkehr. Die Eigenschaft »IPPortSecurityEnabled« gibt an, ob die IP-Anschlußsicherheit global für alle IP-Netzwerkadapter aktiviert wurde. Diese Eigenschaft wurde durch »IPFilterSecurityEnabled« ersetzt. Die Eigenschaft »IPSecPermitIPProtocols« listet die Protokolle auf, die über IP ausgeführt werden können. Die Liste, die mit der Methode »EnableIPSec« definiert wird, ist leer oder enthält numerische Werte. Der Wert Null gibt an, daß alle Protokolle über Zugriffsrechte verfügen. Eine leere Zeichenfolge gibt an, daß kein Protokoll ausgeführt werden kann, wenn »IPFilterSecurityEnabled« TRUE ist. Die Eigenschaft »IPSecPermitTCPPorts« listet die Anschlüsse mit Zugriffsberechtigung für TCP auf. Die Protokolliste wird mit der Methode »EnableIPSec« definiert. Diese Liste ist leer oder enthält numerische Werte. Der Wert Null gibt an, daß alle Anschlüsse Zugriffsberechtigung haben. Eine leere Zeichenfolge gibt an, daß keinem Anschluß die Zugriffsberechtigung erteilt wurde, wenn »IPFilterSecurityEnabled« TRUE ist. Die Eigenschaft »IPSecPermitUDPPorts« listet die Anschlüsse mit UDP-Zugriffsberechtigung auf. Die Protokolliste wird mit der Methode »EnableIPSec« definiert. Diese Liste ist leer oder enthält numerische Werte. Der Wert Null gibt an, daß alle Anschlüsse Zugriffsberechtigung haben. Eine leere Zeichenfolge gibt an, daß keinem Anschluß die Zugriffsberechtigung erteilt wurde, wenn »IPFilterSecurityEnabled« TRUE ist.
B.116 Win32_NetworkAdapterConfiguration IPSubnet
IPUseZeroBroadcast
IPXAddress
IPXEnabled
IPXFrameType
IPXMediaType IPXNetworkNumber
IPXVirtualNetNumber
KeepAliveInterval
595
Die Eigenschaft »IPSubnet« enthält eine Liste der Subnetzmasken, die dem aktuellen Netzwerkadapter zugewiesen sind. Beispiel: 255.255.0 Die Eigenschaft »IPUseZeroBroadcast« gibt an, ob IP-ZerosBroadcasts verwendet werden. Wenn dieser Parameter TRUE ist, verwendet IP Zeros-Broadcasts (0.0.0.0) und das System verwendet Ones-Broadcasts (255.255.255.255). Gewöhnlich verwenden Computersysteme Ones-Broadcasts, aber die von BSDImplementation abgeleiteten verwenden Zeros-Broadcasts. Systeme, die nicht die gleichen Broadcasts verwenden, können nicht im gleichen Netzwerk ausgeführt werden. Standard: FALSE. Die Eigenschaft »IPXAddress« gibt die IPX-Adresse (Internetworking Packet Exchange) des Netzwerkadapters an. Die IPX-Adresse identifiziert einen Computer im Netzwerk. Die Eigenschaft »IPXEnabled« legt fest, ob das IPX-Protokoll (Internetwork Packet Exchange) für diesen Adapter gebunden und aktiviert ist. Die Eigenschaft »IPXFrameType« stellt ein Array mit Frametypkennungen dar. Die Werte entsprechen den Elementen in »IPXNetworkNumber«. Die Eigenschaft »IPXMediaType« stellt eine IPXMedientypkennung (Internetworking Packet Exchange) dar. Die Eigenschaft »IPXNetworkNumber« gibt die Zeichen an, die eine Rahmen-/Netzwerkadapterkombination im Computersystem eindeutig kennzeichnen. Die NetWare Link (NWLink) IPX/SPX-kompatible Übertragung in Windows 2000 und Windows NT 4.0, oder höher, verwendet zwei unterschiedliche Netzwerknummerntypen. Diese externe Netzwerknummer muß für jedes Netzwerksegment eindeutig sein. Die Reihenfolge in dieser Liste entspricht den Elementen in der Eigenschaft »IPXFrameType«. Die Eigenschaft »IPXVirtualNetNumber« identifiziert das Computersystem im Netzwerk. Windows NT/2000 verwendet die virtuelle Netzwerknummer für internes Routing. Die Eigenschaft »KeepAliveInterval« gibt das Zeitintervall zwischen Keep Alive-Übertragungen an, bis eine Rückmeldung empfangen wird. Wenn eine Rückmeldung empfangen wird, wird die Verzögerung bis zur nächsten Keep Alive-Übertragung erneut vom Wert in »KeepAliveTime« gesteuert. Die Verbindung wird abgebrochen, nachdem die von »TcpMaxDataRetransmissions« angegebene Anzahl der erneuten Übertragungen unbeantwortet bleiben. Standard: 1000. Gültiger Bereich: 1 – 0xFFFFFFFF.
596
Anhang B: WMI Klassenreferenz
KeepAliveTime
MACAddress
MTU
NumForwardPackets
PMTUBHDetectEnabled
Die Eigenschaft »KeepAliveTime« gibt an, wie oft TCP durch Senden eines Keep Alive-Pakets überprüft, ob eine Verbindung im Leerlauf noch verfügbar ist. Wenn das Remotesystem erreicht werden kann und aktiv ist, wird die Keep Alive-Übertragung bestätigt. Keep Alive-Pakete werden nicht standardmäßig gesendet. Diese Funktion kann von einer Anwendung aktiviert werden. Standard: 7,200,000 (zwei Stunden). Die Eigenschaft »MACAddress« gibt die MAC-Adresse (Media Access Control) des Netzwerkadapters an. Eine MAC-Adresse wird vom Hersteller zugewiesen, um den Netzwerkadapter eindeutig zu kennzeichnen. Beispiel: 00:80:C7:8F:6C:96 Die Eigenschaft »MTU« überschreibt die Standard-MTU (Maximum Transmission Unit) für eine Netzwerkschnittstelle. Die MTU ist die maximale Paketgröße, einschließlich der Übertragungsheader), die über das Netzwerk übertragen werden. Das IPDatagramm kann mehrere Pakete umfassen. Der Wertebereich umfaßt die minimale Paketgröße (68) bis zur vom Netzwerk unterstützten MTU. Die Eigenschaft »NumForwardPackets« gibt die Anzahl der IPPaketheader für die Routerpaketwarteschlange an. Wenn alle Header verwendet werden, werden Pakete in der Warteschlange verworfen. Dieser Wert sollte mindestens dem Wert in der Eigenschaft »ForwardBufferMemory« dividiert durch die maximale IPDatengröße des mit dem Router verbundenen Netzwerks entsprechen. Der Wert sollte nicht größer als der Wert in »ForwardBufferMemory« dividiert durch 256 sein, da für jedes Paket mindestens 256 Bytes Pufferspeicher verwendet wird. Die optimale Anzahl weitergeleiteter Paket hängt vom Typ des Netzwerkverkehrs ab und liegt zwischen diesen zwei Werten. Wenn der Router deaktiviert ist, wird dieser Parameter ignoriert und es werden keine Header zugeordnet. Standard: 50. Gültiger Bereich: 1 – 0xFFFFFFFE. Die Eigenschaft »PMTUBHDetectEnabled« gibt an, ob Black HoleRouter erkannt werden. Wenn der Wert dieses Parameters TRUE ist, versucht TCP Black Hole-Router während des Identifizierens des MTU-Pfades zu erkennen. Ein Black Hole-Router gibt keine ICMP-Meldungen bei nicht erreichbaren Zielen zurück, wenn ein IP-Datagramm fragmentiert werden muß und das Bit »Keine Fragmentierung« gesetzt ist. TCP ist vom Empfang dieser Meldungen abhängig, um einen MTU-Pfad zu identifizieren. Wenn diese Funktion aktiviert ist, sendet TCP Segmente ohne das Bit »Keine Fragmentierung«, wenn mehrere Segementübertragungen nicht bestätigt werden. Wenn das Segment bestätigt wird, wird die maximale Segmentgröße erhöht und das Bit »Keine Fragmentierung« wird für künftige Pakete gesetzt. Wenn die Black Hole-Erkennung aktiviert ist, wird die maximale Anzahl der erneuten Segmentübertragungen erhöht. Der Standardwert dieser Eigenschaft ist FALSE.
Die Eigenschaft »PMTUDiscoveryEnabled« gibt an, ob der MTUPfad (Maximum Transmission Unit) identifiziert wird. Wenn der Wert dieses Parameters True ist, versucht TCP die MTU (die größte Paketgröße) über den Pfad zum Remotehost zu identifizieren. Durch Identifizieren des MTU-Pfads und Beschränken der TCP-Segemente auf diese Größe, kann die Fragmentierung von Routern vermieden werden, die Netzwerke mit unterschiedlicher MTU verbinden. Die Fragmentierung wirkt sich ungünstig auf den TCP-Durchsatz und die Netzwerkauslastung aus. Wenn der Wert dieses Parameter False ist, wird eine MTU von 576 Bytes für alle Verbindungen außerhalb des Subnetzes verwendet. Standard: TRUE. Die Eigenschaft »ServiceName« gibt den Dienstnamen des Netzwerkadapters an. Dieser Name ist gewöhnlich kürzer als der vollständige Produktname. Beispiel: Elnkii. Die Kennung für das Objekt »CIM_Setting«. Die Eigenschaft »TcpipNetbiosOptions« gibt eine Bitmap für die möglichen NetBIOS-Einstellungen über TCP/IP an. Nur Windows 2000. Die Eigenschaft »TcpMaxConnectRetransmissions« gibt an, wie oft TCP versucht, eine Verbindungsanforderung auszuführen, bevor diese abgebrochen wird. Der ursprüngliche Zeitüberschreitungswert von 3 Sekunden wird bei jedem Versuch verdoppelt. Standard: 3. Gültiger Bereich: 0 – 0xFFFFFFFF. Die Eigenschaft »TcpMaxDataRetransmissions« gibt an, wie oft TCP versucht, einzelne Datensegmente erneut zu übertragen, bevor die Verbindung abgebrochen wird. Der Zeitüberschreitungswert wird mit jeder erneuten Übertragung verdoppelt. Standard: 5. Gültiger Bereich: 0 – 0xFFFFFFFF. Die Eigenschaft »TcpNumConnections« gibt die maximale Anzahl der gleichzeitig geöffneten Verbindungen an. Standard: 0xFFFFFE. Gültiger Bereich: 0 – 0xFFFFFE. Die Eigenschaft »TcpUseRFC1122UrgentPointer« gibt an, ob TCP für dringende Daten die RFC 1122-Spezifikation oder den Modus von BSD (Berkeley Software Design) abgeleiteten Systemen verwendet. Die zwei Methoden interpretieren den Dringlichkeitszeiger unterschiedlich und können nicht zusammen verwendet werden. Windows 2000 und Windows NT 3.51, oder höher, verwenden den BSD-Modus. TRUE gibt an, daß dringende Daten im RFC 1122=Modus gesendet werden. Standard: FALSE.
598
Anhang B: WMI Klassenreferenz
TcpWindowSize
WINSEnableLMHostsLookup
WINSHostLookupFile
WINSPrimaryServer WINSScopeID
WINSSecondaryServer
Die Eigenschaft »TcpWindowSize« enthält die maximale TCPEmpfangsfenstergröße. Das Empfangsfenster gibt die Anzahl der Bytes an, die ohne Bestätigung übertragen werden können. Größere Empfangsfenster verbessern die Leistung über Netzwerke mit hoher Verzögerung oder Bandbreite. Das Empfangsfenster sollte ein gerades Vielfaches der maximalen TCP-Segmentgröße sein. Standard: Die TCP-Datengröße multipliziert mit 4 oder ein gerades Vielfaches der TCP-Datengröße, aufgerundet zu nächsten Vielfachen von 8192. Der Standard für Ethernetnetzwerke ist 8760. Gültiger Bereich: 0 – 65535. Die Eigenschaft »WINSEnableLMHostsLookup« gibt an, ob lokale Abfragedateien verwendet werden. Abfragedateien enthalten die Zuordnungen von IP-Adressen zu Hostnamen. Pfad: %SystemRoot%\system32\drivers\usw. Die Eigenschaft »WINSHostLookupFile« enthält den Pfad zu einer WINS-Abfragedatei im lokalen System. Diese Datei enthält die Zuordnung von IP-Adressen zu Hostnamen. Wenn die angegebene Datei gefunden wird, wird sie in den Ordner\system32\drivers\etc kopiert. Diese Eigenschaft ist nur gültig, wenn die Eigenschaft »WINSEnableLMHostsLookup« TRUE ist. Die Eigenschaft »WINSPrimaryServer« gibt die IP-Adresse für den primären WINS-Server an. Die Eigenschaft »WINSScopeID« isoliert eine Gruppe von Computersystemen, die nur miteinander kommunizieren. Die Bereichskennung ist ein Zeichenfolgenwert, der an den NetBIOSNamen angehängt und für alle NetBIOS-Transaktionen über TCP/IP verwendet wird. Computer, die mit der gleichen Bereichskennung konfiguriert sind, können mit diesem Computer kommunizieren. TCP/IP-Clients mit unterschiedlichen Bereichskennungen ignorieren Pakete von Computern mit dieser Bereichskennung. Diese Eigenschaft ist nur gültig, wenn die Methode »EnableWINS« erfolgreich ausgeführt wird. Die Eigenschaft »WINSSecondaryServer« gibt die IP-Adresse für den sekundären WINS-Server an.
B.117 Win32_NetworkAdapterSetting Element Setting
Die Referenz »Element« stellt die Eigenschaften eines Netzwerkadapters mit einer bestimmten Eigenschaft dar. Die Referenz »Setting« stellt die Konfigurationseinstellungen des Netzwerkadapters dar.
B.118 Win32_NetworkClient
599
B.118 Win32_NetworkClient Caption Description InstallDate Manufacturer Name Status
Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »Manufacturer« gibt den Hersteller des Netzwerkclients im Win32System an. Beispiel: Microsoft Corporation Die Eigenschaft »Name« gibt den Netzwerknamen des auf einem Win32-System ausgeführten Clients an. Beispiel: Microsoft Windows Network Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während dem erneuten Spiegeln eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
Die Eigenschaft »AccessMask« ist ein Bitarray, das die in der Netzwerkfreigabe festgelegten Zugriffsrechte des Benutzers oder der Gruppe darstellt, für die die Instanz zurückgegeben wird. Diese Eigenschaft wird nur in Windows NT und Windows 2000 unterstützt. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »Comment« enthält einen Kommentar vom Netzwerkanbieter. Die Eigenschaft »ConnectionState« gibt den aktuellen Status der Netzwerkverbindung an. Die Eigenschaft »ConnectionType« gibt den Verbindungstyp für das Netzwerk an. Beispiel: Permanent. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DisplayType« gibt an, wie das Netzwerkobjekt in einer Netzwerkoberfläche angezeigt wird. Beispiel: Allgemein. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein.
600
Anhang B: WMI Klassenreferenz
LocalName Name
Persistent
ProviderName RemoteName
RemotePath ResourceType Status
UserName
Die Eigenschaft »LocalName« gibt den lokalen Namen des verbundenen Netzwerkgeräts an. Beispiel: c:\public. Die Eigenschaft »Name« gibt den Namen der aktuellen Netzwerkverbindung an. Der Name ist eine Kombination der Werte in den Eigenschaften »RemoteName« und »LocalName«. Beispiel: \\NTRELEASE (c:\public). Die Eigenschaft »Persistent« bestimmt, ob die Verbindung beim nächsten Anmelden automatisch wiederhergestellt wird. Werte: TRUE oder FALSE. TRUE gibt an, daß die Netzwerkverbindung automatisch wiederhergestellt wird. Die Eigenschaft »ProviderName« enthält den Namen des Ressourcenanbieters. Diese Eigenschaft ist Null, wenn der Anbieter unbekannt ist. Die Eigenschaft »RemoteName« enthält den Remotenamen für eine Netzwerkressource. Für eine aktuelle oder permanente Verbindung enthält diese Eigenschaft den Netzwerknamen, der in der Eigenschaft »LocalName« angegeben ist. Der Name muß den Namenskonventionen des Netzwerkanbieters entsprechen. Beispiel: \\NTRELEASE. Die Eigenschaft »RemotePath« enthält den vollständigen Pfad zur Netzwerkressource. Beispiel: \\infosrv1\public Die Eigenschaft »ResourceType« gibt den Ressourcentyp für die Aufzählung oder die Verbindung an. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMARTaktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während dem erneuten Spiegeln eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Eigenschaft »UserName« enthält den Benutzernamen oder Standardbenutzernamen zum Herstellen einer Netzwerkverbindung. Beispiel: SYSTEM.
B.120 Win32_NetworkLoginProfile AccountExpires
AuthorizationFlags
Die Eigenschaft »AccountExpires« gibt an, wann das Konto abläuft. Dieser Wert wird aus der Anzahl der Sekunden berechnet, die seit dem 1. Januar 1970 00:00:00 verstrichen sind. Format: yyyymmddhhmmss.mmmmmm sutc. Beispiel: 20521201000230.000000 000 Die Eigenschaft »AuthorizationFlags« enthält Flags, die festlegen, welche Ressourcen der Benutzer verwenden bzw. ändern darf.
Die Eigenschaft »BadPasswordCount« gibt an, wie oft der Benutzer beim Anmelden an ein Win32-System ein falsches Kennwort eingibt. Beispiel: 0 Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Die Eigenschaft »CodePage« gibt die Codepage für die gewählte Sprache an. Eine Codepage ist der verwendete Zeichensatz. Die Eigenschaft »Comment« enthält einen Kommentar oder eine Beschreibung für das Anmeldeprofil. Die Eigenschaft »CountryCode« gibt den Länder-/Regionscode für die gewählte Sprache an. Eine Textbeschreibung des Objekts »CIM_Setting«. Die Eigenschaft »Flags« gibt die für dieses Netzwerkprofil verfügbaren Eigenschaften an. Verfügbare Eigenschaften: UF_SCRIPT – Führt ein Anmeldescript aus. Dieser Wert muß für LAN Manager 2.0 und Windows NT/Windows 2000 festgelegt werden. UF_ACCOUNTDISABLE – Deaktiviert das Benutzerkonto. UF_HOMEDIR_REQUIRED – Ein Basisverzeichnis ist erforderlich. Dieser Wert wird in Windows NT/Windows 2000 ignoriert. UF_PASSWD_NOTREQD – Kein Kennwort erforderlich. UF_PASSWD_CANT_CHANGE – Der Benutzer kann das Kennwort nicht ändern. UF_LOCKOUT – Sperrt das Konto. Für NetUserSetInfo kann dieser Wert gelöscht werden, um ein gesperrtes Konto freizugeben. Dieser Wert kann nicht verwendet werden, um ein nicht gesperrtes Konto zu sperren. UF_DONT_EXPIRE_PASSWD – Für Windows NT/Windows 2000: Das Kennwort für das Konto sollte nicht ablaufen. Folgende Eigenschaften beschreiben den Kontotyp. Es kann nur ein Wert festgelegt werden: UF_NORMAL_ACCOUNT – Standardbenutzerkonto. UF_TEMP_DUPLICATE_ACCOUNT – Konto für Benutzer mit einem primären Konto in einer anderen Domäne, das den Zugriff auf diese Domäne ermöglicht, aber nicht auf Domänen, die dieser Domäne vertrauen. Der Benutzer-Manager bezeichnet diesen Kontotyp als lokales Benutzerkonto. UF_WORKSTATION_TRUST_ACCOUNT – Ein Computerkonto für eine Windows NT/Windows 2000-Arbeitsstation oder einen Windows NT/Windows 2000-Server, der Mitglied in dieser Domäne ist. UF_SERVER_TRUST_ACCOUNT – Ein Computerkonto für einen Reservedomänencontroller, der Mitglied in dieser Domäne ist. UF_INTERDOMAIN_TRUST_ACCOUNT – Vertraut einem Konto für eine Domäne, die anderen Domänen vertraut. Die Eigenschaft »FullName« gibt den vollständigen Namen des Benutzers im Netzwerkanmeldeprofil an. Diese Zeichenfolge kann leer sein, wenn dem Benutzernamen kein vollständiger Name zugewiesen wird. Die Eigenschaft »HomeDirectory« gibt den Pfad zum Basisverzeichnis des Benutzers an. Diese Zeichenfolge kann leer sein, wenn kein Basisverzeichnis angegeben wird. Beispiel: \HOMEDIR
602
Anhang B: WMI Klassenreferenz
HomeDirectoryDrive
LastLogoff
LastLogon
LogonHours
LogonServer
MaximumStorage
Name
NumberOfLogons
Die Eigenschaft »HomeDirectoryDrive« gibt den Laufwerkbuchstaben an, der dem Basisverzeichnis des Benutzers zum Anmelden zugewiesen wurde. Beispiel: C: Die Eigenschaft »LastLogoff« gibt an, wann sich der Benutzer zuletzt vom System abgemeldet hat. Dieser Wert wird aus der Anzahl der Sekunden berechnet, die seit dem 1. Januar 1970 um 00:00:00 vergangen ist. Der Wert Null gibt an, daß der letzte Abmeldezeitpunkt unbekannt ist. Der Wert hat folgendes Format: yyyymmddhhmmss.mmmmmm sutc. Beispiel: 19521201000230.000000 000 Die Eigenschaft »LastLogon« gibt an wann sich der Benutzer zuletzt am System angemeldet hat. Dieser Wert wird aus der Anzahl der Sekunden berechnet, die seit dem 1. Januar 1970 um 00:00:00 vergangen ist. Der Wert Null gibt an, daß der letzte Anmeldezeitpunkt unbekannt ist. Der Wert hat folgendes Format: yyyymmddhhmmss.mmmmmm sutc. Beispiel: 19521201000230.000000 000 Die Eigenschaft »LogonHours« gibt die Uhrzeiten an, zu denen sich der Benutzer während der Woche anmelden kann. Jedes Bit stellt eine in »UnitsPerWeek« angegebene Zeiteinheit dar. Wenn die Zeiteinheit z.B. Stunden sind, ist das erste Bit (Bit 0, Word 0) Sonntag, 0:00 bis 0:59; das zweite Bit (Bit 1, Word 0) ist Sonntag, 1:00 bis 1:59; usw. Wenn dieses Mitglied NULL ist, sind keine Zeiteinschränkungen vorhanden. Die Zeit ist auf GMT gesetzt und muß für andere Zeitzonen angepaßt werden. Die Eigenschaft »LogonServer« enthält den Namen des Servers, an den die Anmeldeanforderungen gesendet werden. Den Servernamen müssen zwei umgekehrte Schrägstriche vorangestellt werden. Ein Servername mit einem Stern gibt an, daß die Anmeldeanforderung von jedem Anmeldeserver verarbeitet werden kann. Eine leere Zeichenfolge gibt an, daß die Anforderungen an den Domänencontroller gesendet werden. Beispiel: \\MyServer Die Eigenschaft »MaximumStorage« gibt den maximal verfügbaren Speicherplatz für den Benutzer an. Wenn »MaximumStorage« auf USER_MAXSTORAGE_UNLIMITED gesetzt ist, kann der Benutzer den gesamten verfügbaren Speicherplatz verwenden. Beispiel: 10000000 Die Eigenschaft »Name« gibt den Namen des Benutzerkontos in einer bestimmten Domäne oder auf einem Computer an. Die Anzahl der Zeichen darf den Wert von UNLEN nicht überschreiten. Beispiel: somedomain\johndoe Die Eigenschaft »NumberOfLogons« gibt an, wie oft sich der Benutzer an diesem Konto angemeldet hat. 0xFFFFFFFF gibt an, daß der Wert unbekannt ist. Diese Eigenschaft wird auf jedem Reservedomänencontroller (BDC) separat verwaltet. Verwenden Sie den größten Wert aus allen BDCs, um einen genauen Wert zu erhalten. Beispiel: 4
B.120 Win32_NetworkLoginProfile Parameters
PasswordAge
PasswordExpires
PrimaryGroupId
Privileges Profile
ScriptPath
SettingID UnitsPerWeek
UserComment UserId
UserType Workstations
603
Die Eigenschaft »Parameters« enthält den für Anwendungen reservierten Bereich. Diese Zeichenfolge kann keine oder eine beliebige Anzahl Zeichen enthalten und wird mit Null beendet. Microsoft-Produkte verwenden dieses Mitglied, um Informationen über die Benutzerkonfiguration zu speichern. Diese Informationen dürfen nicht geändert werden, da sie an eine Anwendung gebunden sind. Die Eigenschaft »PasswordAge« gibt an, wie lange das Kennwort verwendet wurde. Dieser Wert wird an der Anzahl der Sekunden seit der letzten Kennwortänderung gemessen. Beispiel: 00001201000230.000000 000 Die Eigenschaft »PasswordExpires« gibt an, wenn das Kennwort abläuft. Der Wert hat folgendes Format: yyyymmddhhmmss.mmmmmm sutc Beispiel: 19521201000230.000000 000 Die Eigenschaft »PrimaryGroupId« gibt die RID (Relative ID) der primären globalen Gruppe für den Benutzer an. Mit der Kennung wird die primäre Gruppe überprüft, zu der das Benutzerprofil gehört. Die Eigenschaft »privileges« gibt die Berechtigungsebene für die Eigenschaft »usri3_name« an. Die Eigenschaft »Profile« gibt einen Verzeichnispfad zum Benutzerprofil an. Dieser Wert kann Null, ein lokaler absoluter Pfad oder ein UNC-Pfad sein. Ein Benutzerprofil enthält Einstellungen, die für jeden Benutzer angepaßt werden können; z.B. die Desktopfarben. Beispiel: C:\Winnt Die Eigenschaft »ScriptPath« gibt den Verzeichnispfad zum Anmeldescript des Benutzers an. Ein Anmeldescript führt bei jedem Anmelden automatisch Befehle aus. Beispiel: C:\win\profiles\ThomasSteven Die Kennung für das Objekt »CIM_Setting«. Die Eigenschaft »UnitsPerWeek« gibt die Anzahl der Zeiteinheiten an, in die die Woche aufgeteilt ist. Diese Eigenschaft wird mit der Eigenschaft »LogonHours« verwendet, um den Benutzerzugriff auf den Computer einzuschränken. Beispiel: 168 (Stunden pro Woche). Die Eigenschaft »UserComment« enthält einen benutzerdefinierten Kommentar oder eine Beschreibung für das Profil. Die Eigenschaft »UserId« gibt die RID (Relative ID) des Benutzers an. Mit der Kennung wird überprüft, ob der Benutzer vorhanden und in dieser Domäne eindeutig ist. Die Eigenschaft »UserType« gibt den Kontotyp an, für den der Benutzer Berechtigungen hat. Die Eigenschaft »Workstations« enthält die Namen der Arbeitsstationen, auf denen sich der Benutzer anmelden kann. Es können bis zu acht Arbeitsstationen angegeben werden; die Namen müssen durch Kommas getrennt werden. Der Wert Null gibt keine Einschränkungen an. Legen Sie den Wert auf UF_ACCOUNTDISABLE in der Eigenschaft »Flags« dieser Klasse fest, um das Anmelden von allen Arbeitsstationen für das Konto zu deaktivieren.
Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »ConnectionlessService« gibt an, ob das Protokoll verbindungslose Dienste unterstützt. Ein verbindungsloser Dienst beschreibt ein Protokoll oder eine Übertragung, in der Datenpakete unabhängig voneinander umgeleitet werden und in anderer Reihenfolge empfangen werden. Mit einem verbindungsorientierten Dienst werden Datenpakete in der gleichen Reihenfolge, in der sie gesendet werden, empfangen. Wenn die Verbindung fehlschlägt, wird die Anwendung benachrichtigt. Werte: TRUE oder FALSE. TRUE gibt an, daß das Protokoll einen verbindungslosen Dienst verwendet. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »GuaranteesDelivery« gibt an, ob das Protokoll garantiert, daß alle gesendeten Daten das angegebene Ziel erreichen. FALSE gibt an, daß die Zustellung nicht garantiert ist. Werte: TRUE oder FALSE. TRUE gibt an, daß das Protokoll die garantierte Zustellung von Datenpaketen unterstützt. Die Eigenschaft »GuaranteesSequencing« gibt an, ob das Protokoll gewährleistete, daß Daten in der Reihenfolge, in der sie gesendet wurden, empfangen werden. Es wird nur die Reihenfolge der Daten, nicht der Empfang garantiert. Werte: TRUE oder FALSE. TRUE gibt an, die Reihenfolge garantiert wird. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »MaximumAddressSize« gibt die maximale Länge der vom Protokoll unterstützten Socketadresse an. Socketadressen können URLs (www.microsoft.com) oder IP-Adressen (130.215.24.1) sein. Die Eigenschaft »MaximumMessageSize« gibt die maximale Meldungsgröße an, die vom Protokoll unterstützt wird. Dieser Wert bestimmt die maximale Meldungsgröße, die vom Host gesendet oder empfangen werden kann. Für Protokolle, die keine Meldungsrahmen unterstützen, ist die maximale Größe einer Meldung, die an eine angegebene Adresse gesendet werden kann, möglicherweise geringer als dieser Wert. Folgende Werte sind für diese Eigenschaft definiert: 0 – Das Protokoll ist datenstromorientiert; das Konzept der Meldungsgröße ist irrelevant. 1 – Die maximal gesendete Meldungsgröße ist von der Netzwerk-MTU (Maximum Sized Transmission Unit) abhängig. Anwendungen sollten »getsockopt« verwenden, um den Wert von SO_MAX_MSG_SIZE abzufragen, nachdem der Socket an eine lokale Adresse gebunden wurde. 0xFFFFFFFF – Die maximale Meldungsgröße ist nicht definiert. Die Eigenschaft »MessageOriented« gibt an, ob das Protokoll meldungsorientiert ist. Ein meldungsorientiertes Protokoll überträgt Informationen als Datenpakete. Im Gegensatz zu datenstromorientierten Protokollen, die Daten als fortgesetzten Datenstrom übertragen. Werte: TRUE oder FALSE. TRUE gibt an, daß das Protokoll meldungsorientiert ist.
B.121 Win32_NetworkProtocol MinimumAddressSize Name PseudoStreamOriented
Status
SupportsBroadcasting
SupportsConnectData
SupportsDisconnectData
SupportsEncryption
SupportsExpeditedData
SupportsFragmentation
605
Die Eigenschaft »MinimumAddressSize« gibt die minimale Länge der vom Protokoll unterstützten Socketadresse an. Die Eigenschaft »Name« enthält den Protokollnamen. Beispiel: TCP/IP Die Eigenschaft »PseudoStreamOriented« gibt an, ob das Protokoll meldungsorientiert ist und Datenpakete mit variabler Länge und Datenströme empfangen kann. Diese optionale Funktion ist nützlich, wenn eine Anwendung keine Meldungsrahmen zuläßt und datenstromorientierte Merkmale erfordert. Werte: TRUE oder FALSE. TRUE gibt an, daß das Protokoll pseudo-datenstromorientiert ist. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMARTaktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Eigenschaft »SupportsBroadcasting« gibt an, ob das Protokoll das Broadcasting von Nachrichten im Netzwerk unterstützt. Werte: TRUE oder FALSE. TRUE gibt an, daß Broadcasting unterstützt wird. Die Eigenschaft »SupportsConnectData« gibt an, ob das Protokoll die Datenverbindung über das Netzwerk ermöglicht. Werte: TRUE oder FALSE. TRUE gibt an, daß die Datenverbindung unterstützt wird. Die Eigenschaft »SupportsDisconnectData« gibt an, ob das Protokoll die Datentrennung über das Netzwerk ermöglicht. Werte: TRUE oder FALSE. TRUE gibt an, daß die Datentrennung unterstützt wird. Die Eigenschaft »SupportsEncryption« gibt an, ob das Protokoll die Datenverschlüsselung unterstützt. Werte: TRUE oder FALSE. TRUE gibt an, daß die Datenverschlüsselung unterstützt wird. Die Eigenschaft »SupportsExpeditedData« gibt an, ob das Protokoll beschleunigte Daten im Netzwerk unterstützt. Beschleunigte Daten können die Flußsteuerung umgehen und Priorität über normale Datenpakte erhalten. Werte: TRUE oder FALSE. TRUE gibt an, daß beschleunigte Daten unterstützt werden. Die Eigenschaft »SupportsFragmentation« gibt an, ob das Protokoll das Übertragen von Datenfragmenten unterstützt. Die physikalische NetzwerkMTU (Maximum Transfer Unit) ist für Anwendungen nicht erkennbar. Jeder Medientyp verfügt über eine maximale Rahmengröße, die nicht überschritten werden kann. Die Verbindungsschicht ist für das Identifizieren und Weiterleiten der MTU, an die verwendeten Protokolle, verantwortlich. Werte: TRUE oder FALSE. TRUE gibt an, daß das Protokoll das Übertragen von Datenfragmenten unterstützt.
606
Anhang B: WMI Klassenreferenz
SupportsGracefulClosing
SupportsGuaranteedBandwidth
SupportsMulticasting
SupportsQualityofService
Die Eigenschaft »SupportsGracefulClosing« gibt an, ob das Protokoll zweiphasen Schließvorgänge unterstützt. Wenn nicht, unterstützt das Protokoll nur Abbruchvorgänge. Werte: TRUE oder FALSE. TRUE gibt an, daß zweiphasen Schließvorgänge unterstützt werden. Die Eigenschaft »SupportsGuaranteedBandwidth« gibt an, ob das Protokoll eine garantierte Bandbreite einrichten und beibehalten kann. Werte: TRUE oder FALSE. TRUE gibt an, daß das Protokoll eine garantierte Bandbreite unterstützt. Die Eigenschaft »SupportsMulticasting« gibt an, ob das Protokoll Multicasting unterstützt. Werte: TRUE oder FALSE. TRUE gibt an, daß Multicasting unterstützt wird. Die Eigenschaft »SupportsQualityofService« gibt an, ob das Protokoll QOS (Quality of Service) über den Dienstanbieter oder das Trägersignal unterstützt. QOS ist eine Sammlung von Komponenten, die die Differenzierung und bevorzugte Behandlung für Datenuntermengen aktivieren, die über das Netzwerk übertragen werden. Werte: TRUE oder FALSE. TRUE gibt an, daß das Protokoll QOS unterstützt.
B.122 Win32_ODBCAttribute Attribute Caption Description Driver SettingID Value
Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Die Kennung für das Objekt »CIM_Setting«. Die Kennung für das Objekt »CIM_Setting«.
B.123 Win32_ODBCDataSourceAttribute Check Setting
B.124 Win32_ODBCDataSourceSpecification result as Integer = Invoke
Die Aufrufmethode soll eine bestimmte Überprüfung auswerten. Einzelheiten bezüglich der Methode für die Auswertung einer bestimmten Überprüfung in einem CIM-Kontext werden von den nicht abstrakten Teilklassen »CIM_ Check« angezeigt. Die Ergebnisse dieser Auswertungsmethode basieren auf dem zurückgegebenen Wert. A 0 (Null) wird zurückgegeben, wenn die Bedingung erfüllt wurde. Alle anderen Werte zeigen an, daß die Bedingung nicht erfüllt wurde.
Description DriverDescription Name Registration SoftwareElementID SoftwareElementState TargetOperatingSystem Version
607
Eine Kennung, die in Verbindung mit anderen Schlüsseln verwendet wird, um die Überprüfung eindeutig zu identifizieren. Die Eigenschaft »CheckMode« zeigt an, ob eine Bedingung in der Umgebung erfüllt oder nicht erfüllt werden soll. Wenn dieser Wert True ist, soll diese Bedingung erfüllt werden (z.B. eine Datei soll sich auf dem Computer befinden) und daher der Aufruf() als True zurückgegeben werden. Wenn der Wert falsch ist, soll diese Bedingung nicht erfüllt werden (z.B. eine Datei soll sich nicht auf dem Computer befinden) und daher der Aufruf als falsch zurückgegeben werden. Die Eigenschaft »CheckMode« zeigt an, ob eine Bedingung in der Umgebung erfüllt oder nicht erfüllt werden soll. Wenn dieser Wert True ist, soll diese Bedingung erfüllt werden (z.B. eine Datei soll sich auf dem Computer befinden) und daher der Aufruf() als True zurückgegeben werden. Wenn der Wert falsch ist, soll diese Bedingung nicht erfüllt werden (z.B. eine Datei soll sich nicht auf dem Computer befinden) und daher der Aufruf als falsch zurückgegeben werden. Eine Beschreibung der Objekte. Eine Beschreibung der Objekte. Der Name zum Identifizieren der Softwarekomponente. Der Name zum Identifizieren der Softwarekomponente. Kennung für die Softwarekomponente. Der Status einer Softwarekomponente. Zielbetriebssystem der Softwarekomponente. Versionsformat: .. oder .
B.125 Win32_ODBCDriverSoftwareElement Check Element Phase
Überprüfung. Element. Die Eigenschaft »Phase« gibt an, ob der aktuelle Status oder der nächste Status überprüft wird.
B.126 Win32_ODBCDriverSpecification result as Integer = Invoke
Die Aufrufmethode soll eine bestimmte Überprüfung auswerten. Einzelheiten bezüglich der Methode für die Auswertung einer bestimmten Überprüfung in einem CIM-Kontext werden von den nicht abstrakten Teilklassen »CIM_ Check« angezeigt. Die Ergebnisse dieser Auswertungsmethode basieren auf dem zurückgegebenen Wert. A 0 (Null) wird zurückgegeben, wenn die Bedingung erfüllt wurde. Alle anderen Werte zeigen an, daß die Bedingung nicht erfüllt wurde.
608
Anhang B: WMI Klassenreferenz
Caption CheckID CheckMode
Description Driver File Name SetupFile SoftwareElementID SoftwareElementState TargetOperatingSystem Version
Eine Kennung, die in Verbindung mit anderen Schlüsseln verwendet wird, um die Überprüfung eindeutig zu identifizieren. Die Eigenschaft »CheckMode« zeigt an, ob eine Bedingung in der Umgebung erfüllt oder nicht erfüllt werden soll. Wenn dieser Wert True ist, soll diese Bedingung erfüllt werden (z.B. eine Datei soll sich auf dem Computer befinden) und daher der Aufruf() als True zurückgegeben werden. Wenn der Wert falsch ist, soll diese Bedingung nicht erfüllt werden (z.B. eine Datei soll sich nicht auf dem Computer befinden) und daher der Aufruf als falsch zurückgegeben werden. Eine Beschreibung der Objekte. Eine Beschreibung der Objekte. Eine Beschreibung der Objekte. Der Name zum Identifizieren der Softwarekomponente. Der Name zum Identifizieren der Softwarekomponente. Kennung für die Softwarekomponente. Der Status einer Softwarekomponente. Zielbetriebssystem der Softwarekomponente. Versionsformat: .. oder .
B.127 Win32_ODBCSourceAttribute Attribute Caption DataSource Description SettingID Value
Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Die Kennung für das Objekt »CIM_Setting«. Die Kennung für das Objekt »CIM_Setting«.
B.128 Win32_ODBCTranslatorSpecification result as Integer = Invoke
Caption
Die Aufrufmethode soll eine bestimmte Überprüfung auswerten. Einzelheiten bezüglich der Methode für die Auswertung einer bestimmten Überprüfung in einem CIM-Kontext werden von den nicht abstrakten Teilklassen »CIM_ Check« angezeigt. Die Ergebnisse dieser Auswertungsmethode basieren auf dem zurückgegebenen Wert. A 0 (Null) wird zurückgegeben, wenn die Bedingung erfüllt wurde. Alle anderen Werte zeigen an, daß die Bedingung nicht erfüllt wurde.
Description File Name SetupFile SoftwareElementID SoftwareElementState TargetOperatingSystem Translator Version
609
Eine Kennung, die in Verbindung mit anderen Schlüsseln verwendet wird, um die Überprüfung eindeutig zu identifizieren. Die Eigenschaft »CheckMode« zeigt an, ob eine Bedingung in der Umgebung erfüllt oder nicht erfüllt werden soll. Wenn dieser Wert True ist, soll diese Bedingung erfüllt werden (z.B. eine Datei soll sich auf dem Computer befinden) und daher der Aufruf() als True zurückgegeben werden. Wenn der Wert falsch ist, soll diese Bedingung nicht erfüllt werden (z.B. eine Datei soll sich nicht auf dem Computer befinden) und daher der Aufruf als falsch zurückgegeben werden. Eine Beschreibung der Objekte. Eine Beschreibung der Objekte. Der Name zum Identifizieren der Softwarekomponente. Der Name zum Identifizieren der Softwarekomponente. Kennung für die Softwarekomponente. Der Status einer Softwarekomponente. Zielbetriebssystem der Softwarekomponente. Zielbetriebssystem der Softwarekomponente. Versionsformat: .. oder .
B.129 Win32_OSRecoveryConfiguration AutoReboot
Caption DebugFilePath
Description KernelDumpOnly
Name OverwriteExistingDebugFile
Die Eigenschaft »AutoReboot« legt fest, ob das System während des Wiederherstellungsvorgangs automatisch neu gestartet wird. Werte: TRUE oder FALSE. TRUE gibt an, daß das System automatisch neu gestartet wird. Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Die Eigenschaft »DebugFilePath« gibt den vollständigen Pfad zur Debugdatei an. Eine Debugdatei wird mit dem Speicherstatus nach einem Computerabsturz erstellt. Beispiel: C:\WinNT\Memory.dmp Eine Textbeschreibung des Objekts »CIM_Setting«. Die Eigenschaft »KernelDumpOnly« gibt an, ob nur KernelDebuginformationen in die Debugprotokolldatei geschrieben werden. Werte: TRUE oder FALSE. TRUE gibt an, daß nur der Kernelstatus in eine Datei geschrieben wird, wenn ein Systemfehler auftritt. FALSE gibt an, daß der Speicherstatus und der Status der Geräte protokolliert wird, die Informationen über den Systemfehler enthalten. Die Eigenschaft »Name« enthält den Instanzennamen der Klasse »Win32_OSRecoveryConfiguration«. Die Eigenschaft »OverwriteExistingDebugFile« gibt an, ob eine vorhandene Protokolldatei von einer neuen Protokolldatei überschrieben wird. Werte: TRUE oder FALSE. TRUE gibt an, daß die vorhandene Datei überschrieben wird. FALSE gibt an, daß die Protokolldatei nicht erstellt wird, wenn der Dateiname bereits vorhanden ist.
610
Anhang B: WMI Klassenreferenz
SendAdminAlert
SettingID WriteDebugInfo
WriteToSystemLog
Die Eigenschaft »SendAdminAlert« gibt an, ob eine Warnung an den Systemadministrator gesendet wird, wenn ein Betriebssystemfehler auftritt. Werte: TRUE oder FALSE. TRUE gibt an, daß das System eine Warnung ausgibt. Die Kennung für das Objekt »CIM_Setting«. Die Eigenschaft »WriteDebugInfo« gibt an, ob Debuginformationen in eine Protokolldatei geschrieben werden. Werte: TRUE oder FALSE. TRUE gibt an, daß die Debuginformationen in eine Datei geschrieben werden. Die Eigenschaft »WriteToSystemLog« gibt an, ob Ereignisse in ein Systemprotokoll geschrieben werden. Werte: TRUE oder FALSE. TRUE gibt an, daß die Informationen in ein Protokoll geschrieben werden.
Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. »CreationClassName« gibt den Namen der Klasse oder Teilklasse an, die beim Erstellen einer Instanz verwendet wird. Wenn diese Eigenschaft mit anderen Schlüsseleigenschaften dieser Klasse verwendet wird, können alle Instanzen der Klasse und der Teilklassen eindeutig erkannt werden. Die Eigenschaft »Description« beschreibt das Kartengerät und wird vom Gerätehersteller angegeben. Die Eigenschaft »DeviceType« gibt den Typ des Geräts an. Die Eigenschaft »Enabled« gibt an, ob das Kartengerät verfügbar ist. Werte: TRUE oder FALSE. TRUE gibt an, daß das Gerät verfügbar ist. Eine physikalische Komponente ist in Betrieb austauschbar, wenn sie durch ein physikalisch gleichwertiges Element ersetzt werden kann, während das enthaltende Paket eingeschaltet ist. Eine Lüfterkomponente kann z.B. in Betrieb austauschbar sein. Alle in Betrieb austauschbaren Komponenten sind durch Vererbung ersetzbar. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Der Name der Organisation, die für die Herstellung des physikalischen Elements verantwortlich ist. Der Name der physikalischen Komponente. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden.
B.130 Win32_OnBoardDevice OtherIdentifyingInfo
PartNumber
PoweredOn Removable
Replaceable
SerialNumber SKU Status
Tag Version
611
»OtherIdentifyingInfo« erfaßt außer Bestandskennzeichnungsinformationen auch Daten, die dazu verwendet werden können, physikalische Elemente zu identifizieren. Ein Beispiel dafür sind Barcodedaten, die mit einem Element verbunden sind, das auch über eine Bestandskennzeichnung verfügt. Hinweis: Wenn nur Barcodedaten verfügbar sind, die allein als Elementschlüssel verwendet werden können, ist diese Eigenschaft NULL und die Barcodedaten werden in der Eigenschaft »Tag« als Klassenschlüssel verwendet. Die Einzelteilnummer, die von der Organisation, die für die Produktion und Herstellung des physikalischen Elements verantwortlich ist, zugewiesen wurde. Boolescher Wert, der angibt, ob die physikalische Komponente eingeschaltet (TRUE) oder ausgeschaltet (FALSE) ist. Eine physikalische Komponente ist austauschbar, wenn es aus seinem physikalischen Container entfernt werden kann, ohne die Funktion des Gesamtpakets zu beeinträchtigen. Eine Komponente ist auch austauschbar, wenn das Gerät bei der Entnahme ausgeschaltet sein muß. Wenn das Gerät bei der Entnahme eingeschaltet sein kann, ist das Element in Betrieb austauschbar. Ein aktualisierbarer Chip ist z.B. austauschbar. Eine physikalische Komponente ist austauschbar, wenn sie durch ein physikalisch unterschiedliches Element ersetzt (oder aktualisiert) werden kann. Bei einigen Computersystemen ist es z.B. möglich, den Hauptprozessorchip durch einen Chip mit einer höheren Taktfrequenz zu ersetzen. Alle austauschbaren Komponenten sind durch Vererbung ersetzbar. Eine Herstellernummer zum Identifizieren des physikalischen Elements. Die SKU-Nummer für das physikalische Element. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMARTaktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Eigenschaft »Tag« gibt das Kartengerät des Systems an. Beispiel: Kartengerät 1 Eine Zeichenfolge, die die Version des physikalischen Elements angibt.
612
Anhang B: WMI Klassenreferenz
B.131 Win32_OperatingSystem result as Integer = Reboot
Die Methode »Reboot« fährt das Computersystem herunter und startet es neu. Auf Computern mit Windows NT/2000 muß der aufrufende Prozeß die Berechtigung SE_SHUTDOWN_NAME haben. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|System Shutdown Functions|ExitWindowsEx|EWX_REBOOT result as Integer = Shutdown Die Methode »Shutdown« schließt Programme und DLLs, bis der Computer sicher ausgeschaltet werden kann. Alle Dateipuffer werden auf den Datenträger übertragen, und alle aktiven Prozesse werden beendet. Auf Computern mit Windows NT/2000 muß der aufrufende Prozeß die Berechtigung SE_SHUTDOWN_NAME haben. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|System Shutdown Functions|ExitWindowsEx|EWX_SHUTDOWN Die Methode »Win32Shutdown« enthält alle vom Win32-Betriebssystem result as Integer = Win32Shutdown(Flags as In- unterstützten Optionen zum Herunterfahren. Befehl wird von folgender API-Funktion bereitgestellt: teger, Reserved as Integer) Flags=Der Parameter »Flags« Win32API|System Shutdown Functions|ExitWindowsEx enthält Flags zum Herunterfahren des Computers. 0 ist der Befehl zum Abmelden. BitValues = Array: 0=Herunterfahren 1=Neustart 2=Erzwingen 3=Ausschalten Reserved=Der Parameter »Reserved« gibt eine Methode zum Erweitern von »Win32Shutdown« an. Derzeit wird dieser Parameter ignoriert. BootDevice Die Eigenschaft »BootDevice« gibt das Laufwerk an, von dem das Win32Betriebssystem gestartet wird. Beispiel: \\Device\Harddisk0. BuildNumber Die Eigenschaft »BuildNumber » gibt die Buildnummer des Betriebssystems an. Die Buildnummer ist genauer als die Versionsnummer des freigegebenen Produkts. Beispiel: 1381 BuildType Die Eigenschaft »BuildType« gibt den Buildtyp des Betriebssystems an. Beispiel: Verkaufsversion und getesteter Build. Caption Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an.
B.131 Win32_OperatingSystem CodeSet
CountryCode
CreationClassName
CSCreationClassName
CSDVersion
CSName
CurrentTimeZone Debug
613
Die Eigenschaft »CodeSet« gibt den Codepagewert für das Betriebssystem an. Eine Codepage enthält die vom Betriebssystem zum Übersetzen von Zeichenfolgen in verschiedene Sprachen verwendete Zeichentabelle. Wenn das Betriebssystem keine ANSI-Codepage verwendet, ist dieses Mitglied 0. Der Codepagewert kann mit bis zu sechs Zeichen in »CodeSet« definiert werden. Beispiel: 1255. Die Eigenschaft »CountryCode« gibt den Code für das vom Betriebssystem verwendete Land/Region an. Die Werte basieren auf internationalen Vorwahlen (IBM-Länder/Regionscodes). Die Zeichenfolge »CountryCode« kann den Länder/Regionscode mit bis zu sechs Zeichen definieren. Beispiel: 1 für die USA. Die Eigenschaft »CountryCode« gibt den Code für das vom Betriebssystem verwendete Land/Region an. Die Werte basieren auf internationalen Vorwahlen (IBM-Länder/Regionscodes). Die Zeichenfolge »CountryCode« kann den Länder/Regionscode mit bis zu sechs Zeichen definieren. Beispiel: 1 für die USA. Die Eigenschaft »CountryCode« gibt den Code für das vom Betriebssystem verwendete Land/Region an. Die Werte basieren auf internationalen Vorwahlen (IBM-Länder/Regionscodes). Die Zeichenfolge »CountryCode« kann den Länder/Regionscode mit bis zu sechs Zeichen definieren. Beispiel: 1 für die USA. Die Eigenschaft »CSDVersion« enthält eine mit Null beendete Zeichenfolge, die das letzte auf dem Computer installierte Service Pack angibt. Wenn kein Service Pack installiert ist, ist die Zeichenfolge NULL. Für Computer mit Windows 95 enthält diese Eigenschaft eine mit Null beendete Zeichenfolge, die beliebige zusätzliche Informationen über das Betriebssystem angibt. Beispiel: Service Pack 3. Die Eigenschaft »CSDVersion« enthält eine mit Null beendete Zeichenfolge, die das letzte auf dem Computer installierte Service Pack angibt. Wenn kein Service Pack installiert ist, ist die Zeichenfolge NULL. Für Computer mit Windows 95 enthält diese Eigenschaft eine mit Null beendete Zeichenfolge, die beliebige zusätzliche Informationen über das Betriebssystem angibt. Beispiel: Service Pack 3. »CurrentTimeZone« gibt den Offset des Betriebssystem von GMT (Greenwich Mean Time) in Minuten an. Die Zahl ist positiv, negativ oder Null. Die Eigenschaft »Debug« zeigt an, ob das Betriebssystem ein Test- bzw. Debugbuild ist. Testbuilds ermöglichen das Überprüfen von Fehlern und Verifizieren von Argumenten und bieten Systemdebugcode. Zusätzlicher Code in einer Testbinärdatei erstellt eine Kernel-Debuggerfehlermeldung und wechselt in den Debuggermodus. Somit kann die Fehlerursache und -quelle sofort ermittelt werden. Die Leistungsfähigkeit wird in Testbuilds aufgrund von Code, der nebenbei zusätzlich ausgeführt wird, beeinträchtigt. Werte: TRUE oder FALSE. TRUE zeigt an, daß die Debugversion von der Datei User.exe installiert wurde.
614
Anhang B: WMI Klassenreferenz
Description
Die Eigenschaft »Description« beschreibt das Windows-Betriebssystem. Benutzerschnittstellen, die das Bearbeiten dieser Beschreibung zulassen, beschränken diese auf 48 Zeichen. Distributed Boolescher Wert, der angibt, ob das Betriebssystem über mehrere Systemknoten verteilt ist. Wenn dies zutrifft, sollten die Knoten als Cluster gruppiert werden. ForegroundApplicationBoost Die Eigenschaft »ForegroundApplicationBoost« gibt die Erhöhung der Priorität für die Vordergrundanwendung an. Auf Computern mit Windows NT 4.0 und Windows 2000 erhält eine Anwendung mehr Quantumlängen. Der Wert 0 in »ForegroundApplicationBoost« gibt an, daß die Quantumlängen für den Wert 1 um 6 erhöht werden, dann um 12; und für den Wert 2 um 18. Auf Windows NT 3.51 und früheren Systemen wird die Planungspriorität um den Wert in dieser Eigenschaft erhöht. Der Standardwert ist 2. FreePhysicalMemory Der derzeit nicht verwendete bzw. verfügbare physikalische Speicher in KB. FreeSpaceInPagingFiles Die Gesamtzahl der KB, die in den Auslagerungsdateien des Betriebssystems zugeordnet werden können, ohne daß andere Seiten ausgelagert werden. FreeVirtualMemory Größe des verfügbaren virtuellen Speichers in KB. Die Größe kann berechnet werden, indem der verfügbare RAM und der verfügbare Auslagerungsbereich addiert werden (z.B. die Eigenschaften »FreePhysicalMemory« und »FreeSpaceInPagingFiles«). InstallDate Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. LastBootUpTime Zeitpunkt, zu dem das Betriebssystem zuletzt gestartet wurde. LocalDateTime Auf dem Betriebssystem angezeigtes lokales Datum und Uhrzeit. Locale Die Eigenschaft »Locale« gibt die vom Betriebssystem verwendete Sprachkennung an. Eine Sprachkennung ist eine numerische Standardabkürzung für ein Land oder eine Region. Jeder Sprache ist eine eindeutige Kennung (LANGID) zugewiesen. Dieser 16 Bit Wert besteht aus einer primären und einer sekundären Sprachkennung. Manufacturer Die Eigenschaft »Manufacturer« gibt den Hersteller des Betriebssystems an. Für Win32-Systeme ist dieser Wert »Microsoft Corporation«. MaxNumberOfProcesses Maximale Anzahl der Prozesskontexte, die das Betriebssystem unterstützen kann. Der Wert ist 0, wenn kein maximaler Wert festgelegt wurde. Dieses Objekt kann Fehler erkennen, die auftreten, wenn der maximale Wert erreicht ist. Geben Sie -1 ein, wenn der Wert unbekannt ist. MaxProcessMemorySize Maximaler Speicher, der einem Prozeß zugeordnet werden kann, in KB. Für Betriebssysteme ohne virtuellen Speicher, entspricht dieser Wert dem gesamten physikalischen Speicher minus dem vom BIOS und Betriebssystem verwendeten Speicher. Für einige Betriebssysteme kann dieser Wert unendlich sein und der Wert 0 zurückgegeben werden. Ansonsten kann der Wert eine Konstante sein, z.B. 2G oder 4G. Name Die geerbte Eigenschaft »Name« dient als Schlüssel einer Betriebssysteminstanz in einem Computersystem.
Anzahl der Benutzerlizenzen für das Betriebssystem. Geben Sie 0 ein, wenn die Anzahl unbegrenzt ist, oder 1, wenn sie unbekannt ist. Anzahl der Prozesskontexte, die geladen sind oder auf dem Betriebssystem ausgeführt werden. Anzahl der Benutzersitzungen, für die das Betriebssystem Statusinformationen speichert. Die Eigenschaft »Organization« gibt den Firmennamen des registrierten Benutzers an. Beispiel: Microsoft Corporation. Die Eigenschaft »OSLanguage« gibt an, welche Sprachversion des Betriebssystems installiert ist. Beispiel: 0x0807 (Deutschland, Schweiz) Die Eigenschaft »OSProductSuite« gibt installierte und lizenzierte Zusatzprodukte für das Betriebssystem an. Eine ganze Zahl, die den Typ des Betriebssystems angibt. Eine Zeichenfolge, die den Hersteller und Typ des Betriebssystems beschreibt. Wird verwendet, wenn die Eigenschaft »OSType« auf 1 (»Andere«) gesetzt ist. Das in »OtherTypeDescription« eingefügte Zeichenfolgenformat sollte dem Format der für »OSType« definierten Zeichenfolgen entsprechen. Der Wert für »OtherTypeDescription« sollte Null sein, wenn der Wert für »OSType« nicht 1 ist. Die Eigenschaft »PlusProductID« enthält die Product ID der Betriebssystemerweiterung Windows Plus! (falls installiert). Die Eigenschaft »PlusVersionNumber« enthält die Versionsnummer der Betriebssystemerweiterung Windows Plus! (falls installiert). Die Eigenschaft »Primary« gibt das primäre Betriebssystem an. Werte: TRUE oder FALSE. TRUE gibt an, daß dies das primäre Betriebssystem ist. Die Eigenschaft »QuantumLength« definiert die Anzahl der Zeiteinheiten pro Quantum. Ein Quantum ist eine Zeiteinheit für die Ausführung, die für eine Anwendung verfügbar ist, bevor der Planungsdienst zu einer anderen Anwendung wechselt. Wenn ein Thread ein Quantum ausführt, wird es für Anwendungen mit der gleichen Priorität an das Ende der Warteschlange verschoben. Die Länge eines Threadquantums hängt von den unterschiedlichen Windows-Plattformen ab. Nur Windows NT/Windows 2000. Die Eigenschaft »QuantumType« gibt ein festes oder variables Längenquantum an. Variable Längenquanten sind der Standard in Windows NT 4.0 Workstation und Windows 2000. Die Anwendung im Vordergrund hat ein längeres Quantum als die Anwendungen im Hintergrund. Feste Längenquanten sind der Standard in Windows NT Server. Ein Quantum ist eine Zeiteinheit für die Ausführung, die für eine Anwendung verfügbar ist, bevor der Planungsdienst zu einer anderen Anwendung wechselt. Wenn ein Thread ein Quantum ausführt, wird es für Anwendungen mit der gleichen Priorität an das Ende der Warteschlange verschoben. Die Länge eines Threadquantums hängt von den unterschiedlichen Windows-Plattformen ab. Nur Windows NT/Windows 2000.
Die Eigenschaft »RegisteredUser« gibt den Namen des registrierten Benutzers des Betriebssystems an. Beispiel: C:\Jane Doe Die Eigenschaft »SerialNumber« gibt die serielle Produktnummer des Betriebssystems an. Beispiel:10497-OEM-0031416-71674. Die Eigenschaft »ServicePackMajorVersion« gibt die maximale Versionsnummer des auf dem Computersystem installierten Service Packs an. Wenn kein Service Pack installiert ist, ist der Wert Null. Diese Eigenschaft ist für Computer gültig, auf denen mindestens Windows 2000 ausgeführt wird. Die Eigenschaft »ServicePackMinorVersion« gibt die minimale Versionsnummer des auf dem Computersystem installierten Service Packs an. Wenn kein Service Pack installiert ist, ist der Wert Null. Diese Eigenschaft ist für Computer gültig, auf denen mindestens Windows 2000 ausgeführt wird. Die Gesamtzahl der KB, die in den Auslagerungsdateien des Betriebssystems gespeichert werden können. Diese Zahl gibt nicht die eigentliche physikalische Größe der Auslagerungsdatei auf dem Datenträger an. 0 gibt an, daß keine Auslagerungsdateien vorhanden sind. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMARTaktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Eigenschaft »SystemDevice« gibt die physikalische Partition an, auf der das Betriebssystem installiert ist. Die Eigenschaft »SystemDirectory« gibt das Systemverzeichnis des Betriebssystems an. Beispiel: C:\WINDOWS\SYSTEM32 Gesamter Auslagerungsbereich in KB. Der Wert ist Null, wenn der Auslagerungsbereich nicht von Auslagerungsdateien definiert wurde. Einige Betriebssysteme definieren diese Konzepte. In UNIX können z.B. gesamte Prozesse ausgelagert werden. Größe des virtuellen Speichers in KB. Die Größe kann berechnet werden, indem der gesamte RAM und der Auslagerungsbereich addiert werden (z.B. der Speicher im System mit der Eigenschaft »SizeStoredInPagingFiles«). Die Gesamtgröße des verfügbaren physikalischen Speichers. Dieser Wert gibt nicht unbedingt die Gesamtgröße des physikalischen Speichers an, sondern den Speicher, der für das Betriebssystem verfügbar ist. Die Eigenschaft »Version« gibt die Versionsnummer des Betriebssystems an. Beispiel: 4.0 Die Eigenschaft »WindowsDirectory« gibt das Windows-Verzeichnis des Betriebssystems an. Beispiel: C:\WINDOWS
Die Referenz »Win32_OperatingSystem« stellt das Win32-Betriebssystem dar, das vom Produktupdate in dieser Zuordnung betroffen ist. Die Referenz »Win32_QuickFixEngineering« gibt »Win32_QuickFixEngineering« an, das auf das Betriebssystem in dieser Zuordnung angewendet wird.
B.133 Win32_PCMCIAController result as Integer = SetPowerState »SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Pa(PowerState as Integer, Time as rameter »PowerState« folgende Werte festgelegt werden: 1=»Kein EnergieDate/Time) sparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zuresult as Integer = Reset rückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »AvailabiliAvailability ty« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) Caption des Objekts an. Gibt den Fehlercode des Win32-Konfigurations-Managers an. ConfigManagerErrorCode Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. ConfigManagerUserConfig Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. CreationClassName Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Description Die Eigenschaft »DeviceID« gibt die Kennung an, die das Gerät von andeDeviceID ren Plug & Play-Geräten unterscheidet. Diese Eigenschaft wird von CIM_LogicalDevice abgeleitet.
618
Anhang B: WMI Klassenreferenz
ErrorCleared ErrorDescription
InstallDate
LastErrorCode Manufacturer MaxNumberControlled Name
PNPDeviceID PowerManagementCapabilities
PowerManagementSupported
ProtocolSupported Status
Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »Manufacturer« gibt den Hersteller des PCMCIAControllers an. Beispiel: Acme Maximale Anzahl der direkt adressierbaren Einheiten, die vom Controller unterstützt werden. Wenn der Wert unbekannt ist, geben Sie 0 ein. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Das vom Controller zum Zugriff auf gesteuerte Geräte verwendete Protokoll. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
B.134 Win32_PNPAllocatedResource StatusInfo
SystemCreationClassName
SystemName
TimeOfLastReset
619
Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Eigenschaft »TimeOfLastReset« gibt an, wann der Controller zuletzt zurückgesetzt (ausgeschalten oder erneut initialisiert) wurde.
Die Referenz »Antecedent« stellt die Eigenschaften einer für das logische Gerät verfügbaren Systemressource dar. Die Referenz »Dependent« stellt die Eigenschaften des logischen Geräts dar, das die zugeordneten Systemressourcen verwendet.
B.135 Win32_POTSModem result as Integer = SetPowerState »SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Pa(PowerState as Integer, Time as rameter »PowerState« folgende Werte festgelegt werden: 1=»Kein EnerDate/Time) giesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. result as Integer = Reset Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an.
Der Antwortmodus definiert die Modemeinstellungen für die automatische Anrufannahme und den Rückruf. Die Eigenschaft »AttachedTo« gibt den Anschluß an, mit dem das POTSModem verbunden ist. Beispiel: COM1. Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Die Eigenschaft »BlindOff« enthält die Befehlszeichenfolge, um vor dem Wählvorgang ein Freizeichen zu empfangen. Beispiel: X4. Die Eigenschaft »BlindOn« enthält die Befehlszeichenfolge, um unabhängig von einem Freizeichen zu wählen. Beispiel: X3. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »CompatibilityFlags« listet alle Protokolle für die Modemverbindung auf, die zu diesem Modem kompatibel sind. Beschreibt die Datenkomprimierungsmerkmale des Modems. Die Eigenschaft »CompressionOff« enthält die Befehlszeichenfolge zum Deaktivieren der Hardwarekomprimierung. Beispiel: S46=136. Die Eigenschaft »CompressionOn« enthält die Befehlszeichenfolge zum Aktivieren der Hardwarekomprimierung. Beispiel: S46=138. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Die Eigenschaft »ConfigurationDialog« enthält die Zeichenfolge zum Initialisieren des Modems. Diese Eigenschaft enthält Befehlszeichenfolgen von anderen Mitgliedern dieser Klasse. Das Array »CountriesSupported« enthält Zeichenfolgen, die die Länder/Regionen für das Modem angeben. Die Zeichenfolge »CountrySelected« gibt an, für welches Land/Region das Modem programmiert ist. Wenn mehrere Länder/Regionen unterstützt werden, definiert diese Eigenschaft das aktuelle Land. Die Zeichenfolge »CountrySelected« gibt an, für welches Land/Region das Modem programmiert ist. Wenn mehrere Länder/Regionen unterstützt werden, definiert diese Eigenschaft das aktuelle Land. Das Array »CurrentPasswords« enthält die für das Modem definierten Kennwörter. Dieses Array enthält möglicherweise aus Sicherheitsgründen keinen Eintrag.
Die Eigenschaft »Device Control Block« enthält die Einstellungen für ein serielles Kommunikationsgerät, z.B. ein Modem. Die Eigenschaft »Default« gibt an, ob das POTS-Modem das Standardmodem für das Win32-Computersystem ist. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die das POTSModem von anderen Geräten im System unterscheidet. Die Eigenschaft »DeviceLoader« gibt den Namen des Ladeprogramms für das Gerät an. Ein Ladeprogramm lädt und verwaltet Gerätetreiber und Enumeratoren für ein Gerät. Die Eigenschaft »DeviceType« gibt den physikalischen Typ des Modems an. »DialType« ist eine ganze Zahl, die angibt, ob die Tonwahl (Wert=1) oder die Impulswahl (Wert=2) verwendet wird. Es kann auch »Unbekannt« (0) definiert werden. Die Eigenschaft »DriverDate« gibt das Datum des Modemtreibers an. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die Eigenschaft »ErrorControlForced« enthält die Befehlszeichenfolge zum Aktivieren der Fehlerkorrektursteuerung beim Herstellen einer Verbindung, um deren Zuverlässigkeit zu erhöhen. Beispiel: +Q5S36=4S48=7. Beschreibt die Fehlerkorrekturmerkmale des Modems. Die Eigenschaft »ErrorControlOff« enthält die Befehlszeichenfolge zum Deaktivieren der Fehlersteuerung. Beispiel: +Q6S36=3S48=128. Die Eigenschaft »ErrorControlOn« enthält die Befehlszeichenfolge zum Aktivieren der Fehlersteuerung. Beispiel: +Q5S36=7S48=7. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Die Eigenschaft »FlowControlHard« enthält die Befehlszeichenfolge zum Aktivieren der Hardwareflußsteuerung. Die Flußsteuerung besteht aus Signalen, die gesendet werden, um zu überprüfen, ob die Computer Daten senden und empfangen können. Beispiel: &K1. Die Eigenschaft »FlowControlOff« enthält die Befehlszeichenfolge zum Deaktivieren der Flußsteuerung. Die Flußsteuerung besteht aus Signalen, die gesendet werden, um zu überprüfen, ob die Computer Daten senden und empfangen können. Beispiel: &K0. Die Eigenschaft »FlowControlSoft« enthält die Befehlszeichenfolge zum Aktivieren der Softwareflußsteuerung. Die Flußsteuerung besteht aus Signalen, die gesendet werden, um zu überprüfen, ob die Computer Daten senden und empfangen können. Beispiel: &K2.
Die Eigenschaft »InactivityScale« ist ein Multiplikator, der mit der Eigenschaft »InactivityTimeout« verwendet wird, um die Zeitüberschreitung einer Verbindung zu berechnen. »InactivityTimeout« definiert das Zeitlimit in Sekunden, nach dem die Telefonverbindung automatisch getrennt wird, wenn keine Daten ausgetauscht werden. Der Wert 0 gibt an, daß die Funktion vorhanden, aber nicht aktiviert ist. Die Eigenschaft »Index« gibt die Indexnummer für das POTS-Modem an. Beispiel: 0 Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Definiert die maximal einstellbare Kommunikationsgeschwindigkeit für das Telefonsystem. Definiert die maximal einstellbare Kommunikationsgeschwindigkeit des COM-Anschlusses für ein externes Modem. Geben Sie 0 ein, wenn der Wert unbekannt ist. »MaxNumberOfPasswords« gibt die Anzahl der definierbaren Kennwörter im Modem an. Geben Sie 0 ein, wenn diese Funktion nicht unterstützt wird. Die Eigenschaft »Model« gibt das Modell des POTS-Modems an. Beispiel: Sportster 56K External. Die Eigenschaft »ModemInfPath« gibt den Pfad zur INF-Datei des Modems an. Diese Datei enthält Initialisierungsinformationen für das Modem und den Modemtreiber. Beispiel: C:\WINNT\INF. Die Eigenschaft »ModemInfSection« gibt den Abschnittsnamen in der INF-Datei des Modems an, der die Modeminformationen enthält. Die Eigenschaft »ModulationBell« enthält die Befehlszeichenfolge zum Verwenden von Bell-Modulationen für 300 und 1200 bps. Beispiel: B1. Die Eigenschaft »ModulationCCITT« enthält die Befehlszeichenfolge zum Verwenden von CCITT-Modulationen für 300 und 1200 bps. Beispiel: B0. Beschreibt das Modulationsschema des Modems. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b Die Eigenschaft »PortSubClass« enthält die Zeichenfolge, die den Anschluß für das Modem definiert.
B.135 Win32_POTSModem PowerManagementCapabilities
PowerManagementSupported
Prefix Properties ProviderName Pulse
Reset ResponsesKeyName
RingsBeforeAnswer SpeakerModeDial
SpeakerModeOff
623
Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Die Eigenschaft »Prefix« gibt die Vorwahl für eine Amtsleitung an. Die Eigenschaft »Properties« listet alle Eigenschaften (und ihre Werte) für das Modem auf. Die Eigenschaft »ProviderName« gibt den Netzwerkpfad zum Computer mit den Modemdiensten an. Die Eigenschaft »Pulse« enthält die Befehlszeichenfolge für die Impulswahl. Die Impulswahl ist für Telefonleitungen erforderlich, die die Tonwahl nicht verarbeiten können. Beispiel: P. Die Eigenschaft »Reset« enthält die Befehlszeichenfolge zum Zurücksetzen des Modems für den nächsten Anruf. Beispiel: AT&F. Die Eigenschaft »ResponsesKeyName« enthält die Rückmeldung des Modems an das Betriebssystem während des Verbindungsvorgangs. Die ersten zwei Zeichen geben den Typ der Rückmeldung an. Die nächsten zwei Zeichen geben Informationen über die Verbindung an. Die nächsten zwei Zeichen werden nur für Aushandlungsvorgänge oder Verbindungsantwortcodes verwendet. Die nächsten acht Zeichen geben die Modemübertragungsrate in bps (Bits pro Sekunde) an. Die letzten acht Zeichen geben an, daß das Modem zu einer anderen Anschluß- oder DTE-Geschwindigkeit wechselt. Dieses Feld wird gewöhnlich nicht verwendet, da Modemverbindungen mit einer festgelegten Anschlussgeschwindigkeit hergestellt werden, ungeachtet der Modemübertragungsrate oder der DCE-Geschwindigkeit. Anzahl der Rufzeichen bevor das Modem einen eingehenden Anruf beantwortet. Die Eigenschaft »SpeakerModeDial« enthält die Befehlszeichenfolge zum Einschalten der Modemlautsprecher nach dem Wählvorgang, und Ausschalten, wenn die Verbindung hergestellt wurde. Beispiel: M1. Die Eigenschaft »SpeakerModeOff« enthält die Befehlszeichenfolge zum Ausschalten der Modemlautsprecher. Beispiel: M0.
Die Eigenschaft »SpeakerModeOn« enthält die Befehlszeichenfolge zum Einschalten der Modemlautsprecher. Beispiel: M2. Die Eigenschaft »SpeakerModeSetup« enthält die Befehlszeichenfolge zum Einschalten der Modemlautsprecher (bis die Verbindung hergestellt ist). Beispiel: M3. Die Eigenschaft »SpeakerVolumeHigh« enthält die Befehlszeichenfolge zum Einstellen der höchsten Lautstärke für die Modemlautsprecher. Beispiel: L3. Beschreibt die Lautstärkepegel der Modemtöne. Es kann z.B. hoch, mittel oder niedrig angegeben werden (Werte 3, 4 oder 5). Die Eigenschaft »SpeakerVolumeLow« enthält die Befehlszeichenfolge zum Einstellen der niedrigsten Lautstärke für die Modemlautsprecher. Beispiel: L1. Die Eigenschaft »SpeakerVolumeMed« enthält die Befehlszeichenfolge zum Einstellen der mittleren Lautstärke für die Modemlautsprecher. Beispiel: L2. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während dem erneuten Spiegeln eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Eigenschaft »StringFormat« beschreibt den Zeichentyp für den durch das Modem übertragenen Text. Gibt an, ob Rückrufe vom Modem unterstützt werden. Boolescher Wert, der angibt, daß die synchrone und die asynchrone Kommunikation unterstützt werden. Boolescher Wert, der angibt, daß die synchrone und die asynchrone Kommunikation unterstützt werden. Boolescher Wert, der angibt, daß die synchrone und die asynchrone Kommunikation unterstützt werden. Die Eigenschaft »Terminator« enthält das Zeichen, das das Ende einer Befehlszeichenfolge markiert. Beispiel: Die Eigenschaft »Terminator« enthält das Zeichen, das das Ende einer Befehlszeichenfolge markiert. Beispiel:
B.136 Win32_POTSModemToSerialPort Tone
625
Die Eigenschaft »Tone« enthält die Befehlszeichenfolge zum Verwenden der Tonwahl. Die Telefonleitung muß die Tonwahl unterstützen. Beispiel: T. Die Eigenschaft »VoiceSwitchFeature« enthält die Befehlszeichenfolge zum Aktivieren der Sprachfunktionen des Modems. Beispiel: AT+V.
VoiceSwitchFeature
B.136 Win32_POTSModemToSerialPort AccessState
Antecedent Dependent NegotiatedDataWidth
NegotiatedSpeed
NumberOfHardResets NumberOfSoftResets
Die Eigenschaft »AccessState« gibt an, ob der Controller das Gerät steuert oder darauf zugreift (Wert=1) oder nicht (Wert=2). Es kann auch der Wert »Unbekannt« (0) definiert werden. Diese Informationen sind erforderlich, wenn ein logisches Gerät von mehreren Controllern gesteuert werden kann. Die Referenz »Antecedent« stellt den seriellen Anschluß dar, der vom Modem verwendet wird. Die Referenz »Dependent« stellt das POTS-Modem dar, das den seriellen Anschluß verwendet. Wenn mehrere Bus- und/oder Verbindungsdatenbreiten möglich sind, definiert die Eigenschaft »NegotiatedDataWidth« die verwendete Datenbreite in Bits. Wenn die Datenbreite nicht ausgehandelt wurde oder diese Informationen nicht verfügbar sind, sollte der Wert der Eigenschaft 0 sein. Wenn mehrere Bus- und/oder Verbindungsgeschwindigkeiten möglich sind, definiert die Eigenschaft »NegotiatedSpeed« die verwendete Geschwindigkeit in Bits pro Sekunde. Wenn die Verbindungs- oder Busgeschwindigkeit nicht ausgehandelt wurde oder diese Informationen nicht verfügbar sind, sollte der Wert der Eigenschaft 0 sein. Anzahl der vom Controller ausgelösten Kaltstarts. Anzahl der vom Controller ausgelösten Warmstarts.
B.137 Win32_PageFile result as Integer = TakeOwnerShip
Die Methode »TakeOwnerShip« übernimt den Besitz der logischen Datei, die im Objektpfad angegeben ist. Wenn die logische Datei ein Verzeichnis ist, übernimt die Methode den Besitz aller Dateien und Unterverzeichnisse, die im Verzeichnis enthalten sind. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFSDateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig.
626
Anhang B: WMI Klassenreferenz
result as Integer = ChangeSecurityPermissions (Option as Integer, SecurityDescriptor as CIM-Object)
result as Integer = Copy (FileName as String)
result as Integer = Rename (FileName as String)
Die Methode »ChangeSecurityPermissions« ändert die Sicherheitsrechte für die im Objektpfad angegebene logische Datei. Wenn die logische Datei ein Verzeichnis ist, werden die Sicherheitsrechte aller im Verzeichnis enthaltener Dateien und Unterverzeichnisse geändert. Die Methode gibt den Wert 0 zurück, wenn die Rechte geändert wurden. Jeder andere Wert zeigt einen Fehler an. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »Copy« kopiert die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist, in das im Eingabeparameter festgelegte Verzeichnis. Der Wert 0 wird zurückgegeben, wenn die Datei kopiert wurde. Andere Werte zeigen einen Fehler an. Das Kopieren wird nicht unterstützt, wenn eine vorhandene Datei überschrieben werden muß. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »Rename« benennt die logische Datei (oder das Verzeichnis) um, die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei umbenannt wurde. Andere Werte zeigen einen Fehler an. Die Umbenennung wird nicht unterstützt, wenn das Ziel ein anderes Laufwerk ist oder eine vorhandene Datei überschrieben werden muß. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig.
B.137 Win32_PageFile result as Integer = Delete
result as Integer = Compress
result as Integer = Uncompress
result as Integer = TakeOwnerShipEx (Recursive as Boolean, StartFileName as String)
627
Die Methode »Delete« löscht die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei gelöscht wurde. Andere Werte zeigen einen Fehler an. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »Compress« komprimiert die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei komprimiert wurde. Andere Werte zeigen einen Fehler an. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »Uncompress« dekomprimiert die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei dekomprimiert wurde. Andere Werte zeigen einen Fehler an. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »TakeOwnerShipEx« übernimt den Besitz der logischen Datei, die im Objektpfad angegeben ist. Wenn die logische Datei ein Verzeichnis ist, übernimt die Methode den Besitz aller Dateien und Unterverzeichnisse, die im Verzeichnis enthalten sind. Der Wert 0 wird zurückgegeben, wenn der Vorgang erfolgreich beendet wurde. Andere Werte zeigen einen Fehler an. »TakeOwnerShipEx« ist eine erweiterte Version der Methode »TakeOwnerShip«. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig.
628
Anhang B: WMI Klassenreferenz
Die Methode »ChangeSecurityPermissionsEx« ändert die Sicherheitsrechte für die im Objektpfad angegebene logische Datei. Wenn die logische Datei ein Verzeichnis ist, werden die Sicherheitsrechte aller im Verzeichnis enthaltener Dateien und Unterverzeichnisse geändert. Die Methode gibt den Wert 0 zurück, wenn die Rechte geändert wurden. Jeder andere Wert zeigt einen Fehler an. »ChangeSecurityPermissionsEx« ist eine erweiterte Version der Methode »ChangeSecurityPermissions«. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFSDateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »CopyEx« kopiert die logische Datei (oder das Verzeichnis), die result as Integer = CopyEx (FileName as String, Recursive im Objektpfad angegeben ist, in das im Parameter »FileName« festgelegte as Boolean, StartFileName as Verzeichnis. Der Wert 0 wird zurückgegeben, wenn die Datei kopiert wurde. Andere Werte zeigen einen Fehler an. Das Kopieren wird nicht unterstützt, String) wenn eine vorhandene Datei überschrieben werden muß. »CopyEx« ist eine erweiterte Version der Methode »Copy«. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. result as Integer = DeleteEx Die Methode »DeleteEx« löscht die logische Datei (oder das Verzeichnis), die (StartFileName as String) im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei gelöscht wurde. Andere Werte zeigen einen Fehler an. »DeleteEx« ist eine erweiterte Version der Methode »Delete«. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. result as Integer = ChangeSecurityPermissionsEx(Option as Integer, Recursive as Boolean, SecurityDescriptor as CIM-Object, StartFileName as String)
B.137 Win32_PageFile result as Integer = CompressEx(Recursive as Boolean, StartFileName as String)
result as Integer = UncompressEx(Recursive as Boolean, StartFileName as String)
result as Boolean = GetEffectivePermission (Permissions as Integer) AccessMask
Archive Caption Compressed
629
Die Methode »CompressEx« komprimiert die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei komprimiert wurde. Andere Werte zeigen einen Fehler an. »CompressEx« ist eine erweiterte Version der Methode »Compress«. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »UncompressEx« dekomprimiert die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei dekomprimiert wurde. Andere Werte zeigen einen Fehler an. »UncompressEx« ist eine erweiterte Version der Methode »Uncompress«. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »GetEffectivePermission« bestimmt, ob der Aufrufer über die vom Argument »Permission« angegebenen zusammengesetzten Berechtigungen für das Dateiobjekt und ggf. die Freigabe verfügt, auf der sich die Datei oder das Verzeichnis befindet. Die Eigenschaft »AccessMask« ist ein Bitarray, das die Zugriffsrechte für die Datei oder das Verzeichnis des Benutzers oder der Gruppe darstellt, für die die Instanz zurückgegeben wird. Diese Eigenschaft wird nur in Windows NT und Windows 2000 unterstützt. Auf Windows 98 und Windows NT/2000 FAT-Datenträgern wird FULL_ACCESS zurückgegeben, da keine Objektsicherheit festgelegt ist. Die Eigenschaft »Archive« ist ein boolescher Wert, der angibt, ob die Datei archiviert werden soll. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »Compressed« ist ein boolescher Wert, der angibt, daß die Datei komprimiert ist.
Die Eigenschaft »CompressionMethod« ist eine formfreie Zeichenfolge, die den Algorithmus oder das Programm zum Komprimieren der logischen Datei angibt. Wenn es nicht möglich ist, das Komprimierungsschema zu beschreiben, wird Folgendes angegeben: »Unbekannt«, wenn nicht bekannt ist, ob die logische Datei komprimiert ist. »Komprimiert«, wenn die Datei komprimiert ist, aber das Komprimierungsschema unbekannt ist. »Nicht komprimiert«, wenn die logische Datei nicht komprimiert ist. Die Eigenschaft »CreationClassName« gibt den Klassennamen an. Die Eigenschaft »CreationDate« gibt das Erstellungsdatum der Datei an. Die Eigenschaft »CSCreationClassName« gibt die Klasse des Computersystems an. Die Eigenschaft »CSName« gibt den Namen des Computersystems an. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »Drive« gibt den Laufwerkbuchstaben (einschließlich Doppelpunkt) der Datei an. Beispiel: c: Die Eigenschaft »EightDotThreeFileName« gibt den DOS-kompatiblen Namen der Datei an. Beispiel: c:\progra~1 Die Eigenschaft »Encrypted« ist ein boolescher Wert, der angibt, daß die Datei verschlüsselt ist. Die Eigenschaft »EncryptionMethod« ist eine formfreie Zeichenfolge, die den Algorithmus oder das Programm zum Verschlüsseln der logischen Datei angibt. Wenn es z.B. aus Sicherheitsgründen nicht möglich ist, das Verschlüsselungsschema zu beschreiben, wird Folgendes angegeben: »Unbekannt«, wenn nicht bekannt ist, ob die logische Datei verschlüsselt ist. »Verschlüsselt«, wenn die Datei verschlüsselt ist, aber das Verschlüsselungsschema unbekannt ist. »Nicht verschlüsselt«, wenn die logische Datei nicht verschlüsselt ist. Die Eigenschaft »Extension« gibt die Erweiterung der Datei ohne Punkt an. Beispiel: txt, mof, mdb. Die Eigenschaft »FileName« gibt den Namen der Datei ohne Erweiterung an. Beispiel: autoexec Die Eigenschaft »FileSize« gibt die Datengröße in Bytes an. Die Eigenschaft »FileType« stellt den in der Eigenschaft »Extension« angegebenen Dateityp dar. Die Eigenschaft »FreeSpace« gibt den für die Auslagerungsdatei verfügbaren Speicherplatz an. Das Betriebssystem kann die Auslagerungsdatei bis zum vom Benutzer festgelegten Limit vergrößern. Dieses Mitglied zeigt den Unterschied zwischen dem aktuell zugesicherten Speicher und der aktuellen Größe der Auslagerungsdatei an. Die maximal mögliche Größe der Auslagerungsdatei wird nicht angezeigt. Die Eigenschaft »FSCreationClassName« gibt die Klasse des Dateisystems an. Die Eigenschaft »FSName« gibt den Namen des Dateisystems an. Die Eigenschaft »Hidden« ist ein boolescher Wert, der angibt, ob die Datei versteckt ist.
Die Eigenschaft »InitialSize« gibt die ursprüngliche Größe der Auslagerungsdatei an. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »InUseCount« gibt die Anzahl der geöffneten Instanzen einer Datei an. Die Eigenschaft »LastAccessed« gibt an, wann zuletzt auf die Datei zugegriffen wurde. Die Eigenschaft »LastModified« gibt an, wann die Datei zuletzt geändert wurde. Herstellerzeichenfolge aus der Versionsressource, falls vorhanden. Die Eigenschaft »MaximumSize« gibt die vom Benutzer festgelegte maximale Größe der Auslagerungsdatei an. Dieses Limit darf nicht überschritten werden. Die Eigenschaft »Name« gibt den Namen der Auslagerungsdatei an. Beispiel: C:\PAGEFILE.SYS Die Eigenschaft »Path« gibt den Pfad der Datei an, einschließlich umgekehrter Schrägstriche am Anfang und am Ende. Beispiel: \windows\system\ Die Eigenschaft »Readable« ist ein boolescher Wert, der angibt, ob die Datei gelesen werden kann. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während dem erneuten Spiegeln eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Eigenschaft »System« ist ein boolescher Wert, der angibt, ob die Datei eine Systemdatei ist. Versionszeichenfolge aus der Versionsressource, falls vorhanden. Die Eigenschaft »Writeable« ist ein boolescher Wert, der angibt, ob die Datei geschrieben werden kann.
B.138 Win32_PageFileElementSetting Element Setting
Die Referenz »Element« stellt die Eigenschaften einer Auslagerungsdatei dar, während das Win32-System verwendet wird. Die Referenz »Setting« stellt die ursprünglichen Einstellungen einer Auslagerungsdatei dar, wenn das Win32-System gestartet wird.
632
Anhang B: WMI Klassenreferenz
B.139 Win32_PageFileSetting Caption Description InitialSize MaximumSize Name SettingID
Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Die Eigenschaft »InitialSize« gibt die ursprüngliche Größe der Auslagerungsdatei an. Beispiel: 139 Die Eigenschaft »MaximumSize« gibt die maximale Größe der Auslagerungsdatei an. Beispiel: 178 Die Eigenschaft »Name« gibt den Pfad und Namen der Auslagerungsdatei an. Beispiel: C:\PAGEFILE.SYS Die Kennung für das Objekt »CIM_Setting«.
B.140 Win32_PageFileUsage AllocatedBaseSize
Caption CurrentUsage Description InstallDate Name PeakUsage Status
Die Eigenschaft »AllocatedBaseSize« gibt den für die Auslagerungsdatei reservierten Speicherplatz an. Dieser Wert entspricht der Eigenschaft »Win32_PageFileSetting« unter »InitialSize« und »MaximumSize«, die beim Systemstart festgelegt wird. Beispiel: 178 MB Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »CurrentUsage« gibt den von der Auslagerungsdatei belegten Speicherplatz an. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »Name« gibt den Namen der Auslagerungsdatei an. Beispiel: C:\PAGEFILE.SYS Die Eigenschaft »PeakUsage« gibt die am meisten verwendete Auslagerungsdatei an. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
B.141 Win32_ParallelPort
633
B.141 Win32_ParallelPort »SetPowerState« definiert den gewünschten Energiestatus und den Zeitresult as Integer = SetPowerState(PowerState as In- punkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Parameter »PowerState« folgende Werte festgelegt werden: 1=»Kein Enerteger, Time as Date/Time) giesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. result as Integer = Reset Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Availability Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Capabilities Eine Aufzählung, die die Funktionen des parallelen Controllers angibt. CapabilityDescriptions Formfreie Zeichenfolgen mit genaueren Erklärungen zu den im Datenfeld »Capabilities« angezeigten Funktionen des parallelen Controllers. Jeder Eintrag in diesem Array bezieht sich auf den Eintrag im Datenfeld »Capabilities« unter dem gleichen Index. Caption Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. ConfigManagerErrorCode Gibt den Fehlercode des Win32-Konfigurations-Managers an. ConfigManagerUserConfig Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. CreationClassName Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Description Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. DeviceID Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die den parallelen Anschluß angibt. DMASupport True gibt an, daß DMA vom parallelen Anschluß unterstützt wird.
634
Anhang B: WMI Klassenreferenz
ErrorCleared ErrorDescription
InstallDate
LastErrorCode MaxNumberControlled Name
OSAutoDiscovered
PNPDeviceID PowerManagementCapabilities
PowerManagementSupported
ProtocolSupported
Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Maximale Anzahl der direkt adressierbaren Einheiten, die vom Controller unterstützt werden. Wenn der Wert unbekannt ist, geben Sie 0 ein. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Die Eigenschaft »OSAutoDiscovered« gibt an, ob der parallele Anschluß automatisch vom Betriebssystem gefunden oder manuell über die Systemsteuerung hinzugefügt wurde. Werte: TRUE oder FALSE. TRUE gibt an, daß der parallele Anschluß automatisch gefunden wurde. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Das vom Controller zum Zugriff auf gesteuerte Geräte verwendete Protokoll.
B.142 Win32_Patch Status
StatusInfo
SystemCreationClassName
SystemName
TimeOfLastReset
Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während dem erneuten Spiegeln eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Eigenschaft »TimeOfLastReset« gibt an, wann der Controller zuletzt zurückgesetzt (ausgeschalten oder erneut initialisiert) wurde.
Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Die Kennung für das Objekt »CIM_Setting«.
Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Die Kennung für das Objekt »CIM_Setting«.
Eine Zeichenfolge, die die physikalische Speicherbank identifiziert, z.B. Bank 0 oder Bank A. Die Gesamtkapazität des physikalischen Speichers in Byte. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. »CreationClassName« gibt den Namen der Klasse oder Teilklasse an, die beim Erstellen einer Instanz verwendet wird. Wenn diese Eigenschaft mit anderen Schlüsseleigenschaften dieser Klasse verwendet wird, können alle Instanzen der Klasse und der Teilklassen eindeutig erkannt werden. Die Datenbreite des physikalischen Speichers in Bits. Eine Datenbreite von 0 und eine Gesamtbreite von 8 gibt an, daß der Speicher nur für Fehlerkorrekturbits verwendet wird. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DeviceLocator« gibt die Bezeichnung des Sockels oder der Platine mit dem Speicher an. Beispiel: SIMM 3 Der Implementierungsfaktor für den Chip. Z.B. können folgende Werte angegeben werden: SIMM (7), TSOP (9) oder PGA (10). Eine physikalische Komponente ist in Betrieb austauschbar, wenn sie durch ein physikalisch gleichwertiges Element ersetzt werden kann, während das enthaltende Paket eingeschaltet ist. Eine Lüfterkomponente kann z.B. in Betrieb austauschbar sein. Alle in Betrieb austauschbaren Komponenten sind durch Vererbung ersetzbar. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »InterleaveDataDepth« gibt die maximale Anzahl der aufeinander folgenden Datenzeilen an, auf die in einer Übertragung (interleaved) vom Speichergerät zugegriffen werden kann. Wenn der Wert 0 ist, ist der Speicher nicht interleaved.
B.145 Win32_PhysicalMemory InterleavePosition
Manufacturer MemoryType Model Name
OtherIdentifyingInfo
PartNumber
PositionInRow
PoweredOn Removable
Replaceable
SerialNumber SKU Speed
637
Gibt die Position des physikalischen Speichers in einem Interleave an. 0 gibt nicht interleaved an, 1 die erste Position, 2 die zweite Position, usw. In einem 2:1 Interleave gibt der Wert 1 z.B. an, daß sich der Speicher in einer geraden Position befindet. Der Name der Organisation, die für die Herstellung des physikalischen Elements verantwortlich ist. Der Typ des physikalischen Arbeitsspeichers. Der Name der physikalischen Komponente. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. »OtherIdentifyingInfo« erfaßt außer Bestandskennzeichnungsinformationen auch Daten, die dazu verwendet werden können, physikalische Elemente zu identifizieren. Ein Beispiel dafür sind Barcodedaten, die mit einem Element verbunden sind, das auch über eine Bestandskennzeichnung verfügt. Hinweis: Wenn nur Barcodedaten verfügbar sind, die allein als Elementschlüssel verwendet werden können, ist diese Eigenschaft NULL, und die Barcodedaten werden in der Eigenschaft »Tag« als Klassenschlüssel verwendet. Die Einzelteilnummer, die von der Organisation, die für die Produktion und Herstellung des physikalischen Elements verantwortlich ist, zugewiesen wurde. Gibt die Position des physikalischen Speichers in einer Reihe an. Wenn z.B. zwei 8-Bit Speichergeräte für eine 16-Bit Reihe erforderlich sind, gibt der Wert 2 an, daß dieser Speicher das zweite Gerät ist. Der Wert 0 ist in dieser Eigenschaft ungültig. Boolescher Wert, der angibt, ob die physikalische Komponente eingeschaltet (TRUE) oder ausgeschaltet (FALSE) ist. Eine physikalische Komponente ist austauschbar, wenn es aus seinem physikalischen Container entfernt werden kann, ohne die Funktion des Gesamtpakets zu beeinträchtigen. Eine Komponente ist auch austauschbar, wenn das Gerät bei der Entnahme ausgeschaltet sein muß. Wenn das Gerät bei der Entnahme eingeschaltet sein kann, ist das Element in Betrieb austauschbar. Ein aktualisierbarer Chip ist z.B. austauschbar. Eine physikalische Komponente ist austauschbar, wenn sie durch ein physikalisch unterschiedliches Element ersetzt (oder aktualisiert) werden kann. Bei einigen Computersystemen ist es z.B. möglich, den Hauptprozessorchip durch einen Chip mit einer höheren Taktfrequenz zu ersetzen. Alle austauschbaren Komponenten sind durch Vererbung ersetzbar. Eine Herstellernummer zum Identifizieren des physikalischen Elements. Die SKU-Nummer für das physikalische Element. Die Geschwindigkeit des physikalischen Speichers in Nanosekunden.
638
Anhang B: WMI Klassenreferenz
Status
Tag
TotalWidth
TypeDetail Version
Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMARTaktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Eigenschaft »Tag« enthält eine Zeichenfolge, die das physikalische Speichergerät eindeutig kennzeichnet, der von einer Win32_PhysicalMemoryInstanz angegeben wird. Beispiel: Physikalischer Speicher 1 Gesamtbreite des physikalischen Speicher in Bits, einschließlich Prüf- und Fehlerkorrekturbits. Wenn keine Fehlerkorrekturbits vorhanden sind, muß der Wert in dieser Eigenschaft mit dem Wert in der Eigenschaft »DataWidth« übereinstimmen. Die Eigenschaft »TypeDetail« gibt den physikalischen Speichertyp in Win32_PhysicalMemory an. Eine Zeichenfolge, die die Version des physikalischen Elements angibt.
B.146 Win32_PhysicalMemoryArray result as Integer = IsCompatible (ElementToCheck???)
Caption CreationClassName
Depth Description Height HotSwappable
Die Methode »IsCompatible« gibt an, ob das physikalische Element im physikalischen Paket enthalten ist oder hinzugefügt werden kann. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. »CreationClassName« gibt den Namen der Klasse oder Teilklasse an, die beim Erstellen einer Instanz verwendet wird. Wenn diese Eigenschaft mit anderen Schlüsseleigenschaften dieser Klasse verwendet wird, können alle Instanzen der Klasse und der Teilklassen eindeutig erkannt werden. Die Tiefe des physikalischen Pakets in Zoll. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Höhe des physikalischen Pakets in Zoll. Ein physikalisches Paket kann in Betrieb ausgetauscht werden, wenn es durch ein physikalisch unterschiedliches, aber gleichwertiges ersetzt werden kann, während der Container eingeschaltet ist. Ein Laufwerkpaket das mit SCASteckverbindungen eingefügt wird, ist z.B. in Betrieb austauschbar. Alle in Betrieb austauschbaren Pakete sind ersetzbar.
B.146 Win32_PhysicalMemoryArray InstallDate
Location Manufacturer MaxCapacity
MemoryDevices MemoryErrorCorrection Model Name
OtherIdentifyingInfo
PartNumber
PoweredOn Removable
639
Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »Location« gibt die physikalische Position der Speicherarrays an. Der Name der Organisation, die für die Herstellung des physikalischen Elements verantwortlich ist. Die Eigenschaft »MaxCapacity« gibt die maximale Speichergröße für dieses Speicherarray in Byte an. Wenn die Größe unbekannt ist, ist der Wert dieser Eigenschaft 0. Die Eigenschaft »MemoryDevices« gibt die Anzahl der im Speicherarray verfügbaren physikalischen Steckplätze an. Die Eigenschaft »MemoryErrorCorrection« gibt den Typ der vom Speicherarray verwendeten Fehlerkorrektur an. Der Name der physikalischen Komponente. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. »OtherIdentifyingInfo« erfaßt außer Bestandskennzeichnungsinformationen auch Daten, die dazu verwendet werden können, physikalische Elemente zu identifizieren. Ein Beispiel dafür sind Barcodedaten, die mit einem Element verbunden sind, das auch über eine Bestandskennzeichnung verfügt. Hinweis: Wenn nur Barcodedaten verfügbar sind, die allein als Elementschlüssel verwendet werden können, ist diese Eigenschaft NULL, und die Barcodedaten werden in der Eigenschaft »Tag« als Klassenschlüssel verwendet. Die Einzelteilnummer, die von der Organisation, die für die Produktion und Herstellung des physikalischen Elements verantwortlich ist, zugewiesen wurde. Boolescher Wert, der angibt, ob die physikalische Komponente eingeschaltet (TRUE) oder ausgeschaltet (FALSE) ist. Ein physikalisches Paket ist austauschbar, wenn es aus seinem physikalischen Container entfernt werden kann, ohne die Funktion des Gesamtpakets zu beeinträchtigen. Ein Paket ist auch austauschbar, wenn das Gerät bei der Entnahme ausgeschaltet sein muß. Wenn das Gerät bei der Entnahme eingeschaltet sein kann, ist das Element in Betrieb austauschbar. Eine zusätzliche Batterie in einem Laptop ist z.B. austauschbar, und ein Laufwerkpaket, das mit SCA-Steckverbindungen eingefügt wird, ist in Betrieb austauschbar. Ein Laptopbildschirm und eine nicht redundante Stromversorgung sind nicht austauschbar. Wenn diese Komponenten entfernt werden, werden die Funktionen des Gesamtpakets beeinträchtigt.
640
Anhang B: WMI Klassenreferenz
Replaceable
SerialNumber SKU Status
Tag Use Version Weight Width
Ein physikalisches Paket ist austauschbar, wenn sie durch ein physikalisch unterschiedliches Element ersetzt (oder aktualisiert) werden kann. Bei einigen Computersystemen ist es z.B. möglich, den Hauptprozessorchip durch einen Chip mit einer höheren Taktfrequenz zu ersetzen. Ein weiteres Beispiel ist ein Energieversorgungspaket auf Gleitschienen. Alle austauschbaren Pakete sind durch Vererbung ersetzbar. Eine Herstellernummer zum Identifizieren des physikalischen Elements. Die SKU-Nummer für das physikalische Element. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Eigenschaft »Tag« enthält eine Zeichenfolge, die das physikalische Speicherarray eindeutig kennzeichnet. Beispiel: Physikalisches Speicherarray 1 Die Eigenschaft »Use« gibt an, wie der Arbeitsspeicher im Computersystem verwendet wird. Eine Zeichenfolge, die die Version des physikalischen Elements angibt. Das Gewicht des physikalischen Pakets in Pfund. Die Breite des physikalischen Pakets in Zoll.
Die Referenz »GroupComponent« stellt das physikalische Speicherarray dar, das den physikalischen Speicher enthält. Eine formfreie Zeichenfolge, die die Position des physikalischen Element im physikalischen Paket darstellt. Diese Zeichenfolge kann als Zusatz oder zum Erstellen des CIM_Location-Objekts verwendet werden. Die Referenz »PartComponent« stellt den im physikalischen Speicherarray enthaltenen physikalischen Speicher dar.
B.148 Win32_PnPDevice SameElement SystemElement
Die Referenz »SameElement« stellt die logischen Geräteeigenschaften dar, die dem Plug & Play-Gerät zugeordnet sind. Die Referenz »SystemElement« stellt das dem Plug & Play-Gerät zugeordnete logische Gerät dar.
B.149 Win32_PnPEntity
641
B.149 Win32_PnPEntity result as Integer = SetPowerState »SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Pa(PowerState as Integer, Time as rameter »PowerState« folgende Werte festgelegt werden: 1=»Kein EnerDate/Time) giesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. result as Integer = Reset Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Availability Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Caption Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. ClassGuid Die Eigenschaft »ClassGuid« gibt die GUID (Globally Unique Identifier) für das Plug & Play-Gerät an. ConfigManagerErrorCode Gibt den Fehlercode des Win32-Konfigurations-Managers an. ConfigManagerUserConfig Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. CreationClassName Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Description Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. DeviceID Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die das Plug & Play-Gerät angibt. ErrorCleared Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. ErrorDescription Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge.
642
Anhang B: WMI Klassenreferenz
InstallDate
LastErrorCode Manufacturer Name
PNPDeviceID PowerManagementCapabilities
PowerManagementSupported
Service
Status
Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »Manufacturer« gibt den Hersteller des Plug & PlayGeräts an. Beispiel: Acme Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Die Eigenschaft »Service« gibt den Namen des Dienstes an, der das Plug & Play-Gerät unterstützt. Siehe auch: »Win32_SystemDriverPNPEntity«. Beispiel: atapi Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
B.150 Win32_PointingDevice StatusInfo
SystemCreationClassName
SystemName
643
Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft.
B.150 Win32_PointingDevice result as Integer = SetPowerState »SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Pa(PowerState as Integer, Time as rameter »PowerState« folgende Werte festgelegt werden: 1=»Kein EnerDate/Time) giesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. result as Integer = Reset Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Availability Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet.
HardwareType InfFileName InfSection InstallDate IsLocked LastErrorCode Manufacturer Name
NumberOfButtons PNPDeviceID PointingType
Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die das Zeigegerät von anderen Geräten im System unterscheidet. Die Eigenschaft »DeviceInterface« gibt den für das Zeigegerät verwendeten Schnittstellentyp an. Die Eigenschaft »DoubleSpeedThreshold« enthält einen oder zwei Beschleunigungswerte. Die Sensitivität des Zeigegeräts wird verdoppelt, wenn das Zeigegerät über eine größere Entfernung verschoben wird, als der Schwellenwert angibt. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Eine ganze Zahl, die angibt, ob das Zeigegerät für den rechtshändigen (Wert =2) oder linkshändigen (Wert=3) Betrieb konfiguriert ist. Es können auch die Werte »Unbekannt« (0) und »Nicht zutreffend« (1) definiert werden. Die Eigenschaft »HardwareType« gibt den für das Win32-Zeigegerät verwendeten Hardwaretyp an. Beispiel: MICROSOFT PS2-MAUS. Die Eigenschaft »InfFileName« gibt den Namen der INF-Datei für das Win32-Zeigegerät an. Beispiel: ab.inf Die Eigenschaft »InfSection« gibt den Abschnitt in der INF-Datei an, der die Konfigurationsinformationen für das Win32-Zeigegerät enthält. Die Eigenschaft »InstallDate« gibt an, wann es installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Gibt an, ob das Gerät gesperrt ist, um die Benutzereingabe oder -ausgabe zu verhindern. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »Manufacturer« gibt den Hersteller des Prozessors an. Beispiel: GenuineSilicon Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Die Eigenschaft »NumberOfButtons« gibt die Anzahl der Tasten auf dem Zeigegerät an. Beispiel: 2 Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b Typ des Zeigegeräts.
Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Die Eigenschaft »QuadSpeedThreshold« enthält einen von zwei Beschleunigungsschwellenwerten. Die Geschwindigkeit der Zeigerbewegung wird verdoppelt, wenn das Zeigegerät über eine Distanz verschoben wird, die größer als dieser Wert ist. Da die Geschwindigkeit nach Übereinstimmung mit »DoubleSpeedThreshold« erhöht wird, bewegt sich der Zeiger viermal so schnell. Die Eigenschaft »Resolution« gibt die Trackingauflösung an. Beispiel: 0 Die Eigenschaft »SampleRate« gibt die Rate an, mit der das Anzeigegerät auf Eingabeinformationen abgefragt wird. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Eigenschaft »Synch« gibt den Zeitraum an, nachdem der nächste Interrupt den Start eines neuen Gerätepakets (unvollständige Pakete werden verworfen) angeben soll. Wenn ein Interrupt unterbrochen wird, kann der Zeigegerätetreiber die interne Darstellung des Paketstatus mit dem Hardwarestatus synchronisieren.
646
Anhang B: WMI Klassenreferenz
SystemCreationClassName
SystemName
Die Eigenschaft »Synch« gibt den Zeitraum an, nachdem der nächste Interrupt den Start eines neuen Gerätepakets (unvollständige Pakete werden verworfen) angeben soll. Wenn ein Interrupt unterbrochen wird, kann der Zeigegerätetreiber die interne Darstellung des Paketstatus mit dem Hardwarestatus synchronisieren. Die Eigenschaft »Synch« gibt den Zeitraum an, nachdem der nächste Interrupt den Start eines neuen Gerätepakets (unvollständige Pakete werden verworfen) angeben soll. Wenn ein Interrupt unterbrochen wird, kann der Zeigegerätetreiber die interne Darstellung des Paketstatus mit dem Hardwarestatus synchronisieren.
Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Eine formfreie Zeichenfolge, die die Pinkonfiguration und die Signalverwendung einer physikalischen Steckverbindung beschreibt. Die Eigenschaft »ConnectorType« gibt die physikalischen Attribute der Steckverbindung für den Anschluß an. Beispiel: 2 25 (Male RS-232) »CreationClassName« gibt den Namen der Klasse oder Teilklasse an, die beim Erstellen einer Instanz verwendet wird. Wenn diese Eigenschaft mit anderen Schlüsseleigenschaften dieser Klasse verwendet wird, können alle Instanzen der Klasse und der Teilklassen eindeutig erkannt werden. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »ExternalReferenceDesignator« gibt die externe Kennung des Anschlusses an. Externe Kennungen geben den Typ und die Verwendung des Anschlusses an. Beispiel: COM1 Die Eigenschaft »InstallDate« gibt an, wann es installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »InternalReferenceDesignator« gibt die interne Kennung des Anschlusses an. Interne Kennungen sind herstellerspezifisch und geben die Position der Platine oder die Verwendung des Anschlusses an. Beispiel: J101 Der Name der Organisation, die für die Herstellung des physikalischen Elements verantwortlich ist. Der Name der physikalischen Komponente. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden.
B.152 Win32_PortResource OtherIdentifyingInfo
PartNumber
PortType PoweredOn SerialNumber SKU Status
Tag
Version
647
»OtherIdentifyingInfo« erfaßt außer Bestandskennzeichnungsinformationen auch Daten, die dazu verwendet werden können, physikalische Elemente zu identifizieren. Ein Beispiel dafür sind Barcodedaten, die mit einem Element verbunden sind, das auch über eine Bestandskennzeichnung verfügt. Hinweis: Wenn nur Barcodedaten verfügbar sind, die allein als Elementschlüssel verwendet werden können, ist diese Eigenschaft NULL und die Barcodedaten werden in der Eigenschaft »Tag« als Klassenschlüssel verwendet. Die Einzelteilnummer, die von der Organisation, die für die Produktion und Herstellung des physikalischen Elements verantwortlich ist, zugewiesen wurde. Die Eigenschaft »PortType« beschreibt die Funktion des Anschlusses. Beispiel: USB Boolescher Wert, der angibt, ob die physikalische Komponente eingeschaltet (TRUE) oder ausgeschaltet (FALSE) ist. Eine Herstellernummer zum Identifizieren des physikalischen Elements. Die SKU-Nummer für das physikalische Element. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Eigenschaft »Tag« enthält eine Zeichenfolge, die eine Anschlussverbindung auf dem Computersystem eindeutig kennzeichnet. Beispiel: Anschlussverbindung 1 Eine Zeichenfolge, die die Version des physikalischen Elements angibt.
B.152 Win32_PortResource Alias
Caption
Die Eigenschaft »Alias« gibt an, ob diese Instanz die Basisanschlussadresse oder einen Bereich mit einem Alias darstellt. Eine Basisanschlussadresse ist einem bestimmten Server oder einem Gerät zugeordnet. Eine Anschlussaliasadresse wird von einem Gerät wie eine Adresse eines E/A-Anschlusses behandelt. Werte: TRUE oder FALSE. TRUE gibt an, daß die Instanz eine Aliasadresse darstellt. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an.
648
Anhang B: WMI Klassenreferenz
CreationClassName
CSCreationClassName CSName Description EndingAddress InstallDate Name
StartingAddress
Status
»CreationClassName« gibt den Namen der Klasse oder Teilklasse an, die beim Erstellen einer Instanz verwendet wird. Wenn diese Eigenschaft mit anderen Schlüsseleigenschaften dieser Klasse verwendet wird, können alle Instanzen der Klasse und der Teilklassen eindeutig erkannt werden. Der Erstellungsklassenname des bereichsdefinierenden Computersystems. Der Name des bereichsdefinierenden Computersystems. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »EndingAddress« enthält die letzte Adresse der im Speicher abgebildeten E/A. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Die Eigenschaft »StartingAddress« enthält die erste Adresse der im Speicher abgebildeten E/A. Dieser Wert sollte für die Hardwareressourcenkennung verwendet werden, um den abgebildeten E/A-Ressourcenschlüssel zu erstellen. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
B.153 Win32_PortableBattery result as Integer = SetPowerState »SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Pa(PowerState as Integer, Time as rameter »PowerState« folgende Werte festgelegt werden: 1=»Kein EnerDate/Time) giesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an.
B.153 Win32_PortableBattery result as Integer = Reset
Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Die Eigenschaft »BatteryRechargeTime« gibt die zum vollständigen Aufladen der Batterie erforderliche Zeitdauer an. Beschreibung des Batterieladestatus. Z.B. können folgende Werte angegeben werden: »Vollständig geladen« (Wert=3) oder »Teilweise geladen« (11). Der Wert 10 ist im CIM-Schema ungültig, da es in DMI angibt, daß keine Batterie installiert ist. In diesem Fall sollte das Objekt nicht initialisiert werden. Die Eigenschaft »CapacityMultiplier« enthält den Multiplikationsfaktor des Werts »Design Capacity«, um sicherzustellen, daß der Wert für die Milliwattstunden für die SBDS-Implementierungen (Smart Battery Data Specification) nicht überschritten wird. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Eine Aufzählung, die die chemische Zusammensetzung der Batterie beschreibt. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Kapazität der Batterie in Milliwatt-Stunden. Geben Sie 0 ein, wenn diese Eigenschaft nicht unterstützt wird. Die Spannung der Batterie in Millivolts. Geben Sie 0 ein, wenn dieses Attribut nicht unterstützt wird. Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die die Batterie angibt. Beispiel: Interne Batterie Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge.
650
Anhang B: WMI Klassenreferenz
EstimatedChargeRemaining EstimatedRunTime
ExpectedBatteryLife ExpectedLife
FullChargeCapacity
InstallDate
LastErrorCode Location
ManufactureDate Manufacturer MaxBatteryError
MaxRechargeTime
Name
PNPDeviceID
Geschätzte Restladung in Prozent. »EstimatedRunTime« schätzt, wie lange es dauert, bis die Batterie oder der Generator unter der gegenwärtigen Belastung leer sind, wenn die Stromversorgung unterbrochen oder abgeschaltet ist oder ein Laptop von der Stromzufuhr getrennt wurde. Die Eigenschaft »ExpectedBatteryLife« gibt die erwartete Lebensdauer der Batterie an, nachdem diese vollständig aufgeladen wurde. Gibt die erwartete Lebensdauer der Batterie in Minuten an; vorausgesetzt, daß die Batterie vollständig aufgeladen ist. Diese Eigenschaft gibt die gesamte Lebensdauer der Batterie an. Die verbleibende Lebensdauer wird in der Eigenschaft »EstimatedRunTime« angezeigt. Die gesamte Ladekapazität der Batterie in Milliwatt-Stunden. Der Vergleich dieses Werts mit der Eigenschaft »DesignCapacity« bestimmt, wann die Batterie ersetzt werden muß. Wenn die Eigenschaft »FullChargeCapacity« unter 80% der Eigenschaft »DesignCapacity« liegt, ist die Lebensdauer der Batterie beendet. Geben Sie 0 ein, wenn diese Eigenschaft nicht unterstützt wird. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »Location« gibt die physikalische Position der Batterie an. Diese Eigenschaft wird vom Hersteller angegeben. Beispiel: Rückseite, linke Seite Die Eigenschaft »ManufactureDate« gibt das Herstellungsdatum der Batterie an. Die Eigenschaft »Manufacturer« gibt den Hersteller der Batterie an. Die Eigenschaft »MaxBatteryError« gibt den Unterschied zwischen dem geschätzten Höchstwert der restlichen Batterieenergie und dem aktuellen Wert an. »MaxRechargeTime« gibt die zum Aufladen der Batterie maximal erforderliche Zeitdauer an. Diese Eigenschaft gibt die Zeitdauer zum Aufladen einer vollständig leeren Batterie an. Die verbleibende Aufladezeit wird in der Eigenschaft »TimeToFullCharge« angezeigt. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b
Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Die Versionsnummer für Smart Battery-Datenspezifikationen, die von dieser Batterie unterstützt wird. Wenn die Batterie diese Funktion nicht unterstützt, sollte dieser Wert leer sein. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft.
652
Anhang B: WMI Klassenreferenz »TimeOnBattery« gibt den Zeitraum in Sekunden an, der seit dem letzten Umschalten der UPS zu Batteriebetrieb oder seit dem letzten Neustart der UPS verstrichen ist. Der Wert Null wird zurückgegeben, wenn die Batterie aktiv ist. Erforderliche Zeit zum Aufladen der Batterie in Minuten (berechnet nach aktueller Aufladegeschwindigkeit und Verbrauch)
Die Eigenschaft »EventType« gibt den Änderungstyp im Systemenergiestatus an. Die Eigenschaft »OEMEventCode« gibt den vom OEM (Original Equipment Manufacturer) definierten Systemenergiestatus an, wenn die Eigenschaft »EventType« dieser Klasse »OEM Event« ist. Ansonsten ist diese Eigenschaft NULL. OEM-Ereignisse werden generiert, wenn ein APM BIOS ein APM OEM-Ereignis anzeigen. OEMEreigniscode liegen im Bereich von 0x0200h bis 0x02FFh.
B.155 Win32_PrintJob Caption DataType
Description Document DriverName ElapsedTime HostPrintQueue InstallDate JobId JobStatus Name
Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »DataType« gibt das Datenformat für den Druckauftrag an. Der Druckertreiber wird angewiesen, die Daten (allgemeinen Text, PostScript oder PCL) vor dem Drucken zu übersetzen oder in einem binären Format zu drucken (Grafiken und Bilder). Beispiel: TEXT Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »Document« gibt den Namen des Druckauftrags an. Beispiel: Microsoft Word – Review.doc Die Eigenschaft »DriverName« gibt den Namen des für den Druckauftrag verwendeten Druckertreibers an. Zeitraum, in dem der Auftrag ausgeführt wurde. Die Eigenschaft »HostPrintQueue« enthält den Namen des Computers, auf dem der Druckauftrag erstellt wurde. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »JobId« gibt die Auftragskennung an. Diese Eigenschaft wird als Handle für einen an den Drucker gesendeten Auftrag verwendet. Formfreie Zeichenfolge, die den Status des Auftrags angibt. Die Eigenschaft »Name« enthält den Namen des Druckers, an den der Druckauftrag gesendet wurde.
Bei Auftragsbeendigung oder Fehler zu benachrichtigender Benutzer. Diese Eigenschaft ist auf Windows 9x-Plattformen auf 16 Zeichen beschränkt. Benutzer, der den Auftrag gesendet hat. Die Eigenschaft »PagesPrinted« gibt die Anzahl der gedruckten Seiten an. Der Wert ist Null, wenn der Druckauftrag keine Seitentrennzeichen enthält. Die Eigenschaft »Parameters« gibt optionale Parameter zum Senden an den Drukkerprozessor an. Das Mitglied »PrintProcessor« enthält weitere Informationen. Die Eigenschaft »PrintProcessor« gibt den Druckerprozessordienst zum Verarbeiten des Druckauftrags an. Ein Druckerprozessor funktioniert in Verbindung mit dem Druckertreiber, um zusätzliche Druckerdaten für den Drucker zu übersetzen, und kann für spezielle Optionen, z.B. zum Drucken einer Titelseite, verwendet werden. Die Priorität gibt an, wie wichtig oder dringend der Auftrag ist bzw. ausgeführt werden muß. Die Eigenschaft »Size« gibt die Größe des Druckauftrags an. Zeitpunkt, zu dem der Auftrag gestartet wurde. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Eigenschaft »StatusMask« gibt eine Bitmap für den möglichen Status des Druckauftrags an. Zeitpunkt, zu dem der Auftrag gesendet wurde. Die Eigenschaft »TotalPages« gibt die Anzahl der für den Auftrag erforderlichen Seiten an. Der Wert ist Null, wenn der Druckauftrag keine Seitentrennzeichen enthält. Zeitraum, nach dem der Auftrag ungültig wird oder angehalten werden sollte.
654
Anhang B: WMI Klassenreferenz
B.156 Win32_Printer result as Integer = SetPowerState »SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Pa(PowerState as Integer, Time as rameter »PowerState« folgende Werte festgelegt werden: 1=»Kein EnerDate/Time) giesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. result as Integer = Reset Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Attributes Die Eigenschaft »Attributes« gibt die Attribute des Win32-Druckers an. Diese Attribute werden durch eine Kombination von Flags dargestellt. Druckerattribute: In der Warteschlange – Druckaufträger werden gepuffert. Direkt – Gibt an, daß das Dokument direkt an den Drucker gesendet wird, wenn Druckaufträge nicht richtig gepuffert werden. Standard – Der Drukker ist der Standarddrucker. Freigegeben – Verfügbar als freigegebene Netzwerkressource. Netzwerk – Mit dem Netzwerk verbunden. Ausgeblendet – Für einige Benutzer des Netzwerks nicht sichtbar. Lokal – Direkt mit diesem Computer verbunden. EnableDevQ – Aktiviert die Druckerwarteschlange, falls verfügbar. KeepPrintedJobs – Gibt an, daß der Spooler keine Dokumente nach dem Drucken löscht. DoCompleteFirst – Startet gespoolte Aufträge zuerst. WorkOffline – Puffert Druckaufträge, wenn der Drucker nicht verfügbar ist. EnableBIDI – Aktiviert birektionales Drucken. RawOnly – Spoolt nur Aufträge mit binären Daten. Veröffentlicht – Gibt an, ob der Drucker im Netzwerkverzeichnisdienst veröffentlicht wird. Availability Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet.
Die Eigenschaft »AveragePagesPerMinute« gibt die durchschnittliche Anzahl der Seiten pro Minute an, die der Drucker unterstützt. Ein Array mit ganzen Zahlen, das die Druckerfunktionen angibt. In dieser Eigenschaft werden z.B. »Duplexdruck« (Wert=3) oder »Transparent« (7) festgelegt. Formfreie Zeichenfolgen mit genaueren Erklärungen zu den im Datenfeld »Capabilities« angezeigten Druckerfunktionen. Jeder Eintrag in diesem Array bezieht sich auf den Eintrag im Datenfeld »Capabilities« unter dem gleichen Index. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Die Eigenschaft »DefaultPriority« gibt den Wert der Standardpriorität für jeden Druckauftrag an. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Druckerfehlerinformationen. Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die den Drucker von anderen Geräten im System unterscheidet. Die Eigenschaft »DriverName« gibt den Namen des Win32Druckertreibers an. Beispiel: Windows NT Faxtreiber Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Horizontale Druckerauflösung in Pixel pro Zoll. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Ein Array, das die unterstützten Druckersprachen angibt. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »Location« gibt die physikalische Position des Druckers an. Beispiel: Geb. 38, Raum 1164 Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Ein Array mit ganzen Zahlen, das die unterstützten Papiertypen angibt. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b
Die Eigenschaft »PortName« gibt die Druckeranschlüsse an. Wenn ein Drucker mit mehreren Anschlüssen verbunden ist, sind die Anschlussnamen durch Kommas getrennt. In Windows 95 kann nur ein Anschluß angegeben werden. Beispiel: LPT1:, LPT2:, LPT3: Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Die Eigenschaft »PrinterPaperNames« gibt die vom Drucker unterstützten Papiergrößen an. Die druckerspezifischen Namen stellen die unterstützten Papiergrößen dar. Beispiel: B5 (JIS). Die Eigenschaft »PrinterState« gibt einen Wert für den möglichen Status des Druckers an. Statusinformationen für einen Drucker. Werte: »Leerlauf« (3) und Drukken (4). Die Eigenschaft »PrintJobDataType« gibt den Datentyp des auf dem Win32-Druckgeräts anstehenden Druckauftrags an. Die Eigenschaft »PrintProcessor« gibt den Namen des Spoolers für Druckaufträge an. Beispiel: SPOOLSS.DLL. Die Eigenschaft »SeparatorFile« gibt den Namen der zum Erstellen einer Trennseite verwendeten Datei an. Mit dieser Seite werden Druckaufträge getrennt, die an den Drucker gesendet werden. Die Eigenschaft »ServerName« gibt den Server an, der den Drucker steuert. NULL gibt an, daß der Drucker lokal gesteuert wird. Die Eigenschaft »ShareName« gibt den Freigabenamen des Win32Druckgeräts an. Beispiel: \\PRINTSERVER1\PRINTER2 Die Eigenschaft »SpoolEnabled« zeigt an, ob das Spoolen für den Drucker aktiviert ist. Werte: TRUE oder FALSE. Die Eigenschaft »StartTime« gibt den frühesten Zeitpunkt zum Ausführen eines Druckauftrags an, wenn das Drucken auf bestimmte Zeitpunkte beschränkt ist. Dieser Wert wird als seit 12:00 AM GMT (Greenwich Mean Time) verstrichene Zeit angegeben.
B.157 Win32_PrinterConfiguration Status
StatusInfo
SystemCreationClassName
SystemName
TimeOfLastReset
UntilTime
VerticalResolution
657
Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Eigenschaft »UntilTime« gibt den spätesten Zeitpunkt zum Ausführen eines Druckauftrags an, wenn das Drucken auf bestimmte Zeitpunkte beschränkt ist. Dieser Wert wird als seit 12:00 AM GMT (Greenwich Mean Time) verstrichene Zeit angegeben. Vertikale Druckerauflösung in Pixel pro Zoll.
B.157 Win32_PrinterConfiguration BitsPerPel
Caption Collate
Die Eigenschaft »BitsPerPel« enthält die Anzahl der Bits pro Pixel für den Win32-Drucker. Dieses Mitglied wird von Bildschirmtreibern und nicht von Druckertreibern verwendet. Beispiel: 8 Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Die Eigenschaft »Collate« gibt an, ob die gedruckten Seiten sortiert werden. Das Drucken erfolgt dokumenten- und nicht seitenweise. Diese Eigenschaft wird ignoriert, wenn der Druckertreiber das Sortieren nicht unterstützt. Werte: TRUE oder FALSE. TRUE gibt an, daß Dokumente sortiert werden.
658
Anhang B: WMI Klassenreferenz
Color
Copies
Description DeviceName
DisplayFlags
DisplayFrequency
DitherType
DriverVersion
Duplex
FormName
HorizontalResolution
ICMIntent
Die Eigenschaft »Color« gibt an, ob das Dokument in Farbe oder Schwarzweiß gedruckt wird. Einige Drucker verwenden echtes Schwarz anstelle einer Mischung aus Gelb, Zyan und Magenta, um den Text dunkler und schärfer anzuzeigen. Die Option wird nur für Farbdrucker verwendet, die das Drukken von Schwarz unterstützen. Die Eigenschaft »Copies« gibt die Anzahl der zu druckenden Kopien an. Das Drucken mehrseitiger Kopien muß vom Druckertreiber unterstützt werden. Beispiel: 2 Eine Textbeschreibung des Objekts »CIM_Setting«. Die Eigenschaft »DeviceName« gibt den Namen des Druckers an. Dieser Name ist eindeutig für den Druckertyp und ist möglicherweise abgeschnitten. Beispiel: PCL/HP LaserJet Die Eigenschaft »DisplayFlags« enthält zwei Informationsbits über den Bildschirm. Dieses Mitglied gibt an, ob es sich um einen Farbmonitor oder einen S/W-Monitor mit oder ohne Zeilensprung handelt. Diese Eigenschaft wird nicht für Druckertreiber verwendet. Die Eigenschaft »DisplayFrequency« gibt die Aktualisierungsrate des Bildschirms an. Die Aktualisierungsrate legt fest, wie oft der Bildschirm pro Sekunde neu gezeichnet wird. Diese Eigenschaft wird nicht für Druckertreiber verwendet. Die Eigenschaft »DitherType« gibt den Farbmischungstyp des Druckers an. Dieses Mitglied kann vordefinierte Werte von 1 bis 5 oder treiberdefinierte Werte von 6 bis 256 verarbeiten. S/W-Farbmischung ist eine spezielle Methode zum Definieren der Grenzen zwischen Schwarz-, Weiß- und Grauskalierungen. Diese Methode kann nicht auf Bilder (z.B. gescannte Fotos) mit kontinuierlichen Farbverläufen angewendet werden. Die Eigenschaft »DriverVersion« gibt die Versionsnummer des Win32Druckertreibers an. Die Versionsnummern werden vom Treiberhersteller erstellt und verwaltet. Die Eigenschaft »Duplex« gibt an, ob auf eine oder beide Seiten gedruckt wird. Werte: TRUE oder FALSE. TRUE gibt an, daß auf beide Seiten gedruckt wird. Die Eigenschaft »FormName« gibt den Namen des Papierformats für den Druckauftrag an. Diese Eigenschaft wird nur auf Windows NT/Windows 2000-Systemen verwendet. Beispiel: Legal Die Eigenschaft »HorizontalResolution« gibt die Druckerauflösung entlang der X-Achse (Breite) für den Druckauftrag an. Dieser Wert wird nur festgelegt, wenn die Eigenschaft »PrintQuality« dieser Klasse positiv ist und der Eigenschaft »XResolution« entspricht. Die Eigenschaft »ICMIntent« gibt den Wert einer der drei möglichen ICMMethoden an, die standardmäßig verwendet werden sollten. Diese Eigenschaft kann vordefinierte Werte von 1 bis 3 und treiberdefinierte Werte von 4 bis 256 verarbeiten. Nicht-ICM-Anwendungen können mit diesem Wert bestimmten, wie der Drucker Farbdruckaufträge behandelt.
B.157 Win32_PrinterConfiguration ICMMethod
LogPixels
MediaType
Name Orientation PaperLength PaperSize PaperWidth PelsHeight PelsWidth PrintQuality
Scale
SettingID SpecificationVersion TTOption
VerticalResolution
XResolution
YResolution
659
Die Eigenschaft »ICMMethod« gibt die Verwendung von ICM an. Für NichtICM-Anwendungen gibt diese Eigenschaft an, ob ICM aktiviert oder deaktiviert ist. Die Eigenschaft »LogPixels« enthält die Pixelanzahl pro logischem Zoll. Dieses Mitglied ist nur mit Geräten gültig, die mit Pixeln arbeiten (das schließt z.B. Drucker aus). Die Eigenschaft »MediaType« gibt den Medientyp zum Drucken an. Die Eigenschaft kann einen vordefinierten oder einen vom Treiber definierten Wert enthalten, der größer oder gleich 256 ist (Windows 95 oder später; Windows 2000). Die Eigenschaft »Name« gibt den Namen des Druckers an, dem diese Konfiguration zugeordnet ist. Die Eigenschaft »Orientation« gibt die Papierausrichtung beim Drucken an. Die Eigenschaft »PaperLength« gibt die Papierlänge an. Beispiel: 2794 Die Eigenschaft »PaperSize« gibt die Papiergröße an. Beispiel: A4 oder Letter Die Eigenschaft »PaperWidth« gibt die Papierbreite an. Beispiel: 2159 Die Eigenschaft »PelsHeight« gibt die Höhe der anzeigbaren Oberfläche an. Diese Eigenschaft wird nicht für Drucker verwendet. Die Eigenschaft »PelsWidth« gibt die Breite der anzeigbaren Oberfläche an. Diese Eigenschaft wird nicht für Drucker verwendet. Die Eigenschaft »PrintQuality« gibt eine von vier Qualitätsstufen für den Druckauftrag an. Wenn ein positiver Wert angegeben wird, wird die Qualität in Dots pro Zoll gemessen. Beispiel: Entwurf Die Eigenschaft »Scale« gibt den Skalierungsfaktor für die gedruckte Ausgabe an. Z.B. reduziert der Skalierungsfaktor 75 den Ausdruck auf 3/4 seiner Originalgröße. Die Kennung für das Objekt »CIM_Setting«. Die Eigenschaft »SpecificationVersion« gibt die Versionsnummer der Initialisierungsdaten für das dem Win32-Drucker zugeordnete Gerät an. Die Eigenschaft »TTOption« gibt an, wie TrueType-Schriftarten gedruckt werden. Mögliche Werte: Bitmap – Druckt TrueType-Schriftarten als Grafik (Standard für Matrixdrucker). Download – Überträgt TrueType-Schriftarten als ladbare Schriftarten (Standard für PCL-Drucker). Substitute – Ersetzt Geräteschriftarten durch TrueType-Schriftarten (Standard für PostScript-Drucker). Die Eigenschaft »VerticalResolution« gibt die Druckerauflösung entlang der Y-Achse (Höhe) für den Druckauftrag an. Dieser Wert wird nur festgelegt, wenn die Eigenschaft »PrintQuality« dieser Klasse positiv ist und der Eigenschaft »YResolution« entspricht. Die Eigenschaft »XResolution« wurde durch die Eigenschaft »HorizontalResolution« ersetzt. Weitere Informationen finden Sie in der Beschreibung zu dieser Eigenschaft. Die Eigenschaft »YResolution« wurde durch die Eigenschaft »VerticalResolution« ersetzt. Weitere Informationen finden Sie in der Beschreibung zu dieser Eigenschaft.
660
Anhang B: WMI Klassenreferenz
B.158 Win32_PrinterController AccessState
Antecedent Dependent NegotiatedDataWidth
NegotiatedSpeed
NumberOfHardResets NumberOfSoftResets
Die Eigenschaft »AccessState« gibt an, ob der Controller das Gerät steuert oder darauf zugreift (Wert=1) oder nicht (Wert=2). Es kann auch der Wert »Unbekannt« (0) definiert werden. Diese Informationen sind erforderlich, wenn ein logisches Gerät von mehreren Controllern gesteuert werden kann. Die Referenz »CIM_Controller« stellt das dem Drucker zugeordnete lokale Gerät dar. Die Referenz »Win32_Printer« stellt den Win32-Drucker dar. Wenn mehrere Bus- und/oder Verbindungsdatenbreiten möglich sind, definiert die Eigenschaft »NegotiatedDataWidth« die verwendete Datenbreite in Bits. Wenn die Datenbreite nicht ausgehandelt wurde oder diese Informationen nicht verfügbar sind, sollte der Wert der Eigenschaft 0 sein. Wenn mehrere Bus- und/oder Verbindungsgeschwindigkeiten möglich sind, definiert die Eigenschaft »NegotiatedSpeed« die verwendete Geschwindigkeit in Bits pro Sekunde. Wenn die Verbindungs- oder Busgeschwindigkeit nicht ausgehandelt wurde oder diese Informationen nicht verfügbar sind, sollte der Wert der Eigenschaft 0 sein. Anzahl der vom Controller ausgelösten Kaltstarts. Anzahl der vom Controller ausgelösten Warmstarts.
B.159 Win32_PrinterDriverDll Antecedent Dependent
Die Referenz »CIM_DataFile« stellt die Treiberdatei für den Win32-Drucker dar. Die Referenz »Win32_Printer« stellt den Win32-Drucker dar.
B.160 Win32_PrinterSetting Element Setting
Die Referenz »Element« stellt den Drucker dar, der mit dem Mitglied »Settings« konfiguriert werden kann. Die Referenz »Setting« stellt die Druckerkonfiguration dar, die für den Drucker übernommen werden kann.
B.161 Win32_PrinterShare Antecedent Dependent
Die Referenz »Win32_Printer« gibt den Win32-Drucker an, der den lokalen Drukker in dieser Zuordnung darstellt. Die Referenz »Win32_Share« gibt die Win32-Freigabe an, die die Netzwerkfreigabe des Druckers in dieser Zuordnung darstellt.
Die Eigenschaft »PrivilegesNotHeld« gibt an, daß die zum Beenden eines Vorgangs erforderlichen Zugriffsrechte fehlen. Die Zugriffsrechtetypen sind unter den Windows NT-Berechtigungen aufgeführt. Beispiel: SE_SHUTDOWN_NAME Die Eigenschaft »PrivilegesRequired« gibt alle zum Ausführen eines Vorgangs erforderlichen Berechtigungen an, einschließlich Werte der Eigenschaft »PrivilegesNotHeld«. Beispiel: SE_SHUTDOWN_NAME Die Eigenschaft »PrivilegesRequired« gibt alle zum Ausführen eines Vorgangs erforderlichen Berechtigungen an, einschließlich Werte der Eigenschaft »PrivilegesNotHeld«. Beispiel: SE_SHUTDOWN_NAME Die Eigenschaft »PrivilegesRequired« gibt alle zum Ausführen eines Vorgangs erforderlichen Berechtigungen an, einschließlich Werte der Eigenschaft »PrivilegesNotHeld«. Beispiel: SE_SHUTDOWN_NAME
B.163 Win32_Process result as Integer = Create (CommandLine as String, CurrentDirectory as String, ProcessStartupInformation as CIM-Object) CommandLine=Der Parameter »CommandLine« gibt die auszuführende Befehlszeile an. Das System fügt ein Null-Zeichen in die Befehlszeile hinzu, und kürzt die Zeichenfolge, falls erforderlich, um anzuzeigen, welche Datei verwendet wurde. CurrentDirectory=Der Parameter »CurrentDirectory« gibt das aktuelle Laufwerk und das Verzeichnis für den untergeordneten Prozeß an. Die Zeichenfolge erfordert, daß das aktuelle Verzeichnis zu einem bekannten Pfad gehört. Der Benutzer kann einen absoluten oder einen zum aktuellen Arbeitsverzeichnis relativen Pfad angeben. Wenn dieser Parameter Null ist, hat der neue Prozeß den gleichen Pfad wie der aufrufende Prozeß. Diese Op-
Die Methode »Create« erstellt einen neuen Prozeß. Der Wert 0 wird zurückgegeben, wenn der Prozeß erstellt wurde. Alle anderen Werte zeigen einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Process and Thread Functions|CreateProcess
662
Anhang B: WMI Klassenreferenz
tion wird hauptsächlich für Shells verwendet, die eine Anwendung starten und das Startlaufwerk und Arbeitsverzeichnis der Anwendung angeben. ProcessStartupInformation=Der Parameter »ProcessStartupInformation« gibt die Startkonfiguration für einen Win32-Prozeß an; einschließlich der Informationen über das Anzeigen des Fensters, Merkmale der Konsolenanwendung und der Fehlerbehandlung. result as Integer = Terminate (Reason as Integer) Reason=Der Parameter »Reason« gibt den Beendigungscode für den Prozeß und alle Threads an, die als Ergebnis dieses Aufrufs abgebrochen wurden. result as Integer = GetOwner
Die Methode »Terminate« löscht einen Prozeß und seine Threads. Der Wert 0 wird zurückgegeben, wenn der Prozeß gelöscht wurde. Alle anderen Werte zeigen einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Process and Thread Functions|TerminateProcess Die Methode »GetOwner« ermittelt den Benutzer- und Domänennamen unter dem der Prozeß ausgeführt wird. Der Wert 0 wird zurückgegeben, wenn der Name ermittelt wurde. Andere Werte zeigen einen Fehler an Befehl wird von folgender API-Funktion bereitgestellt: WMI Die Methode »GetOwnerSid« ermittelt die Sicherheitskennung (SID) des Prozessbesitzers. Befehl wird von folgender API-Funktion bereitgestellt: WMI Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Zeitpunkt, zu dem der Prozeß gestartet wurde. Zeitpunkt, zu dem der Prozeß gestartet wurde. Zeitpunkt, zu dem der Prozeß gestartet wurde. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »ExecutablePath« gibt den Pfad zur ausführbaren Datei des Prozesses an. Beispiel: C:\WINDOWS\EXPLORER.EXE Gibt den aktuellen Zustand des Prozesses an. Mögliche Werte sind: Bereit (2), wird ausgeführt (3) und blockiert (4). Eine Zeichenfolge zum Identifizieren des Prozesses. Eine Prozesskennung ist ein Prozesshandle.
Die Eigenschaft »HandleCount« gibt die Gesamtanzahl der von diesem Prozeß geöffneten Handles an. Diese Anzahl ist die Summe der Handles, die von allen Threads in diesem Prozeß geöffnet sind. Ein Handle wird verwendet, um die Systemressourcen zu überprüfen oder zu ändern. Jedes Handle hat einen Eintrag in einer internen Tabelle. Diese Einträge enthalten die Adressen der Ressourcen und identifizieren den Ressourcentyp. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Zeit im Kernelmodus in Millisekunden. Wenn diese Informationen nicht verfügbar sind, verwenden Sie den Wert 0. Die Eigenschaft »MaximumWorkingSetSize« gibt die maximale Arbeitsseitengröße des Prozesses an. Die Arbeitsseite eines Prozesses sind die aktuellen Speicherseiten für den Prozeß im physikalischen RAM. Diese Seiten sind resident und für eine Anwendung verfügbar, ohne einen Seitenfehler auszulösen. Beispiel: 1413120. Die Eigenschaft »MinimumWorkingSetSize« gibt die minimale Arbeitsseitengröße des Prozesses an. Die Arbeitsseite eines Prozesses sind die aktuellen Speicherseiten für den Prozeß im physikalischen RAM. Diese Seiten sind resident und für eine Anwendung verfügbar, ohne einen Seitenfehler auszulösen. Beispiel: 20480. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Die Eigenschaft »OtherOperationCount« gibt die Anzahl der ausgeführten E/A-Vorgänge an (keine Lese- oder Schreibvorgänge). Die Eigenschaft »OtherTransferCount« gibt die Datenmenge an, die übertragen wurde (keine Lese- oder Schreibvorgänge). Die Eigenschaft »PageFaults« gibt die Anzahl der vom Prozeß generierten Seitenfehler an. Beispiel: 10 Die Eigenschaft »PageFileUsage« gibt den Auslagerungsdateibereich an, der vom Prozeß verwendet wird. Beispiel: 102435
Die Eigenschaft »ParentProcessId« gibt die eindeutige Kennung des Prozesses an, der diesen Prozeß erstellt hat. Prozesskennungen werden erneut verwendet und sind nur für die Lebensdauer eines Prozesses gültig. Möglicherweise verweist diese Eigenschaft nicht auf einen ausgeführten Prozeß, da der Prozeß abgebrochen wurde. Es ist ebenfalls möglich, daß diese Eigenschaft auf einen Prozeß verweist, der diese Prozesskennung erneut verwendet. Mit der Eigenschaft »CreationDate« kann bestimmt werden, ob der angegebene übergeordnete Prozeß nach diesem Prozeß erstellt wurde. Die Eigenschaft »PeakPageFileUsage« gibt den maximalen Auslagerungsdateibereich an, der während des Prozesses verwendet wird. Beispiel: 102435 Die Eigenschaft »PeakVirtualSize« gibt den maximalen virtuellen Adreßbereich an, den der Prozeß verwendet hat. Die Verwendung des virtuellen Adreßbereichs erfordert nicht die Verwendung von Datenträgern oder Hauptspeicherseiten. Der virtuelle Bereich ist begrenzt. Wenn ein zu großer Bereich verwendet wird, können möglicherweise keine Bibliotheken mehr geladen werden. Die Eigenschaft »PeakWorkingSetSize« gibt die Größe der PeakArbeitsseiten des Prozesses an. Beispiel: 1413120 Die Eigenschaft »Priority« gibt die Planungspriorität des Prozesses im Betriebssystem an. Umso größer der Wert ist, desto höhere Priorität erhält der Prozeß. Prioritätswerte können im Bereich zwischen 0 (niedrigste Priorität) und 31 (höchste Priorität) liegen. Beispiel: 7. Die Eigenschaft »PrivatePageCount« gibt die aktuelle Anzahl der zugeordneten Seiten an, auf die nur dieser Prozeß zugreifen kann. Die Eigenschaft »ProcessId« enthält die globale Prozesskennung zum Identifizieren eines Prozesses. Der Wert ist ab dem Erstellen bis zum Abbrechen des Prozesses gültig. Die Eigenschaft »QuotaNonPagedPoolUsage« gibt die Quotenanzahl des nicht ausgelagerten Pools für den Prozeß an. Beispiel: 15 Die Eigenschaft »QuotaPagedPoolUsage« gibt die Quotenanzahl des ausgelagerten Pools für den Prozeß an. Beispiel: 22 Die Eigenschaft »QuotaPeakNonPagedPoolUsage« gibt die höchste Quotenanzahl des nicht ausgelagerten Pools für den Prozeß an. Beispiel: 31 Die Eigenschaft »QuotaPeakPagedPoolUsage« gibt die höchste Quotenanzahl des ausgelagerten Pools für den Prozeß an. Beispiel: 31 Die Eigenschaft »ReadOperationCount« gibt die Anzahl der ausgeführten Lesevorgänge an. Die Eigenschaft »ReadTransferCount« gibt die Menge der gelesenen Daten an. Die Eigenschaft »SessionId« gibt die eindeutige Kennung an, die vom Betriebssystem beim Erstellen der Sitzung generiert wird.
B.163 Win32_Process Status
TerminationDate ThreadCount
UserModeTime VirtualSize
WindowsVersion WorkingSetSize
WriteOperationCount WriteTransferCount
665
Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Zeitpunkt, zu dem der Prozeß angehalten oder abgebrochen wurde. Die Eigenschaft »ThreadCount« gibt die Anzahl der im Prozeß aktiven Threads an. Eine Anweisung ist die Basiseinheit der Ausführung in einem Prozessor. Ein Thread ist das Objekt, das die Anweisungen ausführt. Jeder ausgeführte Prozeß besitzt mindestens einen Thread. Nur Windows NT. Zeit im Benutzermodus in Millisekunden. Wenn diese Informationen nicht verfügbar sind, verwenden Sie den Wert 0. Die Eigenschaft »VirtualSize« gibt die aktuelle Größe des vom Prozeß verwendeten virtuellen Adressbereich in Bytes an. Die Verwendung des virtuellen Adressbereichs erfordert nicht die Verwendung von Datenträgern oder Hauptspeicherseiten. Der virtuelle Bereich ist begrenzt. Wenn ein zu großer Bereich verwendet wird, können möglicherweise keine Bibliotheken mehr geladen werden. Die Eigenschaft »WindowsVersion« gibt die Windows-Version an, in der der Prozeß ausgeführt wird. Beispiel: 4.0 Der zum effizienten Ausführen eines Prozesses erforderliche Speicher in Bytes für ein Betriebssystem mit seitenbasierter Speicherverwaltung. Wenn nicht genügend Speicher verfügbar ist, tritt ein Fehler auf. Geben Sie NULL oder 0 ein, wenn der Wert unbekannt ist. Die Eigenschaft »WriteOperationCount« gibt die Anzahl der ausgeführten Schreibvorgänge an. Die Eigenschaft »WriteTransferCount« gibt die Menge der geschriebenen Daten an.
666
Anhang B: WMI Klassenreferenz
B.164 Win32_ProcessStartup CreateFlags
EnvironmentVariables
Die Eigenschaft »CreateFlags« gibt zusätzliche Werte an, die die Prioritätenklasse und das Erstellen des Prozesses steuern. Folgende Erstellungswerte können, mit einigen Ausnahmen, in beliebiger Kombination angegeben werden: Create_Default_Error_Mode – Neu erstellte Prozesse erhalten den standardmäßigen Systemfehlermodus des aufrufenden Prozessen, anstatt den Fehlermodus des übergeordneten Prozesses zu erben. Dieses Flag ist nützlich für Shellprogramme mit mehreren Threads, die mit deaktivierten schwerwiegenden Fehlers ausgeführt werden. Create_New_Console – Der neue Prozeß verfügt über eine neue Konsole, anstatt die Konsole des übergeordneten Prozesses zu erben. Dieses Flag kann nicht mit dem Detached_Process-Flag verwendet werden. Create_New_Process_Group – Der neue Prozeß ist der Stammprozeß einer neuen Prozessgruppe. Die Prozessgruppe enthält alle Prozesse, die abhängig vom Stammprozeß sind. Die Prozesskennung der neuen Prozessgruppe ist mit der Prozesskennung identisch, die in der Eigenschaft »ProcessID« der Klasse »Win32_Process« zurückgegeben wird. Prozessgruppen werden von der Funktion »GenerateConsoleCtrlEvent« verwendet, um ein STRG+C- oder STRG+UNTBR-Signal an eine Konsolenprozessgruppe zu senden. Create_Suspended – Der primäre Thread des neuen Prozesses wird angehalten und erst ausgeführt, wenn die Funktion »ResumeThread« aufgerufen wird. Create_Unicode_Environment – Die in der Eigenschaft »EnvironmentVariables« aufgelisteten Umgebungseinstellungen verwenden Unicode-Zeichen. Wenn diese Eigenschaft leer ist, werden ANSI-Zeichen verwendet. Debug_Process – Wenn dieses Flag gesetzt ist, wird der aufrufende Prozeß als Debugger behandelt und der neue Prozeß wird debugged. Das System benachrichtigt den Debugger von allen Debugereignissen. Auf Windows 95- und Windows 98-Systemen ist dieses Flag ungültig, wenn der neue Prozeß eine 16-Bit-Anwendung ist. Debug_Only_This_Process – Wenn dieses Flag nicht gesetzt ist und der aufrufende Prozeß debugged wird, wird ein anderer Prozeß vom Prozeß des aufrufenden Debuggers debugged. Detached_Process – Für Konsolenprozesse hat der neue Prozeß keinen Zugriff auf die Konsole des übergeordneten Prozesse. Dieses Flag kann nicht mit dem Flag »Create_New_Console« verwendet werden. Die Eigenschaft »EnvironmentVariables« enthält eine Liste der Einstellungen für die Computerkonfiguration. Umgebungsvariablen geben Suchpfade für Dateien, temporäre Verzeichnisse, programmspezifische Optionen und ähnliche Informationen an. Das System speichert einen Umgebungseinstellungsblock für jeden Benutzer und einen für den Computer. Der Systemumgebungsblock enthält Umgebungsvariablen für alle Benutzer dieses Computers. Ein Benutzerumgebungsblock enthält die Umgebungsvariablen, die das System für diesen Benutzer speichert einschließlich der Systemumgebungsvariablen. Standardmäßig erhält jeder Prozeß eine Kopie des Umgebungsblocks für den übergeordneten Prozeß. Gewöhnlich ist dies der Umgebungsblock für den angemeldeten Benutzer. Ein Prozeß kann unterschiedliche Umgebungsblöcke für die untergeordneten Prozesse angeben.
B.164 Win32_ProcessStartup ErrorMode
FillAttribute
PriorityClass
667
Die Eigenschaft »ErrorMode« steuert, wie das Betriebssystem schwerwiegende Fehler verarbeitet. Sie können angeben, ob diese Fehler vom Betriebssystem oder von der Anwendung verarbeitet werden. Auf einigen Nicht-x86-Prozessoren verursachen falsch ausgerichtete Speicherreferenzen einen Ausnahmefehler. Das Flag No_Alignment_Fault_Except steuert, ob das System die Ausrichtungsfehler automatisch behebt oder diese für eine Anwendung erkennbar macht. Auf einer MIPS-Plattform muß eine Anwendung »SetErrorMode« mit dem Flag No_Alignment_Fault_Except explizit aufrufen, damit das Betriebssystem Ausrichtungsfehler automatisch behebt. Die Standardeinstellung ist, daß Ausrichtungsfehler für eine Anwendung erkennbar sind. Da Ausrichtungsfehler auf einer x86-Plattform für eine Anwendung nicht erkennbar sind, werden Ausrichtungsfehler auch nicht heraufgesetzt, wenn das Flag No_Alignment_Fault_Except nicht gesetzt ist. Standardmäßig werden alle Flags von »ErrorMode« auf 0 gesetzt. Definierte Werte: Fail_Critical_Errors – Das Betriebssystem zeigt beim Auftreten kritischer Fehler keine Meldung an. Der Fehler wird an den aufrufenden Prozeß gesendet. No_Alignment_Fault_ Except – (nur RISC) Speicherausrichtungsfehler werden automatisch vom Betriebssystem behoben und sind für die Anwendung nicht erkennbar. Dieses Flag ist für x86-Prozessoren ungültig. No_GP_Fault_Error_Box – Das Betriebssystem zeigt beim Auftreten einer allgemeinen Schutzverletzung keine Meldung an. Dieses Flag sollte nur beim Debuggen von Anwendungen gesetzt werden, die allgemeine Schutzverletzungen über eine Ausnahmeaufstellung verarbeiten. No_Open_File_Error_Box – Das Betriebssystem zeigt keine Meldung an, wenn eine Datei nicht gefunden werden kann. Der Fehler wird an den aufrufenden Prozeß zurückgegeben. Dieses Flag wird derzeit ignoriert. Die Eigenschaft »FillAttribute« gibt den Anfangstext und die Hintergrundfarben an, wenn ein neues Fenster in einer Konsolenanwendung erstellt wird. In GUI-Anwendungen werden diese Werte ignoriert. Die Eigenschaft »PriorityClass« steuert die Prioritätsklasse des neuen Prozesses, um die Planungsprioritäten der Prozessthreads zu bestimmen. Wenn der Wert dieser Eigenschaft Null ist, wird der Standard »Normal« verwendet, außer die Prioritätsklasse des Erstellungsprozesses ist »Leerlauf« oder »Below_Normal«. In diesen Fällen, erhält der untergeordnete Prozeß die Standardprioritätsklasse des aufrufenden Prozesses. Folgende Werte können angegeben werden: Hoch – Gibt einen Prozeß an, der zeitkritische Tasks ausführt, die umgehend ausgeführt werden müssen. Die Prozessthreads mit hoher Priorität verdrängen die Threads mit normaler oder Leerlaufpriorität. Die Windows-Taskliste muß z.B. auf einen Benutzeraufruf schnell reagieren, unabhängig von der Auslastung des Betriebssystems. CPU-Programme mit hohen Prioritätsklassen können beinahe alle verfügbaren Zyklen verwenden. Threads auf dieser Ebene werden nur von Echtzeitprioritäten verdrängt. Leerlauf – Gibt einen Prozeß an dessen Threads nur ausgeführt werden, wenn sich das System im Leerlauf befindet. Diese Threads werden von Prozessthreads mit einer höheren Prioritätsklasse verdrängt, z.B. einem Bildschirmschoner. Die Leerlaufprioritätsklasse wird von untergeordneten Prozessen geerbt. Normal – Gibt einen normalen Prozeß ohne spezielle Planungserfordernisse an.
668
Anhang B: WMI Klassenreferenz
ShowWindow Title
WinstationDesktop
X
XCountChars
XSize
Echtzeit – Gibt einen Prozeß mit der höchstmöglichen Priorität an. Die Prozessthreads einer Echtzeitprioritätsklasse verdrängen alle anderen Prozessthreads, einschließlich Betriebssystemprozesse, die wichtige Tasks ausführen, und Threads mit hoher Priorität. Ein Echtzeitprozess, der für länger als ein sehr kurzes Intervall ausgeführt wird, kann verursachen, daß der Datenträgercache nicht gelöscht wird oder die Maus nicht mehr reagiert. Above_Normal – (Windows 2000 und höher) Gibt einen Prozeß an, dessen Priorität höher als normal, aber geringer als hoch ist. Below_Normal – (Windows 2000 und höher): Gibt einen Prozeß an, dessen Priorität höher als Leerlauf, aber geringer als normal ist. Die Eigenschaft »ShowWindow« gibt an, wie das Fenster angezeigt wird. Die Eigenschaft »Title« enthält die Zeichenfolge, die in der Titelleiste eines neuen Konsolenfensters angezeigt wird. NULL gibt an, daß statt dessen der Name der ausführbaren Datei als Fenstertitel verwendet wird. Diese Eigenschaft muß für GUI- oder Konsolenprozesse, die kein neues Konsolenfenster erstellen, auf NULL gesetzt sein. Die Eigenschaft »WinstationDesktop« gibt nur den Namen des Desktops oder des Desktops und der Arbeitsstation für den Prozeß an. Ein umgekehrter Schrägstrich zeigt an, daß die Zeichenfolge die Namen des Desktops und der Arbeitsstation enthält. Wenn »WinstationDesktop« NULL ist, erbt der neue Prozeß den Desktop und die Arbeitsstation des übergeordneten Prozesses. Wenn »WinstationDesktop« eine leere Zeichenfolge ist, bestimmt das System, ob ein neuer Desktop und eine Arbeitsstation erstellt werden müssen. Eine Arbeitsstation ist ein sicheres Objekt, das ein Clipboard enthält. Die interaktive Arbeitsstation, die der Anmeldesitzung des Benutzers zugeordnet ist, enthält ebenfalls die Tastatur, die Maus und den Bildschirm. Ein Desktop ist ein sicheres Objekt in einer Arbeitsstation und verfügt über eine logische Oberfläche mit Fenstern und Menüs. Eine Arbeitsstation kann mehrere Desktops besitzen. Nur die Desktops der interaktiven Arbeitsstation sind sichtbar und können die Benutzereingabe empfangen. Nur Windows NT. Die Eigenschaft »X« gibt den X-Offset der oberen linken Fensterecke in Pixel an, wenn ein neues Fenster erstellt wird. Die angegebene Position wird bei GUI-Prozessen verwendet, wenn der neue Prozeß das erste Mal »CreateWindow« aufruft, um ein überlappendes Fenster zu erstellen und der X-Paramter CW_USEDEFAULT ist. X und Y können nicht unabhängig voneinander angegeben werden. Die Eigenschaft »XCountChars« gibt die Bildschirmpufferbreite in Zeichenspalten an. Diese Werte werden in GUI-Prozessen ignoriert. »XCountChars« und »YCountChars« können nicht unabhängig voneinander angegeben werden. Die Eigenschaft »XSize« gibt die Breite des Fensters in Pixel an, wenn ein neues Fenster erstellt wird. Dieser Wert wird nur bei GUI-Prozessen verwendet, wenn der neue Prozeß das erste Mal »CreateWindow« aufruft, um ein überlappendes Fenster zu erstellen und der nWidth-Parameter CW_USEDEFAULT ist. XSize und YSize können nicht unabhängig voneinander angegeben werden.
B.165 Win32_Processor Y
YCountChars
YSize
669
Die Eigenschaft »Y« gibt den Y-Offset der oberen linken Fensterecke in Pixel an, wenn ein neues Fenster erstellt wird. Die angegebene Position wird bei GUI-Prozessen verwendet, wenn der neue Prozeß das erste Mal »CreateWindow« aufruft, um ein überlappendes Fenster zu erstellen und der Y-Paramter CW_USEDEFAULT ist. X und Y können nicht unabhängig voneinander angegeben werden. Die Eigenschaft »YCountChars« gibt die Bildschirmpufferhöhe in Zeichenzeilen an. Diese Werte werden in GUI-Prozessen ignoriert. »XCountChars« und »YCountChars« können nicht unabhängig voneinander angegeben werden. Die Eigenschaft »YSize« gibt die Höhe des Fensters in Pixel an, wenn ein neues Fenster erstellt wird. Dieser Wert wird nur bei GUI-Prozessen verwendet, wenn der neue Prozeß das erste Mal »CreateWindow« aufruft, um ein überlappendes Fenster zu erstellen und der nWidth-Parameter CW_USEDEFAULT ist. XSize und YSize können nicht unabhängig voneinander angegeben werden.
B.165 Win32_Processor result as Integer = SetPowerState »SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Pa(PowerState as Integer, Time as rameter »PowerState« folgende Werte festgelegt werden: 1=»Kein EnerDate/Time) giesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. result as Integer = Reset Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. AddressWidth Prozessoradressenbreite in Bits. Architecture Die Eigenschaft »Architecture« gibt die von dieser Plattform verwendete Prozessorarchitektur an.
Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Die Eigenschaft »CpuStatus« gibt den aktuellen Status des Prozessors an. Änderungen ergeben sich aus der Verwendung, nicht aus dem physikalischen Zustand des Prozessors. Die Eigenschaft »CpuStatus« gibt den aktuellen Status des Prozessors an. Änderungen ergeben sich aus der Verwendung, nicht aus dem physikalischen Zustand des Prozessors. Die aktuelle Prozessorgeschwindigkeit (in MHz). »CurrentVoltage« gibt die Prozessorspannung an. Die Bits 0-6 enthalten die aktuelle Prozessorspannung mal 10. Dieser Wert wird nur festgelegt, wenn SMBIOS einen Spannungswert verwendet. Die Werte werden in »VoltageCaps« angezeigt. Beispiel: Der Feldwert für eine Prozessorspannung von 1,8 Volt ist 92h = 80h + (1.8 x 10) = 80h + 18 = 80h + 12h. Prozessordatenbreite in Bits Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die den Prozessor von anderen Geräten im System unterscheidet. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Die Eigenschaft »ExtClock« gibt die externe Uhrfrequenz an. Wenn die Frequenz unbekannt ist, ist diese Eigenschaft Null. Der Prozessorfamilientyp. Werte enthalten z.B. »Pentium MMX« (14) und »68040« (96). Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein.
B.165 Win32_Processor L2CacheSize
L2CacheSpeed
LastErrorCode Level LoadPercentage Manufacturer MaxClockSpeed Name
OtherFamilyDescription
PNPDeviceID PowerManagementCapabilities
PowerManagementSupported
671
Die Eigenschaft »L2CacheSize« gibt die Größe des L2-Cache für den Prozessor an. Ein L2-Cache ist ein externer Speicherbereich mit schnelleren Zugriffszeiten als der Haupt-RAM-Speicher. Die Eigenschaft »L2CacheSpeed« gibt die Taktfrequenz des L2-Cache für den Prozessor an. Ein L2-Cache ist ein externer Speicherbereich mit schnelleren Zugriffszeiten als der Haupt-RAM-Speicher. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »Level« definiert den Prozessortyp. Der Wert ist abhängig von der Prozessorarchitektur. Die Eigenschaft »LoadPercentage« gibt die Ladekapazität des Prozessors ermittelt über die letzte Sekunde an. Die Eigenschaft »Manufacturer« gibt den Hersteller des Prozessors an. Beispiel: GenuineSilicon Die maximale Prozessorgeschwindigkeit (in MHz). Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Eine formfreie Zeichenfolge, die den Typ der Prozessorfamilie beschreibt. Wird verwendet, wenn die Eigenschaft »family« auf 1 (»Andere«) gesetzt ist. Der Wert sollte Null sein, wenn die Eigenschaft »family« einen anderen Wert aufweist. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind.
Die Eigenschaft »ProcessorId« enthält prozessorspezifische Informationen, die die Prozessorfunktionen beschreiben. Für x86-CPUs ist das Feldformat abhängig von der Unterstützung der CPUID-Anweisung. Wenn die Anweisung unterstützt wird, enthält die Eigenschaft »ProcessorId« zwei DWORD-formatierte Werte. Der erste Wert (Offset 08h-0Bh) ist der EAX-Wert, der von einer CPUID-Anweisung mit der EAX-Eingabe 1 zurückgegeben wird. Der zweite Wert (Offset 0Ch-0Fh) ist der EDX-Wert, der von dieser Anweisung zurückgegeben wird. Nur die ersten zwei Bytes dieser Eigenschaft sind wichtig (alle anderen sind 0) und enthalten (in WORD-Format) den Inhalt der DX-Register bei CPU-Neustart. Die Eigenschaft »ProcessorType« gibt die primäre Funktion des Prozessors an. Die Eigenschaft »Revision« gibt die architekturabhängige Revisionsebene des Systems an. Dieser Wert ist abhängig von der Prozessorarchitektur und enthält die gleichen Werte wie »Version« in numerischem Format. Eine formfreie Zeichenfolge, die die Funktion des Prozessors beschreibt, z.B. »Hauptprozessor« oder »Mathematischer Prozessor«. Die Eigenschaft »SocketDesignation« enthält den Chipsockeltyp, der auf der Platine verwendet wird. Beispiel: J202 Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Eine formfreie Zeichenfolge, die die Revisionsstufe des Prozessors in der Prozessorfamilie angibt. Eine formfreie Zeichenfolge, die die Revisionsstufe des Prozessors in der Prozessorfamilie angibt. Eine formfreie Zeichenfolge, die die Revisionsstufe des Prozessors in der Prozessorfamilie angibt. Eine globale eindeutige Kennung für den Prozessor. Diese Kennung ist nur innerhalb einer Prozessorfamilie eindeutig. Methode, mit der der Prozessor aktualisiert werden kann, wenn Updates unterstützt werden. Diese Eigenschaft besteht aus einer Aufzählung mit ganzen Zahlen.
B.166 Win32_Product Version
VoltageCaps
673
Die Eigenschaft »Version« gibt eine architekturabhänige Revisionsnummer für den Prozessor an. Hinweis: Dieses Mitglied wird nicht in Windows 95 verwendet. Beispiel: Modell 2, Stepping 12. Die Eigenschaft »VoltageCaps« gibt die möglichen Spannungen des Prozessors an. Die Bits 0-3 geben bestimmte Spannungen an, die der Prozessorsocket annehmen kann. Alle anderen Bits sollten Null sein. Der Socket ist konfigurierbar, wenn mehrere Bits festgelegt sind. Die Spannungsbereiche werden in »CurrentVoltage« angezeigt. Wenn die Eigenschaft NULL ist, sind die möglichen Spannungen unbekannt.
B.166 Win32_Product result as Integer = Install(AllUsers as Boolean, Options as String, PackageLocation as String) AllUsers=Gibt an, ob der Vorgang auf den aktuellen Benutzer (FALSE) oder alle Benutzer (TRUE) angewendet wird. Options=Die Befehlszeilenoptionen für die Installation sollten im Format Eigenschaft=Einstellung eingegeben werden. PackageLocation=Der Pfad zum Paket, das installiert wird. result as Integer = Admin(Options as String, PackageLocation as String, TargetLocation as String) Options=Die Befehlszeilenoptionen für das Update sollten im Format Eigenschaft=Einstellung eingegeben werden. PackageLocation=Der Pfad zum Paket, das verwaltet wird. TargetLocation=The location for the administrative image to be installed at. result as Integer = Advertise (AllUsers as Boolean, Options as String, PackageLocation as String) AllUsers=Gibt an, ob der Vorgang auf den aktuellen Benutzer (FALSE) oder alle Benutzer (TRUE) angewendet wird.
Diese Methode installiert ein zugeordnetes Win32-Produkt mit dem von »PackageLocation« angegebenen Installationspaket und allen Befehlszeilenoptionen.
Diese Methode führt eine administrative Installation eines zugeordneten Win32-Produkts mit dem von »PackageLocation« angegebenen Installationspaket und allen Befehlszeilenoptionen aus.
Diese Methode kündigt ein zugeordnetes Win32-Produkt mit dem von »PackageLocation« angegebenen Installationspaket und allen Befehlszeilenoptionen an.
674
Anhang B: WMI Klassenreferenz
Options=Die Befehlszeilenoptionen für die Ankündigung sollten im Format Eigenschaft=Einstellung eingegeben werden. PackageLocation=Der Pfad zum Paket, das angekündigt wird. result as Integer = Reinstall (ReinstallMode as Integer) ReinstallMode=Gibt den Neuinstallationsmodus an values = Array: 0=Datei fehlt 1=Ältere Dateiversion 2=Gleiche Dateiversion 3=Datei gleich 4=Datei überprüfen 5=Datei ersetzen 6=Benutzerdaten 7=Computerdaten 8=Verknüpfung 9=Paket result as Integer = Upgrade(Options as String, PackageLocation as String) Options=Die Befehlszeilenoptionen für das Update sollten im Format Eigenschaft=Einstellung eingegeben werden. PackageLocation=Der Pfad zum Paket, das das Update enthält. result as Integer = Configure (InstallLevel as Integer, InstallState as Integer) values = Array: 0=Standard 1=Minimal 2=Maximal valuemap = Array: 0=1 1=2 2=3 values = Array: 0=Standard 1=Lokal 2=Quelle
Diese Methode installiert die zugeordnete Instanz des Win32Produkts im angegebenen Neuinstallationsmodus erneut.
Diese Methode aktualisiert das zugeordnete Win32-Produkt mit dem von »PackageLocation« angegebenen Updatepaket und allen Befehlszeilenoptionen.
Diese Methode konfiguriert die zugeordnete Instanz des Win32Produkts.
B.167 Win32_ProductCheck result as Integer = Uninstall Caption Description IdentifyingNumber InstallDate InstallLocation InstallState Name PackageCache SKUNumber Vendor Version
Diese Methode deinstalliert die zugeordnete Instanz des Win32Produkts. Eine kurze Textbeschreibung (eine Zeile) des Produkts. Eine Textbeschreibung des Produkts. Produktidentifikation, z.B. eine serielle Softwarenummer oder die Nummer auf einem Hardwarechip. Produktidentifikation, z.B. eine serielle Softwarenummer oder die Nummer auf einem Hardwarechip. Produktidentifikation, z.B. eine serielle Softwarenummer oder die Nummer auf einem Hardwarechip. Produktidentifikation, z.B. eine serielle Softwarenummer oder die Nummer auf einem Hardwarechip. Hauptsächlich verwendeter Produktname. Hauptsächlich verwendeter Produktname. Produkt SKU-Informationen (Stock Keeping Unit). Der Name des Produktherstellers; entspricht der Herstellereigenschaft im Produktobjekt im DMTF Solution Exchange Standard. Produktversionsinformationen; entspricht der Versionseigenschaft im Produktobjekt im DMTF Solution Exchange Standard.
B.170 Win32_ProgIDSpecification result as Integer = Invoke
Caption CheckID CheckMode
Description Name Parent ProgID SoftwareElementID SoftwareElementState TargetOperatingSystem Version
Die Aufrufmethode soll eine bestimmte Überprüfung auswerten. Einzelheiten bezüglich der Methode für die Auswertung einer bestimmten Überprüfung in einem CIM-Kontext werden von den nicht abstrakten Teilklassen »CIM_ Check« angezeigt. Die Ergebnisse dieser Auswertungsmethode basieren auf dem zurückgegebenen Wert. A 0 (Null) wird zurückgegeben, wenn die Bedingung erfüllt wurde. Alle anderen Werte zeigen an, daß die Bedingung nicht erfüllt wurde. Eine Kennung, die in Verbindung mit anderen Schlüsseln verwendet wird, um die Überprüfung eindeutig zu identifizieren. Die Eigenschaft »CheckMode« zeigt an, ob eine Bedingung in der Umgebung erfüllt oder nicht erfüllt werden soll. Wenn dieser Wert True ist, soll diese Bedingung erfüllt werden (z.B. eine Datei soll sich auf dem Computer befinden) und daher der Aufruf() als True zurückgegeben werden. Wenn der Wert falsch ist, soll diese Bedingung nicht erfüllt werden (z.B. eine Datei soll sich nicht auf dem Computer befinden) und daher der Aufruf als falsch zurückgegeben werden. Eine Beschreibung der Objekte. Der Name zum Identifizieren der Softwarekomponente. Der Name zum Identifizieren der Softwarekomponente. Der Name zum Identifizieren der Softwarekomponente. Kennung für die Softwarekomponente. Der Status einer Softwarekomponente. Zielbetriebssystem der Softwarekomponente. Versionsformat: .. oder .
B.171 Win32_ProgramGroup Caption Description GroupName Name SettingID UserName
Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Die Eigenschaft »GroupName« gibt den Pfadnamen der Programmgruppe im Win32-Startmenü an. Beispiel: Zubehör\Systemprogramme. Die Eigenschaft »Name« gibt den Benutzernamen gefolgt von der Win32Programmgruppe an. Beispiel: Alle Benutzer:Zubehör\Systemprogramme Die Kennung für das Objekt »CIM_Setting«. Die Eigenschaft »UserName« gibt die Benutzer an, die auf die Win32Programmgruppe zugreifen können. Beispiel: Alle Benutzer
Die Referenz »GroupComponent« stellt die logische Win32-Programmgruppe dar, die die logische Programmgruppe für diese Zuordnung enthält. Die Referenz »PartComponent« stellt die Win32-Programmgruppe oder das Win32-Element dar, die bzw. das eine Startmenügruppe oder ein Element für diese Zuordnung enthält.
B.173 Win32_ProgramGroupOrItem Caption Description InstallDate Name Status
Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
B.174 Win32_Property Caption Description ProductCode Property SettingID Value
Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Die Kennung für das Objekt »CIM_Setting«. Die Kennung für das Objekt »CIM_Setting«.
B.175 Win32_ProtocolBinding Antecedent Dependent
Die Referenz »Antecedent« stellt das Netzwerkprotokoll für den Systemtreiber und den Netzwerkadapter dar. Die Referenz »Dependent« stellt den Systemtreiber dar, der den Netzwerkadapter über das Netzwerkprotokoll dieser Klasse verwendet.
678
Anhang B: WMI Klassenreferenz
Device
Die Referenz »Device« stellt die Eigenschaften des Netzwerkadapters dar, der im Computersystem verwendet wird.
B.176 Win32_PublishComponentAction result as Integer = Invoke
ActionID AppData Caption ComponentID Description Direction
Name Qual SoftwareElementID SoftwareElementState TargetOperatingSystem Version
Die Methode »Invoke« führt einen bestimmten Vorgang aus. Die Ausführungsdetails hängen von der Implementierung ab. Die Ergebnisse der Methode basieren auf dem Rückgabewert. Der Wert 0 wird zurückgegeben, wenn die Bedingung erfüllt wurde. Der Wert 1 wird zurückgegeben, wenn die Methode nicht unterstützt wird. Jeder andere Wert zeigt an, daß die Bedingung nicht erfüllt wurde. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Eine Beschreibung des Objekts. Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. Der Name zum Identifizieren der Softwarekomponente. Der Name zum Identifizieren der Softwarekomponente. »SoftwareElementID« gibt eine ID für die Softwarekomponente an. »SoftwareElementState« gibt den Status der Softwarekomponente an. »TargetOperatingSystem« gibt das Zielbetriebssystem der Softwarekomponente an. Versionsformat: .. oder .
Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »CSName« enthält den lokalen Namen des Computersystems. Der Wert für dieses Mitglied kommt aus der Klasse »CIM_ComputerSystem«. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »FixComments« enthält zusätzliche Kommentare bezüglich des Updates.
B.178 Win32_Refrigeration HotFixID InstallDate InstalledBy InstalledOn Name
ServicePackInEffect
Status
679
Die Eigenschaft »HotFixID« gibt die eindeutige ID an, die einem QFE zugeordnet ist. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »InstalledBy« gibt an, wer das Update installiert hat. Wenn der Wert unbekannt ist, bleibt die Eigenschaft leer. Die Eigenschaft »InstalledOn« gibt das Datum und die Uhrzeit der Updateinstallation an. Wenn der Wert unbekannt ist, bleibt die Eigenschaft leer. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Die Eigenschaft »ServicePackInEffect« gibt an, welches Service Pack beim Ausführen des Updates installiert war. Wenn kein Service Pack installiert war, ist der Wert dieser Eigenschaft SP0. Wenn die Version nicht bestimmt werden kann, ist der Wert dieser Eigenschaft Null. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
B.178 Win32_Refrigeration result as Integer = SetPowerState »SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Pa(PowerState as Integer, Time as rameter »PowerState« folgende Werte festgelegt werden: 1=»Kein EnerDate/Time) giesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an.
Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Der boolesche Wert »ActiveCooling« gibt an, daß die Kühlgerät aktive Kühlung (im Gegensatz zu passiver Kühlung) unterstützt. Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die das Kühlgerät angibt. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b
Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft.
Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »CurrentSize« gibt die aktuelle physikalische Größe der Win32Registrierung an. Beispiel: 10. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »MaximumSize« gibt die maximale Größe der Win32-Registrierung an. Wenn das Mitglied »ProposedSize« einwandfrei verwendet werden kann, sollte »MaximumSize« den gleichen Wert enthalten. Die Eigenschaft »Name« gibt den Namen der Win32-Registrierung an. Die maximale Länge beträgt 256 Zeichen. Beispiel: Microsoft Windows NT Workstation|C:\WINNT40|\Device\Harddisk0\partition1 Die Eigenschaft »ProposedSize« gibt die vorgeschlagene Größe der Win32Registrierung an. Dies ist die einzige Registrierungseinstellung, die geändert werden kann. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
B.180 Win32_RegistryAction result as Integer = Invoke
ActionID Caption Description
Die Methode »Invoke« führt einen bestimmten Vorgang aus. Die Ausführungsdetails hängen von der Implementierung ab. Die Ergebnisse der Methode basieren auf dem Rückgabewert. Der Wert 0 wird zurückgegeben, wenn die Bedingung erfüllt wurde. Der Wert 1 wird zurückgegeben, wenn die Methode nicht unterstützt wird. Jeder andere Wert zeigt an, daß die Bedingung nicht erfüllt wurde. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Eine Beschreibung des Objekts.
B.180 Win32_RegistryAction Direction
EntryName
EntryValue
key
Name Registry
Root
SoftwareElementID SoftwareElementState TargetOperatingSystem Version
683
Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. Der Name zum Identifizieren der Softwarekomponente. The registry value name. If the Value column is null, then the following strings in the Name column have special significance. + The key is to be created, if absent upon the installation of the component. – The key is to be deleted, if present, with all its values and subkeys upon the uninstallation of the component. * The key is to be created, if absent upon the installation of the component AND the key is to be deleted, if present, with all its values and subkeys upon the uninstallation of the component. The registry value name. If the Value column is null, then the following strings in the Name column have special significance. + The key is to be created, if absent upon the installation of the component. – The key is to be deleted, if present, with all its values and subkeys upon the uninstallation of the component. * The key is to be created, if absent upon the installation of the component AND the key is to be deleted, if present, with all its values and subkeys upon the uninstallation of the component. »SoftwareElementID« gibt eine ID für die Softwarekomponente an. »SoftwareElementState« gibt den Status der Softwarekomponente an. »TargetOperatingSystem« gibt das Zielbetriebssystem der Softwarekomponente an. Versionsformat: .. oder .
684
Anhang B: WMI Klassenreferenz
B.181 Win32_RemoveFileAction result as Integer = Invoke
ActionID Caption Description Direction
DirProperty
File FileKey FileName InstallMode Name SoftwareElementID SoftwareElementState TargetOperatingSystem Version
Die Methode »Invoke« führt einen bestimmten Vorgang aus. Die Ausführungsdetails hängen von der Implementierung ab. Die Ergebnisse der Methode basieren auf dem Rückgabewert. Der Wert 0 wird zurückgegeben, wenn die Bedingung erfüllt wurde. Der Wert 1 wird zurückgegeben, wenn die Methode nicht unterstützt wird. Jeder andere Wert zeigt an, daß die Bedingung nicht erfüllt wurde. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Eine Beschreibung des Objekts. Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. Dateiname. Dateiname. Dateiname. Dateiname. Der Name zum Identifizieren der Softwarekomponente. »SoftwareElementID« gibt eine ID für die Softwarekomponente an. »SoftwareElementState« gibt den Status der Softwarekomponente an. »TargetOperatingSystem« gibt das Zielbetriebssystem der Softwarekomponente an. Versionsformat: .. oder .
B.182 Win32_RemoveIniAction result as Integer = Invoke
Action
Die Methode »Invoke« führt einen bestimmten Vorgang aus. Die Ausführungsdetails hängen von der Implementierung ab. Die Ergebnisse der Methode basieren auf dem Rückgabewert. Der Wert 0 wird zurückgegeben, wenn die Bedingung erfüllt wurde. Der Wert 1 wird zurückgegeben, wenn die Methode nicht unterstützt wird. Jeder andere Wert zeigt an, daß die Bedingung nicht erfüllt wurde.
B.183 Win32_ReserveCost ActionID Caption Description Direction
key
Name Section SoftwareElementID SoftwareElementState TargetOperatingSystem Value Version
685
Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Eine Beschreibung des Objekts. Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. Der Name zum Identifizieren der Softwarekomponente. Der Name zum Identifizieren der Softwarekomponente. »SoftwareElementID« gibt eine ID für die Softwarekomponente an. »SoftwareElementState« gibt den Status der Softwarekomponente an. »TargetOperatingSystem« gibt das Zielbetriebssystem der Softwarekomponente an. »TargetOperatingSystem« gibt das Zielbetriebssystem der Softwarekomponente an. Versionsformat: .. oder .
B.183 Win32_ReserveCost result as Integer = Invoke
Caption CheckID CheckMode
Die Aufrufmethode soll eine bestimmte Überprüfung auswerten. Einzelheiten bezüglich der Methode für die Auswertung einer bestimmten Überprüfung in einem CIM-Kontext werden von den nicht abstrakten Teilklassen »CIM_ Check« angezeigt. Die Ergebnisse dieser Auswertungsmethode basieren auf dem zurückgegebenen Wert. A 0 (Null) wird zurückgegeben, wenn die Bedingung erfüllt wurde. Alle anderen Werte zeigen an, daß die Bedingung nicht erfüllt wurde. Eine Kennung, die in Verbindung mit anderen Schlüsseln verwendet wird, um die Überprüfung eindeutig zu identifizieren. Die Eigenschaft »CheckMode« zeigt an, ob eine Bedingung in der Umgebung erfüllt oder nicht erfüllt werden soll. Wenn dieser Wert True ist, soll diese Bedingung erfüllt werden (z.B. eine Datei soll sich auf dem Computer befinden) und daher der Aufruf() als True zurückgegeben werden. Wenn der Wert falsch ist, soll diese Bedingung nicht erfüllt werden (z.B. eine Datei soll sich nicht auf dem Computer befinden) und daher der Aufruf als falsch zurückgegeben werden.
686
Anhang B: WMI Klassenreferenz
Description Name ReserveFolder ReserveKey ReserveLocal ReserveSource SoftwareElementID SoftwareElementState TargetOperatingSystem Version
Eine Beschreibung der Objekte. Der Name zum Identifizieren der Softwarekomponente. Der Name zum Identifizieren der Softwarekomponente. Der Name zum Identifizieren der Softwarekomponente. Der Name zum Identifizieren der Softwarekomponente. Der Name zum Identifizieren der Softwarekomponente. Kennung für die Softwarekomponente. Der Status einer Softwarekomponente. Zielbetriebssystem der Softwarekomponente. Versionsformat: .. oder .
B.184 Win32_SCSIController result as Integer = SetPowerState »SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Pa(PowerState as Integer, Time as rameter »PowerState« folgende Werte festgelegt werden: 1=»Kein EnerDate/Time) giesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. result as Integer = Reset Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Availability Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Caption Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an.
LastErrorCode Manufacturer MaxDataWidth MaxNumberControlled MaxTransferRate Name
PNPDeviceID
687
Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die den SCSIController von anderen Geräten im System unterscheidet. Die Eigenschaft »DeviceMap« gibt die Reihenfolge an, in der Geräte im SCSI-Controller aufgelistet sind. Die Eigenschaft »DriverName« gibt den Treiberdateinamen des SCSIControllers an. Beispiel: Adaptec Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Die Eigenschaft »HardwareVersion« gibt die Versionsnummer des SCSIControllers an. Beispiel: 1.25 Die Eigenschaft »Index« gibt die Indexnummer des SCSI-Controllers in der Systemregistrierung an. Beispiel: 0. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »Manufacturer« gibt den Hersteller des SCSI-Controllers an. Beispiel: Adaptec Die Eigenschaft »Manufacturer« gibt den Hersteller des SCSI-Controllers an. Beispiel: Adaptec Maximale Anzahl der direkt adressierbaren Einheiten, die vom Controller unterstützt werden. Wenn der Wert unbekannt ist, geben Sie 0 ein. Maximale Anzahl der direkt adressierbaren Einheiten, die vom Controller unterstützt werden. Wenn der Wert unbekannt ist, geben Sie 0 ein. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b
688
Anhang B: WMI Klassenreferenz
PowerManagementCapabilities
PowerManagementSupported
ProtectionManagement ProtocolSupported Status
StatusInfo
SystemCreationClassName
SystemName
Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Eine Aufzählung, die angibt, ob der SCSI-Controller Redundanz oder Schutz gegen Gerätefehler bietet. Das vom Controller zum Zugriff auf gesteuerte Geräte verwendete Protokoll. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft.
B.185 Win32_SCSIControllerDevice TimeOfLastReset
689
Die Eigenschaft »TimeOfLastReset« gibt an, wann der Controller zuletzt zurückgesetzt (ausgeschalten oder erneut initialisiert) wurde.
B.185 Win32_SCSIControllerDevice AccessState
Antecedent Dependent NegotiatedDataWidth
NegotiatedSpeed
NumberOfHardResets NumberOfSoftResets
Die Eigenschaft »AccessState« gibt an, ob der Controller das Gerät steuert oder darauf zugreift (Wert=1) oder nicht (Wert=2). Es kann auch der Wert »Unbekannt« (0) definiert werden. Diese Informationen sind erforderlich, wenn ein logisches Gerät von mehreren Controllern gesteuert werden kann. Die Referenz »Win32_SCSIController« stellt den dem Gerät zugeordneten SCSI-Controller dar. Die Referenz »CIM_LogicalDevice« stellt das mit dem SCSI-Controller verbundene logische Gerät dar. Wenn mehrere Bus- und/oder Verbindungsdatenbreiten möglich sind, definiert die Eigenschaft »NegotiatedDataWidth« die verwendete Datenbreite in Bits. Wenn die Datenbreite nicht ausgehandelt wurde oder diese Informationen nicht verfügbar sind, sollte der Wert der Eigenschaft 0 sein. Wenn mehrere Bus- und/oder Verbindungsgeschwindigkeiten möglich sind, definiert die Eigenschaft »NegotiatedSpeed« die verwendete Geschwindigkeit in Bits pro Sekunde. Wenn die Verbindungs- oder Busgeschwindigkeit nicht ausgehandelt wurde oder diese Informationen nicht verfügbar sind, sollte der Wert der Eigenschaft 0 sein. Anzahl der vom Controller ausgelösten Kaltstarts. Anzahl der vom Controller ausgelösten Warmstarts.
Der Name des Kontos, dem die SID zugeordnet ist. SID im binären Format. Der Domäne des Kontos, dem die SID zugeordnet ist. SID im Zeichenkettenformat. SID im Zeichenkettenformat.
690
Anhang B: WMI Klassenreferenz
B.187 Win32_SMBIOSMemory result as Integer = SetPowerState »SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Pa(PowerState as Integer, Time as rameter »PowerState« folgende Werte festgelegt werden: 1=»Kein EnerDate/Time) giesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. result as Integer = Reset Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Access Die Eigenschaft »Access« gibt an, ob das Medium lesbar (Wert=1), beschreibbar (Wert=2) oder beides (Wert=3) ist. »Unbekannt« (0) kann ebenfalls definiert werden. AdditionalErrorData Die Eigenschaft »AdditionalErrorData« enthält zusätzliche Fehlerinformationen. Ein Beispiel ist das ECC-Syndrom oder die Rückgabe der Prüfbits, wenn eine CRC-basierte Fehlermethode verwendet wird. Wenn ein Einzelbit-Fehler gefunden wird und der CRC-Algorithmus bekannt ist, ist es möglich, das fehlerhafte Bit zu bestimmen. Dieser Datentyp (ECCSyndrom, Prüfbit, Paritätsbit oder andere Herstellerinformationen) ist in diesem Feld enthalten. Diese Eigenschaft wird nur verwendet, wenn die Eigenschaft »ErrorInfo« nicht 3 ist. Availability Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. BlockSize Größe der Speichererweiterungsblöcke in Bytes. Geben Sie 1 ein, wenn die Größe unbekannt oder ein Blockkonzept ungültig ist (z.B. für zusammengesetzte Erweiterungen, Speicher oder logische Datenträger).
Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Die Eigenschaft »CorrectableError« gibt an, ob der letzte Fehler korrigierbar war. Diese Eigenschaft wird nicht verwendet, wenn »ErrorInfo« 3 ist. Werte: True oder False. True gibt an, daß der Fehler korrigierbar ist. Die Eigenschaft »CorrectableError« gibt an, ob der letzte Fehler korrigierbar war. Diese Eigenschaft wird nicht verwendet, wenn »ErrorInfo« 3 ist. Werte: True oder False. True gibt an, daß der Fehler korrigierbar ist. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. »DeviceID« enthält eine Adresse oder andere Informationen, um das logische Gerät eindeutig zu benennen. Die Eigenschaft »EndingAddress« gibt die Endadresse an, auf die von einer Anwendung oder dem Betriebssystem verwiesen wird. Diese Speicheradresse wird von einem Speichercontroller für das Speicherobjekt zugeordnet. Die Eigenschaft »ErrorAccess« gibt den Speichervorgang an, der den letzten Fehler verursacht hat. Diese Eigenschaft ist nur gültig, wenn »ErrorInfo« nicht 3 ist. Die Eigenschaft »ErrorAddress« gibt die Adresse des letzten Speicherfehlers an. Diese Eigenschaft wird nur verwendet, wenn »ErrorInfo« nicht 3 ist. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die Eigenschaft »ErrorData« enthält die Daten des letzten Speicherzugriffs mit einem Fehler. Die Daten belegen das erste N-Oktett des Datenfelds, das für die in der Eigenschaft »ErrorTransferSize« angegebenen Bits erforderlich ist. Wenn der Wert 0 ist, wird diese Eigenschaft nicht verwendet. Die Eigenschaft »ErrorDataOrder« gibt die Reihenfolge der in der Eigenschaft »ErrorData« gespeicherten Daten an. Diese Eigenschaft wird nur verwendet, wenn »ErrorTransferSize« 0 ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Die Eigenschaft »ErrorInfo« beschreibt den Typ des zuletzt aufgetretenen Fehlers. Die Werte 12 bis 14 werden in dieser Eigenschaft nicht verwendet. Diese Werte geben in der Eigenschaft »CorrectableError« an, ob ein Fehler korrigierbar ist. Die Eigenschaft »ErrorMethodology« gibt den Typ der von der Speicherhardware verwendeten Fehlerüberprüfung an.
Die Eigenschaft »ErrorResolution« gibt die Datenmenge des letzten Fehlers an. Diese Eigenschaft wird nicht verwendet, wenn »ErrorInfo« 3 ist. Die Eigenschaft »ErrorTime« gibt den Zeitpunkt des letzten Speicherfehlers an. Diese Eigenschaft ist nur gültig, wenn »ErrorInfo« nicht 3 ist. Die Eigenschaft »ErrorTransferSize« gibt die Größe der übertragenen Daten an, die den letzten Fehler enthalten. Diese Eigenschaft ist 0, wenn kein Fehler aufgetreten ist. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Gesamtanzahl der aufeinander folgenden Blöcke. Jeder Block entspricht in der Größe dem in der Eigenschaft »BlockSize« angegebenen Wert. Die Gesamtgröße der Speichererweiterung kann berechnet werden, indem der Wert der Eigenschaft »BlockSize« mit dem Wert dieser Eigenschaft multipliziert wird. Wenn der Wert in »BlockSize« 1 ist, gibt diese Eigenschaft die Gesamtgröße der Speichererweiterung an. Die Eigenschaft »OtherErrorDescription« enthält weitere Informationen, wenn die Eigenschaft »ErrorInfo« 1 ist. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Formfreie Zeichenfolge, die das Medium und/oder seine Verwendung beschreibt.
B.188 Win32_ScheduledJob StartingAddress
Status
StatusInfo
SystemCreationClassName
SystemLevelAddress
SystemName
693
Die Eigenschaft »StartingAddress« gibt die Startadresse an, auf die von einer Anwendung oder dem Betriebssystem verwiesen wird. Diese Speicheradresse wird von einem Speichercontroller für das Speicherobjekt zugeordnet. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Eigenschaft »SystemLevelAddress« gibt an, ob es sich bei den Adressinformationen in der Eigenschaft »ErrorAddress« um eine Systemadresse (TRUE) oder eine physikalische Adresse (FALSE) handelt. Diese Eigenschaft wird nur verwendet, wenn der Wert für die Eigenschaft »ErrorInfo« 3 ist. Werte: TRUE oder FALSE. TRUE gibt an, daß »ErrorAddress« eine Systemadresse enthält. Die Eigenschaft »SystemLevelAddress« gibt an, ob es sich bei den Adressinformationen in der Eigenschaft »ErrorAddress« um eine Systemadresse (TRUE) oder eine physikalische Adresse (FALSE) handelt. Diese Eigenschaft wird nur verwendet, wenn der Wert für die Eigenschaft »ErrorInfo« 3 ist. Werte: TRUE oder FALSE. TRUE gibt an, daß »ErrorAddress« eine Systemadresse enthält.
B.188 Win32_ScheduledJob result as Integer = Create(Command as String, DaysOfMonth as Integer, DaysOfWeek as Integer, InteractWithDesktop as Boolean, RunRepeatedly as Boolean, StartTime as Date/Time)
Die Funktion »Create« sendet einen Auftrag zum Ausführen zu einem angegebenen Zeitpunkt an das Betriebssystem. Diese Funktion erfordert, daß der Planungsdienst auf dem Computer, an den der Auftrag gesendet wird, gestartet ist. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Network Management Functions|NetScheduleJobAdd
694
Anhang B: WMI Klassenreferenz
Command=Der Parameter »Command« enthält den Namen des Befehls, des Batchprogramms oder der binären Datei (mit Befehlszeilenparametern), die der Planungsdienst verwendet, um den Auftrag zu starten. Beispiel: defrag /q /f DaysOfMonth=Der Parameter »DaysOfMonth« gibt die Tage des Monats an, für die der Auftrag geplant ist, und wird nur verwendet, wenn der Parameter »RunRepeatedly« TRUE ist. Optional=Wahr DaysOfWeek=Der Parameter »DaysOfWeek« gibt den Wochentag an, für den der Auftrag geplant ist, und wird nur verwendet, wenn der Parameter »RunRepeatedly« TRUE ist. BitValues = Array: 0=Montag 1=Dienstag 2=Mittwoch 3=Donnerstag 4=Freitag 5=Samstag 6=Sonntag Optional=Wahr InteractWithDesktop=Der Parameter »InteractWithDesktop« gibt an, ob der angegebene Auftrag interaktiv ist; d.h. die Benutzereingabe für einen geplanten Auftrag ist möglich, während dieser ausgeführt wird. Werte: TRUE oder FALSE. TRUE gibt an, daß der Auftrag interaktiv ist. Der Standardwert für diesen Parameter ist FALSE. Optional=Wahr RunRepeatedly=Der Parameter »RunRepeatedly« gibt an, ob der Auftrag an den geplanten Tagen wiederholt wird. Werte: TRUE oder FALSE. TRUE gibt an, daß der Auftrag entsprechend den Parametern »DaysOfWeek« und »DaysOfMonth« wieder-
B.188 Win32_ScheduledJob
695
holt ausgeführt wird. Wenn kein Wert angegeben wird, ist FALSE der Standard. Optional=Wahr StartTime=Der Parameter »SMBIOSBIOSVersion« gibt die UTC-Zeit zum Ausführen des Auftrags in folgendem Format an: YYYYMMDDHHMMSS.MMMMM M(+-)OOO. YYYYMMDD muß durch ******** ersetzt werden. Beispiel: ********123000.000000-420 gibt 12:30 pm PST mit aktiver Sommerzeit an. result as Integer =Delete Die Methode »Delete« löscht einen geplanten Auftrag. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Network Management Functions|NetScheduleJobDel Caption Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Command Die Eigenschaft »Command« enthält den Namen des Befehls, des Batchprogramms oder der binären Datei (mit Befehlszeilenargumenten), die der Planungsdienst verwendet, um den Auftrag zu starten. Beispiel: defrag /q /f DaysOfMonth Die Eigenschaft »DaysOfMonth« gibt den Tag des Monats an, für den der Auftrag geplant ist. DaysOfWeek Die Eigenschaft »DaysOfWeek« gibt den Wochentag an, für den der Auftrag geplant ist. Description Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. ElapsedTime Zeitraum, in dem der Auftrag ausgeführt wurde. InstallDate Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. InteractWithDesktop Die Eigenschaft »InteractWithDesktop« läßt einen interaktiven Auftrag zu; d.h. die Benutzereingabe für einen geplanten Auftrag ist möglich, während dieser ausgeführt wird. Werte: TRUE oder FALSE. TRUE gibt an, daß der Auftrag interaktiv ist. JobId Die Eigenschaft »JobId« gibt die Auftragskennung an. Diese Eigenschaft wird als Handle für einen geplanten Auftrag verwendet. JobStatus Die Eigenschaft »JobStatus« gibt an, ob ein geplanter Dienst beim letzten Start des Auftrags einwandfrei ausgeführt wurde. Name Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden.
696
Anhang B: WMI Klassenreferenz
Notify Owner Priority RunRepeatedly
StartTime
Status
TimeSubmitted UntilTime
Bei Auftragsbeendigung oder Fehler zu benachrichtigender Benutzer. Benutzer, der den Auftrag gesendet hat. Die Priorität gibt an, wie wichtig oder dringend der Auftrag ist bzw. ausgeführt werden muß. Die Eigenschaft »RunRepeatedly« gibt an, ob der Auftrag an den geplanten Tagen wiederholt wird. Werte: TRUE oder FALSE. TRUE gibt an, daß der Auftrag wiederholt wird. FALSE gibt an, daß der Auftrag einmal ausgeführt wird. Die Eigenschaft »SMBIOSBIOSVersion« gibt die UTC-Zeit zum Ausführen des Auftrags in folgendem Format an: YYYYMMDDHHMMSS.MMMMMM(+-)OOO. YYYYMMDD muß durch ******** ersetzt werden. Das Ersetzen ist erforderlich, da der geplante Dienst das Konfigurieren von Aufträgen nur an einem Tag des Monats, der Woche oder einmal zuläßt. Beispiel: ********123000.000000-420 gibt 12:30 pm PST mit aktiver Sommerzeit an. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Zeitpunkt, zu dem der Auftrag gesendet wurde. Zeitraum, nach dem der Auftrag ungültig wird oder angehalten werden sollte.
B.189 Win32_SecurityDescriptor ControlFlags DACL Group Owner SACL
Bitflags mit Informationen über den Inhalt und das Format der Beschreibung. Win32_ACE-Einträge die den Zugriff auf das Objekt festlegen. Der Vertrauensnehmer, der die Objektgruppe darstellt. Der Vertrauensnehmer, der den Objektbesitzer darstellt. Win32_ACE-Einträge die angeben, für welche Benutzer/Gruppen Überwachungsinformationen zusammengestellt werden.
B.190 Win32_SecuritySetting
697
B.190 Win32_SecuritySetting result as Integer = GetSecurityDescriptor result as Integer = SetSecurityDescriptor (Descriptor as CIM-Object) Caption ControlFlags Description SettingID
Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Die Kennung für das Objekt »CIM_Setting«.
B.191 Win32_SecuritySettingAccess AccessMask GuidInheritedObjectType GuidObjectType Inheritance SecuritySetting Trustee Type
Bitflags, die angeben, welche Berechtigungen betroffen sind. Die GUID des Objekttyps von dem dieses Objekt erbt. Die GUID des Objekttyps, dem die Sicherheitseinstellungen zugewiesen sind. Bitflags, die die Vererbungsmethode der Zugriffsrechte angeben. Die Sicherheitseinstellungen eines Objekts. Die Win32_SID des Vertrauensnehmers für diesen Zugriffseintrag. Der für den Vertrauensnehmer angegebene Zugriffstyp.
B.192 Win32_SecuritySettingAuditing AuditedAccessMask GuidInheritedObjectType GuidObjectType Inheritance SecuritySetting Trustee Type
Bitflags, die angeben, welche Vorgänge überwacht werden. Die GUID des Objekttyps von dem dieses Objekt erbt. Die GUID des Objekttyps, dem die Sicherheitseinstellungen zugewiesen sind. Bitflags, die die Vererbungsmethode der Überwachungsrichtlinien angeben. Die Sicherheitseinstellungen eines Objekts. Die Win32-SID des Vertrauensnehmers für den Überwachungseintrag. Der für den Vertrauensnehmer angegebene Zugriffstyp.
B.193 Win32_SecuritySettingGroup Group SecuritySetting
Die Win32-SID der Objektgruppe. Die Sicherheitseinstellungen eines Objekts.
698
Anhang B: WMI Klassenreferenz
B.194 Win32_SecuritySettingOfLogicalFile Element Setting
Die Datei oder das Verzeichnis Die Sicherheitseinstellungen der Datei oder des Verzeichnisses.
B.195 Win32_SecuritySettingOfLogicalShare Element Setting
Die Freigabe. Die Sicherheitseinstellungen der Freigabe.
B.196 Win32_SecuritySettingOfObject Element Setting
Objekt mit Sicherheitseinstellungen Die Sicherheitseinstellungen des Objekts.
Die Win32-SID des Objektbesitzers. Die Sicherheitseinstellungen eines Objekts.
B.198 Win32_SelfRegModuleAction result as Integer = Invoke
ActionID Caption Cost Description
Die Methode »Invoke« führt einen bestimmten Vorgang aus. Die Ausführungsdetails hängen von der Implementierung ab. Die Ergebnisse der Methode basieren auf dem Rückgabewert. Der Wert 0 wird zurückgegeben, wenn die Bedingung erfüllt wurde. Der Wert 1 wird zurückgegeben, wenn die Methode nicht unterstützt wird. Jeder andere Wert zeigt an, daß die Bedingung nicht erfüllt wurde. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Eine Beschreibung des Objekts.
B.199 Win32_SerialPort Direction
File
Name SoftwareElementID SoftwareElementState TargetOperatingSystem Version
699
Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. Der Name zum Identifizieren der Softwarekomponente. »SoftwareElementID« gibt eine ID für die Softwarekomponente an. »SoftwareElementState« gibt den Status der Softwarekomponente an. »TargetOperatingSystem« gibt das Zielbetriebssystem der Softwarekomponente an. Versionsformat: .. oder .
B.199 Win32_SerialPort result as Integer = SetPowerState »SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Pa(PowerState as Integer, Time as rameter »PowerState« folgende Werte festgelegt werden: 1=»Kein EnergieDate/Time) sparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. result as Integer = Reset Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Availability Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet.
Die Eigenschaft »Binary« gibt an, ob der serielle Anschluß für die binäre Datenübertragung konfiguriert ist. Der Wert dieser Eigenschaft muß TRUE sein, da das Übertragen von nicht binären Daten nicht von der Win32-API unterstützt wird. FALSE kann nicht angegeben werden. Werte: TRUE oder FALSE. TRUE gibt an, daß der serielle Anschluß für die binäre Datenübertragung konfiguriert ist. Die Eigenschaft »Capabilities« definiert die Chipkompatibilität des seriellen Controllers und beschreibt die Puffer und andere Funktionen, die in der Chiphardware vererbt werden können. Formfreie Zeichenfolgen mit genaueren Erklärungen zu den im Datenfeld »Capabilities« angezeigten Funktionen des seriellen Controllers. Jeder Eintrag in diesem Array bezieht sich auf den Eintrag im Datenfeld »Capabilities« unter dem gleichen Index. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die den seriellen Anschluß von anderen Geräten im System unterscheidet. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »MaximumInputBufferSize« gibt die maximale Größe des internen Eingabepuffers des seriellen Anschlusstreibers an. Der Wert Null gibt an, daß kein maximaler Wert festgelegt wurde. Die Eigenschaft »MaximumOutputBufferSize« gibt die maximale Größe des internen Ausgabepuffers des seriellen Anschlusstreibers an. Der Wert Null gibt an, daß kein maximaler Wert festgelegt wurde. Maximale Anzahl der direkt adressierbaren Einheiten, die vom Controller unterstützt werden. Wenn der Wert unbekannt ist, geben Sie 0 ein. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden.
B.199 Win32_SerialPort OSAutoDiscovered
PNPDeviceID PowerManagementCapabilities
PowerManagementSupported
ProtocolSupported ProviderType SettableBaudRate
SettableDataBits
SettableFlowControl
SettableParity
SettableParityCheck
701
Die Eigenschaft »OSAutoDiscovered« definiert die Instanzen dieser Klasse, die automatisch vom Betriebssystem erkannt wurden. Wenn z.B. Hardware über die Systemsteuerung hinzugefügt wurde, erkennt das Betriebssystem Instanzen dieser Klasse durch Abfragen der Hardware. Der Wert TRUE gibt an, daß die Instanz automatisch erkannt wurde. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Das vom Controller zum Zugriff auf gesteuerte Geräte verwendete Protokoll. Die Eigenschaft »ProviderType« gibt den Kommunikationsanbietertyp an. Die Eigenschaft »SettableBaudRate« gibt an, ob die Baudrate für den seriellen Anschluß geändert werden kann. Werte: TRUE oder FALSE. TRUE gibt an, daß die Baudrate geändert werden kann. Die Eigenschaft »SettableDataBits« gibt an, ob für den seriellen Anschluß Datenbits festgelegt werden können. Werte: TRUE oder FALSE. TRUE gibt an, daß Datenbits festgelegt werden können. Die Eigenschaft »SettableFlowControl« gibt an, ob für den seriellen Anschluß die Flußsteuerung festgelegt werden kann. Werte: TRUE oder FALSE. TRUE gibt an, daß die Flußsteuerung festgelegt werden kann. Die Eigenschaft »SettableParity« gibt an, ob die Parität für den seriellen Anschluß festgelegt werden kann. Werte: TRUE oder FALSE. TRUE gibt an, daß die Parität festgelegt werden kann. Die Eigenschaft »SettableParityCheck« gibt an, ob die Paritätsprüfung für den seriellen Anschluß festgelegt werden kann (wenn die Paritätsprüfung unterstützt wird). Werte: TRUE oder FALSE. TRUE gibt an, daß die Paritätsprüfung festgelegt werden kann.
702
Anhang B: WMI Klassenreferenz
SettableRLSD
SettableStopBits
Status
StatusInfo
Supports16BitMode
SupportsDTRDSR
SupportsElapsedTimeouts
SupportsIntTimeouts
SupportsParityCheck
SupportsRLSD
Die Eigenschaft »SettableRLSD« gibt an, ob für den seriellen Anschluß RLSD (Received Line Signal Detect) festgelegt werden können, wenn RLSD unterstützt wird. Werte: TRUE oder FALSE. TRUE gibt an, daß die RLSD festgelegt werden kann. Die Eigenschaft »SettableStopBits« gibt an, ob für den seriellen Anschluß Stoppbits festgelegt werden können. Werte: TRUE oder FALSE. TRUE gibt an, daß Stoppbits festgelegt werden können. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Eigenschaft »Supports16BitMode« gibt an, ob der 16-Bit-Modus von diesem seriellen Anschluß unterstützt wird. Werte: TRUE oder FALSE. TRUE gibt an, daß der 16-Bit-Modus unterstützt wird. Die Eigenschaft »SupportsDTRDSR« gibt an, ob DTR-Signale (Data Terminal Ready) oder DSR-Signale (Data Set Ready) von diesem seriellen Anschluß unterstützt werden. Werte: TRUE oder FALSE. TRUE gibt an, daß DTR- und DSR-Signale unterstützt werden. Die Eigenschaft »SupportsElapsedTimeouts« gibt an, ob Zeitüberschreitungen am seriellen Anschluß unterstützt werden. Zeitüberschreitungen überwachen den gesamten Zeitraum zwischen Datenübertragungen. Werte: TRUE oder FALSE. TRUE gibt an, daß Zeitüberschreitungen unterstützt werden. Die Eigenschaft »SupportsIntTimeouts« gibt an, ob Zeitabstände unterstützt werden. Ein Zeitabstand ist der zwischen dem Empfang von Daten zulässige Zeitraum. Werte: TRUE oder FALSE. TRUE gibt an, daß Zeitabstände unterstützt werden. Die Eigenschaft »SupportsParityCheck« gibt an, ob die Paritätsprüfung von diesem seriellen Anschluß unterstützt wird. Werte: TRUE oder FALSE. TRUE gibt an, daß die Paritätsprüfung unterstützt wird. Die Eigenschaft »SupportsRLSD« gibt an, ob RLSD (Received Line Signal Detect) von diesem seriellen Anschluß unterstützt wird. Werte: TRUE oder FALSE. TRUE gibt an, daß RLSD wird.
Die Eigenschaft »SupportsRTSCTS« gibt an, ob RTS-Signale (Ready To Send) oder CTS-Signale (Clear To Send) von diesem seriellen Anschluß unterstützt werden. Werte: TRUE oder FALSE. TRUE gibt an, daß RTSund CTS-Signale unterstützt werden. Die Eigenschaft »SupportsSpecialCharacters« gibt an, ob Steuerzeichen für den seriellen Anschluß unterstützt werden. Es werden Ereignisse anstelle von Daten angegeben. Diese Zeichen können nicht angezeigt werden und werden vom Treiber festgelegt. Beispiel: EofChar, ErrorChar, BreakChar, EventChar, XonChar und XoffChar. Werte: TRUE oder FALSE. TRUE gibt an, daß die Zeichen unterstützt werden. Die Eigenschaft »SupportsXOnXOff« gibt an, ob die XON/XOFFFlußsteuerung von diesem seriellen Anschluß unterstützt wird. Werte: TRUE oder FALSE. TRUE gibt an, daß XON/XOFF unterstützt wird. Die Eigenschaft »SupportsXOnXOffSet« gibt an, ob der Kommunikationsanbieter die Konfiguration der XON/XOFF-Flußsteuerung unterstützt. Werte: TRUE oder FALSE. TRUE gibt an, daß die XON/XOFFFlußsteuerung unterstützt wird. Die Eigenschaft »SupportsXOnXOffSet« gibt an, ob der Kommunikationsanbieter die Konfiguration der XON/XOFF-Flußsteuerung unterstützt. Werte: TRUE oder FALSE. TRUE gibt an, daß die XON/XOFFFlußsteuerung unterstützt wird. Die Eigenschaft »SupportsXOnXOffSet« gibt an, ob der Kommunikationsanbieter die Konfiguration der XON/XOFF-Flußsteuerung unterstützt. Werte: TRUE oder FALSE. TRUE gibt an, daß die XON/XOFFFlußsteuerung unterstützt wird. Die Eigenschaft »TimeOfLastReset« gibt an, wann der Controller zuletzt zurückgesetzt (ausgeschalten oder erneut initialisiert) wurde.
Die Eigenschaft »AbortReadWriteOnError« gibt an, ob Lese- und Schreibvorgänge abgebrochen werden, wenn ein Fehler auftritt. Werte: TRUE oder FALSE. TRUE gibt an, daß der Treiber alle Lese- und Schreibvorgänge abbricht, wenn ein Fehler auftritt. Der Treiber akzeptiert keine weiteren Vorgänge, bis der Fehler vom Programm bestätigt wird. Die Eigenschaft »BaudRate« gibt die Baudrate (Bits pro Sekunde) des Kommunikationsgeräts an. Beispiel: 9600 Die Eigenschaft »BinaryModeEnabled« gibt an, ob die binäre Datenübertragung für den seriellen Anschluß aktiviert ist. Dieser Wert ist immer TRUE, da in Win32-Systemen die binäre Übertragung nur über serielle Anschlüsse zulässig ist.
704
Anhang B: WMI Klassenreferenz
BitsPerByte
Caption ContinueXMitOnXOff
CTSOutflowControl
Description DiscardNULLBytes
DSROutflowControl
DSRSensitivity
DTRFlowControlType
EOFCharacter ErrorReplaceCharacter
ErrorReplacementEnabled
Die Eigenschaft »BitsPerByte« gibt die Anzahl der am seriellen Win32Anschluß gesendeten und empfangenen Bits für jedes Datenbyte an. Die Anzahl variiert mit den Steuer- und Fehlerkorrekturbits, z.B. Paritätsbits. Beispiel: 8 Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Die Eigenschaft »ContinueXMitOnXOff« gibt an, ob die Datenübertragung fortgesetzt wird, wenn der Empfangspuffer beinahe voll ist und das XoffCharZeichen gesendet wurde. Werte: TRUE oder FALSE. TRUE gibt an, daß die Übertragung fortgesetzt wird, wenn nur noch XoffLim-Bytes im Eingabepuffer verfügbar sind und der Treiber das XoffChar-Zeichen gesendet hat, um den Empfang anzuhalten. FALSE gibt an, daß die Übertragung nicht fortgesetzt wird, bis im Eingabepuffer XonLim-Bytes verfügbar sind und der Treiber das XonChar-Zeichen gesendet hat, um den Empfang fortzusetzen. Die Eigenschaft »CTSOutflowControl« bestimmt, ob CTS (Clear To Send) vor der Datenübertragung aktiviert wird. Werte: TRUE oder FALSE. TRUE gibt an, daß die Übertragung bis zum Senden des CTS-Signals angehalten wird. Eine Textbeschreibung des Objekts »CIM_Setting«. Die Eigenschaft »DiscardNULLBytes« bestimmt, ob NULL-Bytes (Zeichen) beim Empfangen gelöscht werden. Werte: TRUE oder FALSE. TRUE gibt an, daß NULL-Bytes gelöscht werden. Die Eigenschaft »DSROutflowControl« bestimmt, ob die Datenflußsteuerung aktiviert wird, wenn eine DSR-Bedingung vorliegt. DSR gibt an, daß die Verbindung über den seriellen Anschluß eingerichtet wurde. Werte: TRUE oder FALSE. TRUE gibt an, daß die Übertragung bis zum Senden des DSR-Signals angehalten wird. Die Eigenschaft »DSRSensitivity« gibt an, ob der Kommunikationstreiber den Status des DSR-Signals erkennt. Werte: TRUE oder FALSE. TRUE gibt an, daß der Treiber empfangene Bits ignoriert, außer die DSR-Modemleitung ist aktiv. Die Eigenschaft »DTRFlowControlType« gibt die Verwendung der DTRFlußsteuerung nach dem Herstellen einer Verbindung an. Möglicher DTRStatus: Aktiviert (zeigt an, daß die Verbindung aktiv ist) oder deaktiviert (ignoriert DTR nach dem Empfang). DTR kann auch als Flag für die Datenflußsteuerung verwendet werden. Die Eigenschaft »EOFCharacter« gibt den Wert des Zeichens für das Datenende an. Beispiel: ^Z Die Eigenschaft »ErrorReplaceCharacter« gibt den Wert des Zeichens zum Ersetzen der Bytes an, die mit einem Paritätsfehler empfangen wurden. Beispiel: ^C »ErrorReplacementEnabled« gibt an, ob Bytes, die mit Paritätsfehlern empfangen wurden, durch den Wert »ErrorReplaceCharacter« ersetzt werden. Zeichen mit Paritätsfehlern werden nur ersetzt, wenn dieses Mitglied TRUE und die Parität aktiviert ist.
Die Eigenschaft »EventCharacter« enthält den Wert des Steuerzeichens, das ein Ereignis, z.B. das Datenende, angibt. Beispiel: ^e Die Eigenschaft »IsBusy« gibt an, ob der serielle Anschluß verwendet wird. Werte: TRUE oder FALSE. TRUE gibt an, daß der serielle Anschluß verwendet wird. Die Eigenschaft »Name« gibt den Namen des seriellen Win32-Anschlusses an. Beispiel: COM1 Die Eigenschaft »Parity« gibt die Methode der verwendeten Paritätsprüfung an. Die Parität wird als eine Fehlerprüfmethode verwendet, wenn ein zusätzliches Paritätsbit in jeder Dateneinheit enthalten ist. Bei gerader Parität wird das Paritätsbit verwendet, um alle Bits auf eine gerade Zahl zu setzen. Die Gültigkeit der Daten kann durch Zählen der gesetzten Bits überprüft werden. Ungerade Parität setzt die Paritätsbits auf ungerade Zahlen fest. Markierungsparität verwendet immer 1; Bereichsparität verwendet immer 0. Beispiel: Gerade Die Eigenschaft »ParityCheckEnabled« legt fest, ob die Paritätsprüfung aktiviert ist. Werte: TRUE oder FALSE. TRUE gibt an, daß die Paritätsprüfung aktiviert ist. Die Eigenschaft »RTSFlowControlType« gibt die RTS-Flußsteuerung an. RTS wird verwendet, um zu signalisieren, daß Daten zum Übertragen verfügbar sind. Werte: Deaktivieren – RTS wird ignoriert, nachdem das erste RTSSignal empfangen wurde. Aktivieren – RTS ist für die Datenübertragungssitzung aktiv. Handshake – RTS ist deaktiviert, wenn der Übertragungspuffer mehr als dreiviertel voll ist; und aktiviert, wenn der Puffer weniger als halb voll ist. Umschalten – RTS ist aktiviert, wenn Daten zum Übertragen gepuffert sind. Die Kennung für das Objekt »CIM_Setting«. »StopBits« gibt die Anzahl der verwendeten Stoppbits an. Jede Dateneinheit auf einer asynchronen seriellen Verbindung wird getrennt und ununterbrochen gesendet, wenn keine Daten für die Übertragung vorhanden sind. Beispiel: 1 Die Eigenschaft »XOffCharacter« gibt den Wert des XOFF-Zeichens für das Senden und Empfangen an. XOFF ist ein Softwaresignal, das die Datenübertragung anhält (RTS und CTS sind Hardwaresignale). XON setzt die Übertragung fort. Die Eigenschaft »XOffXMitThreshold« gibt die maximal erlaubte Byteanzahl im Eingabepuffer an, bevor das XOFF-Zeichen gesendet wird. Die Eigenschaft »XON character« gibt den Wert des XON-Zeichens für das Senden und Empfangen an. XON ist ein Softwaresignal, das die Datenübertragung fortsetzt (RTS und CTS sind Hardwaresignale). XOFF hält die Übertragung an.
706
Anhang B: WMI Klassenreferenz
XOnXMitThreshold
XOnXOffInFlowControl
XOnXOffOutFlowControl
Die Eigenschaft »XOnXMitThreshold« gibt die minimal erlaubte Byteanzahl im Eingabepuffer an, bevor das XON-Zeichen gesendet wird. Dieses Mitglied reguliert in Verbindung mit der Eigenschaft »XOffXMitThreshold« die Datenübertragungsrate. Die Eigenschaft »XOnXOffInFlowControl« gibt an, ob die XON/XOFFFlußsteuerung während dem Empfang verwendet wird. Werte: TRUE oder FALSE. TRUE gibt an, daß »XOffCharacter« gesendet wird, wenn im Eingabepuffer nur noch XOffXMitThreshold Bytes verfügbar sind, und daß »XOnCharacter« gesendet wird, wenn im Eingabepuffer XOnXMitThreshold Bytes verfügbar sind. »XOnXOffOutFlowControl« gibt an, ob die XON/XOFF-Flußsteuerung während der Übertragung verwendet wird. Werte: TRUE oder FALSE. TRUE gibt an, daß die Übertragung bei Empfang des XOff-Zeichens angehalten und bei Empfang des XOn-Zeichens fortgesetzt wird.
B.201 Win32_SerialPortSetting Element Setting
Die Referenz »Element« stellt den seriellen Win32-Anschluß dar, der die Eigenschaften eines seriellen Anschlusses im Computersystem enthält. Die Referenz »Setting« stellt die serielle Win32-Anschlusskonfiguration dar, die eine Konfigurationseinstellung für den seriellen Anschluß enthält.
B.202 Win32_Service result as Integer = StartService
Die Methode »StartService« startet den Dienst. Folgende Werte werden zurückgegeben: 0 – Die Anforderung wurde angenommen. 1 – Die Anforderung wird nicht unterstützt. 2 – Der Benutzer verfügt nicht über die erforderlichen Zugriffsrechte. 3 – Der Dienst kann nicht angehalten werden, da aktive Dienste von ihm abhängig sind. 4 – Der angeforderte Steuerungscode ist ungültig oder wird nicht angenommen. 5 – Der angeforderte Steuerungscode kann nicht an den Dienst gesendet werden, da der Dienststatus (Win32_BaseService:State) 0, 1 oder 2 ist. 6 – Der Dienst wurde nicht gestartet. 7 – Der Dienst hat nicht rechtzeitig auf die Startanforderung reagiert. 8 – Beim Starten des Dienstes ist ein unbekannter Fehler aufgetreten. 9 – Der Verzeichnispfad zur ausführbaren Datei wurde nicht gefunden. 10 – Der Dienst wird bereits ausgeführt. 11 – Die Datenbank zum Hinzufügen eines neuen Dienstes ist gesperrt. 12 – Eine für den Dienst erforderliche Abhängigkeit wurde vom System entfernt. 13 – Der für einen abhängigen Dienst erforderliche Dienst konnte nicht gefunden werden. 14 – Der Dienst wurde deaktiviert. 15 – Der Dienst verfügt nicht über die zum Ausführen erforderliche Authentifizierung.
B.202 Win32_Service
result as Integer = StopService
result as Integer = PauseService
result as Integer = ResumeService
result as Integer = InterrogateService
result as Integer = UserControlService (ControlCode as Integer)
707
16 – Der Dienst wurde entfernt. 17 – Für den Dienst ist kein Ausführungsthread vorhanden. 18 – Ringabhängigkeiten beim Starten des Dienstes. 19 – Ein Dienst mit dem gleichen Namen wird bereits ausgeführt. 20 – Ungültige Zeichen im Dienstnamen. 21 – An den Dienst wurden ungültige Parameter übergeben. 22 – Das Konto, unter dem der Dienst ausgeführt wird, ist ungültig oder verfügt nicht über die erforderlichen Rechte. 23 – Der Dienst ist in der Dienstdatenbank des Systems vorhanden. 24 – Der Dienst wurde angehalten. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Service Functions|StartService Die Methode »StopService« hält den Dienst an. Der Wert 0 wird zurückgegeben, wenn der Dienst einwandfrei angehalten wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Service Functions|ControlService|dwControl|SERVICE_ CONTROL_STOP Die Methode »PauseService« hält den Dienst an. Der Wert 0 wird zurückgegeben, wenn die Anforderung angenommen wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Service Functions|ControlService|dwControl|SERVICE_ CONTROL_PAUSE Die Methode »ResumeService« setzt den Dienst fort. Der Wert 0 wird zurückgegeben, wenn die Anforderung angenommen wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Service Functions|ControlService|dwControl|SERVICE_ CONTROL_CONTINUE Die Methode »InterrogateService« erfordert, daß der Dienststatus aktualisiert wird. Der Wert 0 wird zurückgegeben, wenn die Anforderung angenommen wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Service Functions|ControlService|dwControl|SERVICE_ CONTROL_INTERROGATE Die Methode »UserControlService« sendet einen benutzerdefinierten Steuerungscode an einem Dienst. Der Wert 0 wird zurückgegeben, wenn die Anforderung angenommen wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Service Functions|CreateService|dwDesiredAccess|SERVICE_ USER_DEFINED_CONTROL
708
Anhang B: WMI Klassenreferenz
result as Integer = Create(DesktopInteract as Boolean, DisplayName as String, ErrorControl as Integer, LoadOrderGroup as String, LoadOrderGroupDependencies as String, Name as String, PathName as String, ServiceDependencies as String, ServiceType as Integer, StartMode as String, StartName as String, StartPassword as String) ValueMap = Array: 0=Boot 1=System 2=Automatic 3=Manual 4=Disabled result as Integer = Change(DesktopInteract as Boolean, DisplayName as String, ErrorControl as Integer, LoadOrderGroup as String, LoadOrderGroupDependencies as String, PathName as String, ServiceDependencies as String, ServiceType as Integer, StartMode as String, StartName as String, StartPassword as String) ValueMap = Array: 0=Boot 1=System 2=Automatic 3=Manual 4=Disabled result as Integer = ChangeStartMode (StartMode as String) ValueMap = Array: 0=Boot 1=System 2=Automatic 3=Manual 4=Disabled
Die Methode »Create« erstellt einen neuen Dienst. Der Wert 0 wird zurückgegeben, wenn der Dienst einwandfrei erstellt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Der Parameter »Win32_LoadOrderGroup« stellt eine Gruppierung der Systemdienste dar, die die Ausführungsabhängigkeiten definieren. Die Dienste müssen in der in der Ladegruppe angegebenen Reihenfolge initialisiert werden, da sie voneinander abhängig sind. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Service Functions|CreateService
Die Methode »Change« ändert einen Dienst. Der Wert 0 wird zurückgegeben, wenn der Dienst einwandfrei erstellt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Der Parameter »Win32_LoadOrderGroup« stellt eine Gruppierung der Systemdienste dar, die die Ausführungsabhängigkeiten definieren. Die Dienste müssen in der in der Ladegruppe angegebenen Reihenfolge initialisiert werden, da sie voneinander abhängig sind. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Service Functions|ChangeServiceConfig
Die Methode »ChangeStartMode« ändert den Startmodus für einen Dienst. Der Wert 0 wird zurückgegeben, wenn der Dienst geändert wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Service Functions|ChangeServiceConfig|dwStartType
B.202 Win32_Service result as Integer = Delete
AcceptPause
AcceptStop
Caption CheckPoint
CreationClassName
Description DesktopInteract
DisplayName
ErrorControl
709
Die Methode »Delete« löscht einen vorhandenen Dienst. Der Wert 0 wird zurückgegeben, wenn der Dienst gelöscht wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Service Functions|ChangeServiceConfig|DeleteService Die Eigenschaft »AcceptPause« gibt an, ob der Dienst angehalten werden kann. Werte: TRUE oder FALSE. TRUE gibt an, daß der Dienst angehalten werden kann. Die Eigenschaft »AcceptStop« gibt an, ob der Dienst beendet werden kann. Werte: TRUE oder FALSE. TRUE gibt an, daß der Dienst beendet werden kann. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »CheckPoint« gibt einen Wert an, der vom Dienst regelmäßig erhöht wird, um den Status beim Starten, Anhalten, Beenden oder einem kontinuierlichen Vorgang anzuzeigen. Der Dienst erhöht diesen Wert z.B. wenn ein Initialisierungsschritt beim Starten abschlossen ist. Das Programm, das den Vorgang aktiviert hat, verwendet diesen Wert, um den Dienststatus während eines längeren Vorgangs zu überwachen. Dieser Wert ist 0 und ungültig, wenn keine entsprechenden Vorgänge anstehen. »CreationClassName« gibt den Namen der Klasse oder Teilklasse an, die beim Erstellen einer Instanz verwendet wird. Wenn diese Eigenschaft mit anderen Schlüsseleigenschaften dieser Klasse verwendet wird, können alle Instanzen der Klasse und der Teilklassen eindeutig erkannt werden. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DesktopInteract« gibt an, ob der Dienst mit Fenstern auf dem Desktop kommunizieren bzw. diese erstellen kann. Werte: TRUE oder FALSE. TRUE gibt an, daß der Dienst mit Fenstern auf dem Desktop kommunizieren oder diese erstellen kann. Die Eigenschaft »DisplayName« gibt den angezeigten Namen des Dienstes an. Die Zeichenfolge darf aus maximal 256 Zeichen bestehen. Für den Namen muß die Groß-/Kleinschreibung beachtet werden. Für den Vergleich von angezeigten Namen muß die Groß-/Kleinschreibung nicht beachtet werden. Einschränkungen: Akzeptiert den gleichen Wert wie die Eigenschaft »Name«. Beispiel: Atdisk. Wenn der Dienst nicht gestartet wird, wird in der Eigenschaft »ErrorControl« der Schweregrad des Fehlers angegeben. Der Wert gibt den Startvorgang an, wenn ein Fehler auftritt. Alle Fehler werden vom Computersystem protokolliert. Der Benutzer wird bei normalen Fehlern benachrichtigt (nicht bei Fehlern die ignoriert werden können). Bei schwerwiegenden Fehlern wird das System mit der letzten funktionierenden Konfiguration neu gestartet. Bei kritischen Fehlern wird versucht, das System mit einer funktionierenden Konfiguration neu zu starten.
710
Anhang B: WMI Klassenreferenz
ExitCode
InstallDate Name
PathName
ProcessId ServiceSpecificExitCode
ServiceType Started StartMode
StartName
Die Eigenschaft »ExitCode« gibt einen Win32-Fehlercode an, der beim Starten oder Anhalten des Dienstes aufgetretene Probleme definiert. Der Wert der Eigenschaft ist ERROR_SERVICE_SPECIFIC_ERROR (1066), wenn der Fehler eindeutig von dieser Klasse dargestellt wird. Fehlerinformationen sind im Mitglied »ServiceSpecificExitCode« verfügbar. Der Dienst setzt den Wert auf »NO_ERROR«, wenn er ausgeführt oder ordnungsgemäß beendet wird. Die Eigenschaft »InstallDate« gibt an, wann es installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »Name« gibt den Dienst und die verwalteten Funktionen an. Die Funktionen werden in der Eigenschaft »Description« des Objekts genauer beschrieben. Die Eigenschaft »PathName« enthält den vollqualifizierten Pfad zur binären Datei, die den Dienst implementiert. Beispiel: \SystemRoot\System32\drivers\afd.sys Die Eigenschaft »ProcessId« gibt die Prozesskennung des Dienstes an. Beispiel: 324 Die Eigenschaft »ServiceSpecificExitCode« gibt einen dienstspezifischen Fehlercode für Fehler an, die beim Starten oder Anhalten des Dienstes auftreten. Der Beendigungscode wird vom Dienst definiert, der von dieser Klasse dargestellt wird. Dieser Wert wird nur festgelegt, wenn der Wert in der Eigenschaft »ExitCode« ERROR_SERVICE_SPECIFIC_ERROR, 1066 ist. Die Eigenschaft »ServiceType« gibt den Diensttyp für aufrufende Prozesses an. Der boolesche Wert »Started« gibt an, ob der Dienst gestartet (TRUE) oder angehalten (FALSE) wurde. Die Eigenschaft »StartMode« gibt den Startmodus des Win32-Basisdienstes an. »Boot« gibt einen vom Ladeprogramm des Betriebssystems gestarteten Gerätetreiber an. Dieser Wert ist nur für Treiberdienste gültig. »Automatisch« gibt einen Dienst an, der vom Dienststeuerungs-Manager während dem Systemstart gestartet wird. »Manuell« gibt einen Dienst an, der vom Dienststeuerungs-Manager gestartet wird, wenn die Funktion »StartService« aufgerufen wird. »Deaktiviert« gibt einen Dienst an, der nicht mehr gestartet werden kann. Die Eigenschaft »StartName« gibt den Kontonamen an, unter dem der Dienst ausgeführt wird. Abhängig vom Diensttyp kann der Kontoname folgendes Format haben: »Domänenname\Benutzername«. Der Dienstprozeß wird beim Ausführen mit einem dieser Formate protokolliert. Wenn das Konto zu einer integrierten Domäne gehört, kann ».\Benutzername« angegeben werden. Wenn NULL angegeben ist, wird der Dienst als lokales Systemkonto angemeldet. Für den Kernel-Systemtreiber enthält »StartName« den Treiberobjektnamen (\Dateisystem\Rdr oder \Treiber\Xns), den das E/A-System verwendet, um die Gerätetreiber zu laden. Wenn NULL angegeben ist, wird der Treiber mit dem vom E/ASystem basierend auf dem Dienstnamen erstellten Standardobjektnamen ausgeführt. Beispiel: DWDOM\Admin.
B.203 Win32_ServiceControl State Status
SystemCreationClassName SystemName TagId
WaitHint
Die Eigenschaft »State« gibt den aktuellen Status des Basisdienstes an. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Der Typname des Systems, auf dem sich der Dienst befindet. Der Name des Systems, auf dem sich der Dienst befindet. Die Eigenschaft »TagId« gibt einen eindeutigen Tagwert für diesen Dienst in der Gruppe an. Der Wert 0 gibt an, daß dem Dienst kein Tag zugeordnet wurde. Ein Tag kann zum Anfordern eines Dienststarts in einer Ladegruppe verwendet werden, indem ein Taganforderungsvektor in der Registrierung unter folgender Adresse angegeben wird: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GroupO rderList. Tags werden nur für Kerneltreiber und Dateisystemtreiber im Start- oder Systemmodus ausgewertet. Die Eigenschaft »WaitHint« gibt den geschätzten Zeitraum in Millisekunden an, der für einen Start-, Stopp-, Pause- oder fortgesetzten Vorgang erforderlich ist. Nachdem die angegebene Zeit verstrichen ist, für der Dienst den nächsten Aufruf an die Funktion »SetServiceStatus« mit einem inkrementierten Wert in »CheckPoint« oder einer Änderung in »CurrentState« aus. Wenn der in »WaitHint« angegebene Zeitraum verstrichen ist und der Wert in »CheckPoint« nicht inkrementiert oder »CurrentState« nicht geändert wurde, setzen der Dienststeuerungs-Manager oder das Dienststeuerungsprogramm einen Fehler voraus.
B.203 Win32_ServiceControl Arguments Caption Description Event ID Name ProductCode SettingID Wait
711
Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Eine Textbeschreibung des Objekts »CIM_Setting«. Die Kennung für das Objekt »CIM_Setting«. Die Kennung für das Objekt »CIM_Setting«.
712
Anhang B: WMI Klassenreferenz
B.204 Win32_ServiceSpecification result as Integer = Invoke
Caption CheckID CheckMode
Dependencies
Description DisplayName ErrorControl ID LoadOrderGroup Name Password ServiceType SoftwareElementID SoftwareElementState StartName StartType TargetOperatingSystem Version
Die Aufrufmethode soll eine bestimmte Überprüfung auswerten. Einzelheiten bezüglich der Methode für die Auswertung einer bestimmten Überprüfung in einem CIM-Kontext werden von den nicht abstrakten Teilklassen »CIM_ Check« angezeigt. Die Ergebnisse dieser Auswertungsmethode basieren auf dem zurückgegebenen Wert. A 0 (Null) wird zurückgegeben, wenn die Bedingung erfüllt wurde. Alle anderen Werte zeigen an, daß die Bedingung nicht erfüllt wurde. Eine Kennung, die in Verbindung mit anderen Schlüsseln verwendet wird, um die Überprüfung eindeutig zu identifizieren. Die Eigenschaft »CheckMode« zeigt an, ob eine Bedingung in der Umgebung erfüllt oder nicht erfüllt werden soll. Wenn dieser Wert True ist, soll diese Bedingung erfüllt werden (z.B. eine Datei soll sich auf dem Computer befinden) und daher der Aufruf() als True zurückgegeben werden. Wenn der Wert falsch ist, soll diese Bedingung nicht erfüllt werden (z.B. eine Datei soll sich nicht auf dem Computer befinden) und daher der Aufruf als falsch zurückgegeben werden. Die Eigenschaft »CheckMode« zeigt an, ob eine Bedingung in der Umgebung erfüllt oder nicht erfüllt werden soll. Wenn dieser Wert True ist, soll diese Bedingung erfüllt werden (z.B. eine Datei soll sich auf dem Computer befinden) und daher der Aufruf() als True zurückgegeben werden. Wenn der Wert falsch ist, soll diese Bedingung nicht erfüllt werden (z.B. eine Datei soll sich nicht auf dem Computer befinden) und daher der Aufruf als falsch zurückgegeben werden. Eine Beschreibung der Objekte. Eine Beschreibung der Objekte. Eine Beschreibung der Objekte. Eine Beschreibung der Objekte. Eine Beschreibung der Objekte. Der Name zum Identifizieren der Softwarekomponente. Der Name zum Identifizieren der Softwarekomponente. Der Name zum Identifizieren der Softwarekomponente. Kennung für die Softwarekomponente. Der Status einer Softwarekomponente. Der Status einer Softwarekomponente. Der Status einer Softwarekomponente. Zielbetriebssystem der Softwarekomponente. Versionsformat: .. oder .
B.205 Win32_ServiceSpecificationService
713
B.205 Win32_ServiceSpecificationService Check Element
B.206 Win32_SettingCheck Check Setting
B.207 Win32_Share result as Integer = Create (Access as CIM-Object, Description as String, MaximumAllowed as Integer, Name as String, Password as String, Path as String, Type as Integer) Access=Der Parameter »Access« übergibt die Sicherheitsbeschreibung für Berechtigungen auf Benutzerebene. Eine Sicherheitsbeschreibung enthält Informationen über die Berechtigung, den Besitzer und Zugriffsmöglichkeiten der Ressource. Optional=Wahr Description=Der Parameter »Description« übergibt einen optionalen Kommentar, um die freizugebende Ressource zu beschreiben. Optional=Wahr MaximumAllowed=Der Parameter »MaximumAllowed« übergibt die maximale Anzahl von Benutzern, die diese Ressource gleichzeitig verwenden können. Beispiel: 10. Optional=Wahr Name=Die Eigenschaft »Name« übergibt den Alias zu einer Freigabe in einem Win32-System. Beispiel: public Password=Der Parameter »Password« übergibt das Kennwort für die freigege-
Die Methode »Create« initialisiert die Freigabe einer Serverressource. Nur Mitglieder der lokalen Administrator- oder KontenOperatorengruppe oder Kommunikations-, Druck- und Serveroperatoren können die Methode ausführen. Der Druck-Operator kann nur Druckerwarteschlangen löschen. Der Kommunikationsoperator kann nur Kommunikationsgeräte-Warteschlangen löschen. Der Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Network Management Functions|NetShareAdd
714
Anhang B: WMI Klassenreferenz
bene Ressource, wenn der Server mit Sicherheit auf Freigabeebene ausgeführt wird. Wenn der Server mit Sicherheit auf Benutzerebene ausgeführt wird, wird dieser Parameter ignoriert. Optional=Wahr Path=Der Parameter »Path« gibt den lokalen Pfad der Win32-Freigabe an. Beispiel: C:\Programme Type=Der Parameter »Type« übergibt den freigegebenen Ressourcentyp. Die Typen beinhalten Laufwerke, Druckerwarteschlange, IPC (Interprocess Communications) und allgemeine Geräte. Values = Array: 0=Laufwerk 1=Druckerwarteschlange 2=Gerät 3=IPC 4=Laufwerkverwaltung 5=Druckerwarteschlangenverwaltung 6=Geräteverwaltung 7=IPC-Verwaltung result as Integer = SetShareInfo (Access as CIM-Object, Description as String, MaximumAllowed as Integer) Access=Der Parameter »Access« übergibt die Sicherheitsbeschreibung für Berechtigungen auf Benutzerebene. Eine Sicherheitsbeschreibung enthält Informationen über die Berechtigung, den Besitzer und Zugriffsmöglichkeiten der Ressource. Optional=Wahr Description=Der Parameter »Description« übergibt einen optionalen Kommentar, um die freizugebende Ressource zu beschreiben. Optional=Wahr MaximumAllowed=Der Parameter »MaximumAllowed« übergibt die maximale Anzahl von Benutzern, die diese Ressource gleichzeitig verwenden können. Beispiel: 10. Optional=Wahr
Die Methode »SetShareInfo« legt die Parameter einer freigegebenen Ressource fest. Nur Mitglieder der lokalen Administrator- oder Konten-Operatorengruppe oder Kommunikations-, Druck- und Serveroperatoren können die Methode ausführen. Der DruckOperator kann nur Druckerwarteschlangen löschen. Der Kommunikationsoperator kann nur KommunikationsgeräteWarteschlangen löschen. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Network Management Functions|NetShareSetInfo
B.207 Win32_Share result as Integer = Delete
AccessMask
AllowMaximum
Caption Description InstallDate
MaximumAllowed
Name Path Status
715
Die Methode »Delete« löscht einen Freigabenamen aus einer Serverliste und trennt die Verbindungen mit der freigegebenen Ressource. Nur Mitglieder der lokalen Administrator- oder KontenOperatorengruppe oder Kommunikations-, Druck- und Serveroperatoren können die Methode ausführen. Der Druck-Operator kann nur Druckerwarteschlangen löschen. Der Kommunikationsoperator kann nur Kommunikationsgeräte-Warteschlangen löschen. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Network Management Functions|NetShareDel Die Eigenschaft »AccessMask« enthält die Zugriffsrechte für die Freigabe des Benutzers oder der Gruppe, für die die Instanz zurückgegeben wird. Diese Eigenschaft wird nur in Windows NT und Windows 2000 unterstützt. Die Eigenschaft »AllowMaximum« gibt an, ob die Anzahl der Benutzer, die gleichzeitig auf diese Ressource zugreifen können, beschränkt wurde. Werte: TRUE oder FALSE. TRUE gibt an, daß die Anzahl der Benutzer nicht beschränkt wurde und der Wert in der Eigenschaft »MaximumAllowed« ignoriert wird. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »MaximumAllowed« gibt die maximale Anzahl der Benutzer an, die diese Ressource gleichzeitig verwenden können. Der Wert ist nur gültig, wenn »AllowMaximum« auf FALSE gesetzt ist. Beispiel: 10. Die Eigenschaft »Name« gibt den Alias zu einer Freigabe in einem Win32-System an. Beispiel: public Die Eigenschaft »Path« gibt den lokalen Pfad der Win32-Freigabe an. Beispiel: C:\Programme Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
716
Anhang B: WMI Klassenreferenz
Type
Die Eigenschaft »Type« gibt den freigegebenen Ressourcentyp an. Die Typen beinhalten Laufwerke, Druckerwarteschlange, IPC (Interprocess Communications) und allgemeine Geräte.
B.208 Win32_ShareToDirectory Share SharedElement
Die Referenz »Share« stellt die Eigenschaften einer freigegebenen Ressource dar, die über das Verzeichnis verfügbar ist. Die Referenz »SharedElement« stellt die Eigenschaften eines Verzeichnisses dar, das einer freigegebenen Ressource zugeordnet wurde.
B.209 Win32_ShortcutAction result as Integer = Invoke
ActionID Arguments Caption Description Direction
HotKey IconIndex Name Shortcut ShowCmd SoftwareElementID SoftwareElementState Target
Die Methode »Invoke« führt einen bestimmten Vorgang aus. Die Ausführungsdetails hängen von der Implementierung ab. Die Ergebnisse der Methode basieren auf dem Rückgabewert. Der Wert 0 wird zurückgegeben, wenn die Bedingung erfüllt wurde. Der Wert 1 wird zurückgegeben, wenn die Methode nicht unterstützt wird. Jeder andere Wert zeigt an, daß die Bedingung nicht erfüllt wurde. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Befehlszeilenargumente für die Verknüpfung. Befehlszeilenargumente für die Verknüpfung. Eine Beschreibung des Objekts. Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. The hotkey for the shortcut. It has the virtual-key code for the key in the loworder byte, and the modifier flags in the high-order byte. The hotkey for the shortcut. It has the virtual-key code for the key in the loworder byte, and the modifier flags in the high-order byte. Der Name zum Identifizieren der Softwarekomponente. Name der zu erstellenden Verknüpfung. Der Befehl »Show« gibt den Anzeigestatus des Programmfensters an. Er entspricht der Windows-Funktion »ShowWindow«. »SoftwareElementID« gibt eine ID für die Softwarekomponente an. »SoftwareElementState« gibt den Status der Softwarekomponente an. »SoftwareElementState« gibt den Status der Softwarekomponente an.
B.210 Win32_ShortcutFile TargetOperatingSystem Version WkDir
717
»TargetOperatingSystem« gibt das Zielbetriebssystem der Softwarekomponente an. Versionsformat: .. oder . Versionsformat: .. oder .
B.210 Win32_ShortcutFile result as Integer = TakeOwnerShip
result as Integer = ChangeSecurityPermissions (Option as Integer, SecurityDescriptor as CIM-Object)
result as Integer = Copy (FileName as String)
Die Methode »TakeOwnerShip« übernimt den Besitz der logischen Datei, die im Objektpfad angegeben ist. Wenn die logische Datei ein Verzeichnis ist, übernimt die Methode den Besitz aller Dateien und Unterverzeichnisse, die im Verzeichnis enthaltenen sind. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »ChangeSecurityPermissions« ändert die Sicherheitsrechte für die im Objektpfad angegebene logische Datei. Wenn die logische Datei ein Verzeichnis ist, werden die Sicherheitsrechte aller im Verzeichnis enthaltener Dateien und Unterverzeichnisse geändert. Die Methode gibt den Wert 0 zurück, wenn die Rechte geändert wurden. Jeder andere Wert zeigt einen Fehler an. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »Copy« kopiert die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist, in das im Eingabeparameter festgelegte Verzeichnis. Der Wert 0 wird zurückgegeben, wenn die Datei kopiert wurde. Andere Werte zeigen einen Fehler an. Das Kopieren wird nicht unterstützt, wenn eine vorhandene Datei überschrieben werden muß. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig.
718
Anhang B: WMI Klassenreferenz
result as Integer = Rename (FileName as String)
result as Integer = Delete
result as Integer = Compress
result as Integer = Uncompress
Die Methode »Rename« benennt die logische Datei (oder das Verzeichnis) um, die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei umbenannt wurde. Andere Werte zeigen einen Fehler an. Die Umbenennung wird nicht unterstützt, wenn das Ziel ein anderes Laufwerk ist oder eine vorhandene Datei überschrieben werden muß. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »Delete« löscht die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei gelöscht wurde. Andere Werte zeigen einen Fehler an. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »Compress« komprimiert die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei komprimiert wurde. Andere Werte zeigen einen Fehler an. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »Uncompress« dekomprimiert die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei dekomprimiert wurde. Andere Werte zeigen einen Fehler an. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig.
B.210 Win32_ShortcutFile result as Integer = TakeOwnerShipEx (Recursive as Boolean, StartFileName as String) optional=Wahr optional=Wahr
result as Integer = ChangeSecurityPermissionsEx (Option as Integer, Recursive as Boolean, SecurityDescriptor as CIM-Object, StartFileName as String) optional=Wahr optional=Wahr
result as Integer = CopyEx (FileName as String, Recursive as Boolean, StartFileName as String) optional=Wahr optional=Wahr
719
Die Methode »TakeOwnerShipEx« übernimt den Besitz der logischen Datei, die im Objektpfad angegeben ist. Wenn die logische Datei ein Verzeichnis ist, übernimt die Methode den Besitz aller Dateien und Unterverzeichnisse, die im Verzeichnis enthaltenen sind. Der Wert 0 wird zurückgegeben, wenn der Vorgang erfolgreich beendet wurde. Andere Werte zeigen einen Fehler an. »TakeOwnerShipEx« ist eine erweiterte Version der Methode »TakeOwnerShip«. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »ChangeSecurityPermissionsEx« ändert die Sicherheitsrechte für die im Objektpfad angegebene logische Datei. Wenn die logische Datei ein Verzeichnis ist, werden die Sicherheitsrechte aller im Verzeichnis enthaltener Dateien und Unterverzeichnisse geändert. Die Methode gibt den Wert 0 zurück, wenn die Rechte geändert wurden. Jeder andere Wert zeigt einen Fehler an. »ChangeSecurityPermissionsEx« ist eine erweiterte Version der Methode »ChangeSecurityPermissions«. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFSDateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »CopyEx« kopiert die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist, in das im Parameter »FileName« festgelegte Verzeichnis. Der Wert 0 wird zurückgegeben, wenn die Datei kopiert wurde. Andere Werte zeigen einen Fehler an. Das Kopieren wird nicht unterstützt, wenn eine vorhandene Datei überschrieben werden muß. »CopyEx« ist eine erweiterte Version der Methode »Copy«. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig.
720
Anhang B: WMI Klassenreferenz
Die Methode »DeleteEx« löscht die logische Datei (oder das Verzeichnis), die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei gelöscht wurde. Andere Werte zeigen einen Fehler an. »DeleteEx« ist eine erweiterte Version der Methode »Delete«. Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »CompressEx« komprimiert die logische Datei (oder das Verresult as Integer = zeichnis), die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, CompressEx(Recursive as wenn die Datei komprimiert wurde. Andere Werte zeigen einen Fehler an. Boolean, StartFileName as »CompressEx« ist eine erweiterte Version der Methode »Compress«. Einer String) der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war erfolgoptional=Wahr reich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist aufoptional=Wahr getreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. Die Methode »UncompressEx« dekomprimiert die logische Datei (oder das result as Integer = UncompressEx(Recursive as Verzeichnis), die im Objektpfad angegeben ist. Der Wert 0 wird zurückgegeben, wenn die Datei dekomprimiert wurde. Andere Werte zeigen einen Fehler Boolean, StartFileName as an. »UncompressEx« ist eine erweiterte Version der Methode »Uncompress«. String) Einer der folgenden Werte wird zurückgegeben: 0 – Die Anforderung war optional=Wahr erfolgreich. 2 – Der Zugriff wurde verweigert. 8 – Ein unbekannter Fehler ist optional=Wahr aufgetreten. 9 – Der angegebene Name ist ungültig. 10 – Das angegebene Objekt ist bereits vorhanden. 11 – Kein NTFS-Dateisystem. 12 – Keine Windows NT- oder Windows 2000-Plattform. 13 – Anderes Laufwerk. 14 – Das Verzeichnis ist nicht leer. 15 – Freigabeverletzung. 16 – Die angegebene Startdatei ist ungültig. 17 – Eine für den Vorgang erforderliche Berechtigung wurde aufgehoben. 21 – Ein angegebener Parameter ist ungültig. result as Boolean = GetEffec- Die Methode »GetEffectivePermission« bestimmt, ob der Aufrufer über die vom Argument »Permission« angegebenen zusammengesetzten BerechtiguntivePermission gen für das Dateiobjekt und ggf. die Freigabe verfügt, auf der sich die Datei (Permissions as Integer) oder das Verzeichnis befindet. AccessMask Die Eigenschaft »AccessMask« ist ein Bitarray, das die Zugriffsrechte für die Datei oder das Verzeichnis des Benutzers oder der Gruppe darstellt, für die die Instanz zurückgegeben wird. Diese Eigenschaft wird nur in Windows NT und Windows 2000 unterstützt. Auf Windows 98 und Windows NT/2000 FAT-Datenträgern wird FULL_ACCESS zurückgegeben, da keine Objektsicherheit festgelegt ist. result as Integer = DeleteEx (StartFileName as String) optional=Wahr
Die Eigenschaft »Archive« ist ein boolescher Wert, der angibt, ob die Datei archiviert werden soll. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »Compressed« ist ein boolescher Wert, der angibt, daß die Datei komprimiert ist. Die Eigenschaft »CompressionMethod« ist eine formfreie Zeichenfolge, die den Algorithmus oder das Programm zum Komprimieren der logischen Datei angibt. Wenn es nicht möglich ist, das Komprimierungsschema zu beschreiben, wird Folgendes angegeben: »Unbekannt«, wenn nicht bekannt ist, ob die logische Datei komprimiert ist. »Komprimiert«, wenn die Datei komprimiert ist, aber das Komprimierungsschema unbekannt ist. »Nicht komprimiert«, wenn die logische Datei nicht komprimiert ist. Die Eigenschaft »CreationClassName« gibt den Klassennamen an. Die Eigenschaft »CreationDate« gibt das Erstellungsdatum der Datei an. Die Eigenschaft »CSCreationClassName« gibt die Klasse des Computersystems an. Die Eigenschaft »CSName« gibt den Namen des Computersystems an. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »Drive« gibt den Laufwerkbuchstaben (einschließlich Doppelpunkt) der Datei an. Beispiel: c: Die Eigenschaft »EightDotThreeFileName« gibt den DOS-kompatiblen Namen der Datei an. Beispiel: c:\progra~1 Die Eigenschaft »Encrypted« ist ein boolescher Wert, der angibt, daß die Datei verschlüsselt ist. Die Eigenschaft »EncryptionMethod« ist eine formfreie Zeichenfolge, die den Algorithmus oder das Programm zum Verschlüsseln der logischen Datei angibt. Wenn es z.B. aus Sicherheitsgründen nicht möglich ist, das Verschlüsselungsschema zu beschreiben, wird Folgendes angegeben: »Unbekannt«, wenn nicht bekannt ist, ob die logische Datei verschlüsselt ist. »Verschlüsselt«, wenn die Datei verschlüsselt ist, aber das Verschlüsselungsschema unbekannt ist. »Nicht verschlüsselt«, wenn die logische Datei nicht verschlüsselt ist. Die Eigenschaft »Extension« gibt die Erweiterung der Datei ohne Punkt an. Beispiel: txt, mof, mdb. Die Eigenschaft »FileName« gibt den Namen der Datei ohne Erweiterung an. Beispiel: autoexec Die Eigenschaft »FileSize« gibt die Datengröße in Bytes an. Die Eigenschaft »FileType« stellt den in der Eigenschaft »Extension« angegebenen Dateityp dar. Die Eigenschaft »FSCreationClassName« gibt die Klasse des Dateisystems an. Die Eigenschaft »FSName« gibt den Namen des Dateisystems an. Die Eigenschaft »Hidden« ist ein boolescher Wert, der angibt, ob die Datei versteckt ist.
722
Anhang B: WMI Klassenreferenz
InstallDate
InUseCount LastAccessed LastModified Manufacturer Name
Path Readable Status
System Target Version Writeable
Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »InUseCount« gibt die Anzahl der geöffneten Instanzen einer Datei an. Die Eigenschaft »LastAccessed« gibt an, wann zuletzt auf die Datei zugegriffen wurde. Die Eigenschaft »LastModified« gibt an, wann die Datei zuletzt geändert wurde. Herstellerzeichenfolge aus der Versionsressource, falls vorhanden. Die Eigenschaft »Name« gibt den vererbten Namen an, der als Schlüssel einer logischen Datei innerhalb eines Dateisystems dient. Es müssen vollständige Pfadnamen angegeben werden. Beispiel: c:\winnt\system\win.ini Die Eigenschaft »Path« gibt den Pfad der Datei an, einschließlich umgekehrter Schrägstriche am Anfang und am Ende. Beispiel: \windows\system\ Die Eigenschaft »Readable« ist ein boolescher Wert, der angibt, ob die Datei gelesen werden kann. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMARTaktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Eigenschaft »System« ist ein boolescher Wert, der angibt, ob die Datei eine Systemdatei ist. Die Eigenschaft »Target« gibt den Namen des Objekts für die Verknüpfung an. Versionszeichenfolge aus der Versionsressource, falls vorhanden. Die Eigenschaft »Writeable« ist ein boolescher Wert, der angibt, ob die Datei geschrieben werden kann.
Die interne Kennung für die Kompilierung der Softwarekomponente. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Der von der Softwarekomponente verwendete Codesatz. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Der Wert dieser Eigenschaft gibt die Herstellerkennung der Softwarekomponente an, z.B. eine SKU (Stock Keeping Unit) oder eine Teilenummer. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Der Wert dieser Eigenschaft gibt die Sprachversion der Softwarekomponente an. Es sollten die in ISO 639 definierten Sprachcodes verwendet werden. Wenn es sich bei der Softwarekomponente um eine mehrsprachige oder internationale Version handelt, verwenden Sie die Multilingual-Zeichenfolge. Hersteller der Softwarekomponente. Der Name zum Identifizieren der Softwarekomponente. Die Eigenschaft »OtherTargetOS« gibt den Hersteller und den Betriebssystemtyp einer Softwarekomponente an, wenn die Eigenschaft »TargetOperatingSystem« den Wert 1 (»Andere«) hat. Wenn die Eigenschaft »TargetOperatingSystem« den Wert »Andere« hat, darf der Wert der Eigenschaft »OtherTargetOS« nicht Null sein. Wenn die Eigenschaft »TargetOperatingSystem« einen anderen Wert hat, muß der Wert der Eigenschaft »OtherTargetOS« Null sein. Die Eigenschaft »OtherTargetOS« gibt den Hersteller und den Betriebssystemtyp einer Softwarekomponente an, wenn die Eigenschaft »TargetOperatingSystem« den Wert 1 (»Andere«) hat. Wenn die Eigenschaft »TargetOperatingSystem« den Wert »Andere« hat, darf der Wert der Eigenschaft »OtherTargetOS« nicht Null sein. Wenn die Eigenschaft »TargetOperatingSystem« einen anderen Wert hat, muß der Wert der Eigenschaft »OtherTargetOS« Null sein. Die der Softwarekomponente zugewiesene serielle Nummer. Eine Kennung für die Softwarekomponente, die in Verbindung mit anderen Schlüsseln verwendet wird, um »CIM_SoftwareElement« eindeutig darzustellen.
724
Anhang B: WMI Klassenreferenz
SoftwareElementState
Status
TargetOperatingSystem
Version
Der »SoftwareElementState« wird in diesem Modell festgelegt, um verschiedene Zustände eines Softwareelements während seiner Lebensdauer anzuzeigen. – Ein Softwareelement im einsetzbaren Status zeigt die erforderlichen Details zum Verteilen und die Bedingungen und Vorgänge an, die zum Erstellen eines Softwareelements im installierbaren Status (z.B. der nächsten Status) Voraussetzung sind. – Ein Softwareelement im installierbaren Zustand zeigt die erforderlichen Details zum Installieren und die Bedingungen und Vorgänge an, die zum Erstellen eines Softwareelements im ausführbaren Status (z.B. der nächsten Status) Voraussetzung sind. – Ein Softwareelement im ausführbaren Status zeigt die erforderlichen Details zum Installieren und die Bedingungen und Vorgänge an, die zum Erstellen eines Softwareelements im ausführenden Status (z.B. der nächsten Status) Voraussetzung sind. – Ein Softwareelement im ausführenden Status zeigt die erforderlichen Details zum Überprüfen und Ausführen eines Startelements an. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMARTaktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Eigenschaft »TargetOperatingSystem« ermöglicht das Festlegen der Betriebssystemumgebung. Die Version des Betriebssystems und die Architektur müssen angegeben werden, da der Wert dieser Eigenschaft die binäre Ausführung nicht sicherstellt. Diese Informationen ermöglichen die für eine Softwarekomponente erforderliche Betriebssystemebene eindeutig festzulegen. Versionsformat: .. oder .
B.213 Win32_SoftwareElementAction Action Element
B.214 Win32_SoftwareElementCheck Check Element Phase
Überprüfung. Element. Die Eigenschaft »Phase« gibt an, ob der aktuelle Status oder der nächste Status überprüft wird.
B.215 Win32_SoftwareElementCondition
725
B.215 Win32_SoftwareElementCondition result as Integer = Invoke
Caption CheckID CheckMode
Condition
Description Name SoftwareElementID SoftwareElementState TargetOperatingSystem Version
Die Aufrufmethode soll eine bestimmte Überprüfung auswerten. Einzelheiten bezüglich der Methode für die Auswertung einer bestimmten Überprüfung in einem CIM-Kontext werden von den nicht abstrakten Teilklassen »CIM_ Check« angezeigt. Die Ergebnisse dieser Auswertungsmethode basieren auf dem zurückgegebenen Wert. A 0 (Null) wird zurückgegeben, wenn die Bedingung erfüllt wurde. Alle anderen Werte zeigen an, daß die Bedingung nicht erfüllt wurde. Eine Kennung, die in Verbindung mit anderen Schlüsseln verwendet wird, um die Überprüfung eindeutig zu identifizieren. Die Eigenschaft »CheckMode« zeigt an, ob eine Bedingung in der Umgebung erfüllt oder nicht erfüllt werden soll. Wenn dieser Wert True ist, soll diese Bedingung erfüllt werden (z.B. eine Datei soll sich auf dem Computer befinden) und daher der Aufruf() als True zurückgegeben werden. Wenn der Wert falsch ist, soll diese Bedingung nicht erfüllt werden (z.B. eine Datei soll sich nicht auf dem Computer befinden) und daher der Aufruf als falsch zurückgegeben werden. Die Eigenschaft »CheckMode« zeigt an, ob eine Bedingung in der Umgebung erfüllt oder nicht erfüllt werden soll. Wenn dieser Wert True ist, soll diese Bedingung erfüllt werden (z.B. eine Datei soll sich auf dem Computer befinden) und daher der Aufruf() als True zurückgegeben werden. Wenn der Wert falsch ist, soll diese Bedingung nicht erfüllt werden (z.B. eine Datei soll sich nicht auf dem Computer befinden) und daher der Aufruf als falsch zurückgegeben werden. Eine Beschreibung der Objekte. Der Name zum Identifizieren der Softwarekomponente. Kennung für die Softwarekomponente. Der Status einer Softwarekomponente. Zielbetriebssystem der Softwarekomponente. Versionsformat: .. oder .
B.216 Win32_SoftwareElementResource Element Setting
726
Anhang B: WMI Klassenreferenz
B.217 Win32_SoftwareFeature result as Integer = Reinstall (ReinstallMode as Integer) ReinstallMode=Gibt den Neuinstallationsmodus an values = Array: 0=Datei fehlt 1=Ältere Dateiversion 2=Gleiche Dateiversion 3=Datei gleich 4=Datei überprüfen 5=Datei ersetzen 6=Benutzerdaten 7=Computerdaten 8=Verknüpfung 9=Paket result as Integer = Configure (InstallState as Integer) values = Array: 0=Standard 1=Ankündigen 2=Lokal 3=Nicht vorhanden 4=Quelle Accesses Attributes
Caption Description IdentifyingNumber InstallDate
InstallState
LastUse Name
Diese Methode installiert die zugeordnete Instanz von Win32_SoftwareFeature im angegebenen Neuinstallationsmodus erneut.
Diese Methode konfiguriert die zugeordnete Instanz von Win32_SoftwareFeature im angegebenen Installationsstatus.
Zeitpunkte, zu denen diese Softwarefunktion verwendet wurde. Remoteausführungsoption von irsEnum: ifrsFavorLocal = 0: Installiert Komponenten lokal. ifrsFavorSource = 1: Installiert Komponente zum Auführen von der Quelle (CD, Server). ifrsFollowParent = 2: Führt die Remoteausführungsoption der übergeordneten Funktion aus. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Produktidentifikation, z.B. eine serielle Softwarenummer oder die Nummer auf einem Hardwarechip. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Letzter Zeitpunkt, zu dem diese Softwarefunktion verwendet wurde. Die Eigenschaft »Name« definiert die lesbare Bezeichnung, die die Komponente im Kontext des Namespace eindeutig identifiziert.
B.218 Win32_SoftwareFeatureAction ProductName Status
Vendor Version
Hauptsächlich verwendeter Produktname. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMARTaktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Der Name des Produktherstellers; entspricht der Herstellereigenschaft im Produktobjekt im DMTF Solution Exchange Standard. Produktversionsinformationen; entspricht der Versionseigenschaft im Produktobjekt im DMTF Solution Exchange Standard.
B.222 Win32_SoundDevice result as Integer = SetPowerState »SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Pa(PowerState as Integer, Time as rameter »PowerState« folgende Werte festgelegt werden: 1=»Kein EnerDate/Time) giesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. result as Integer = Reset Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Availability Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Caption Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. ConfigManagerErrorCode Gibt den Fehlercode des Win32-Konfigurations-Managers an. ConfigManagerUserConfig Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. CreationClassName Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Description Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. DeviceID Die Eigenschaft »DeviceID« enthält Informationen, die das Audiogerät eindeutig kennzeichnen. DMABufferSize Die Eigenschaft »DMABufferSize« gibt die Größe des DMA-Puffers an. Beispiel: 4 ErrorCleared Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. ErrorDescription Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge.
B.222 Win32_SoundDevice InstallDate
LastErrorCode Manufacturer MPU401Address Name
PNPDeviceID PowerManagementCapabilities
PowerManagementSupported
ProductName Status
729
Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »Manufacturer« gibt den Hersteller des Audiogeräts an. Beispiel: Creative Labs Die Eigenschaft »MPU401Address« gibt die dem MPU-401-Anschluß des Audiogeräts zugeordnete E/A-Startadresse an. Beispiel: 300 Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Die Eigenschaft »ProductName« gibt den Produktnamen des Audiogeräts an. Beispiel: Creative Labs SoundBlaster AWE64PNP Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
730
Anhang B: WMI Klassenreferenz
StatusInfo
SystemCreationClassName
SystemName
Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft.
B.223 Win32_StartupCommand Caption Command Description Location Name SettingID User
Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Die Eigenschaft »Command« enthält die Befehlszeile für den Startbefehl. Beispiel: c:\winnt\notepad.exe myfile.txt. Eine Textbeschreibung des Objekts »CIM_Setting«. Die Eigenschaft »Location« gibt den Pfad zum Startbefehl im Dateisystem an. Die Eigenschaft »Name« gibt den Dateinamen des Startbefehls an. Beispiel: FindFast Die Kennung für das Objekt »CIM_Setting«. Die Eigenschaft »User« gibt den Benutzernamen an, für den der Befehl automatisch ausgeführt wird. Beispiel: mydomain\myname.
Die Referenz »GroupComponent« stellt das Win32-Verzeichnis dar, das die Eigenschaften des übergeordneten Verzeichnisses (Ordners) in der Zuordnung enthält. Die Referenz »PartComponent« stellt das Win32-Verzeichnis dar, das das Unterverzeichnis (den Unterordner) der Zuordnung enthält.
B.225 Win32_SystemAccount Caption Description
Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an.
B.226 Win32_SystemBIOS Domain InstallDate Name SID
SIDType
Status
731
Die Eigenschaft »Domain« gibt den Namen der Windows-Domäne an, zu der das Systemkonto gehört. Beispiel: NA-SALES Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »Name« gibt den Namen des Win32-Systemkontos in der Domäne an, der vom Domänenmitglied der Klasse definiert wurde. Die Eigenschaft »SID« enthält die SID (Security Identifier) für dieses Konto. Eine SID ist ein variabler Zeichenfolgenwert zum Identifizieren eines Vertrauensnehmers. Jedes Konto besitzt eine von einer Autorität (z.B. einer Windows-Domäne) ausgestellte eindeutige SID, die in einer Sicherheitsdatenbank gespeichert wird. Wenn sich ein Benutzer anmeldet, wird seine SID aus der Datenbank abgefragt und in das Zugriffstoken eingetragen. Anhand der SID im Zugriffstoken wird der Benutzer in allen nachfolgenden Interaktionen mit Windows-Sicherheit identifiziert. Wenn eine SID als eindeutige Kennung für einen Benutzer oder eine Gruppe verwendet wurde, kann sie nicht für einen anderen Benutzer bzw. eine andere Gruppe verwendet werden. Die Eigenschaft »SIDType« enthält Werte, die den SID-Typ angeben: SidTypeUser – Gibt eine Benutzer-SID an. SidTypeGroup – Gibt eine Gruppen-SID an. SidTypeDomain – Gibt eine Domänen-SID an. SidTypeAlias – Gibt eine Alias-SID an. SidTypeWellKnownGroup – Gibt eine SID für eine bekannte Gruppe an. SidTypeDeletedAccount – Gibt eine SID für ein gelöschtes Konto an. SidTypeInvalid – Gibt eine ungültige SID an. SidTypeUnknown – Gibt einen unbekannten SID-Typ an. SidTypeComputer – Gibt eine SID für einen Computer an. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
Die Referenz »GroupComponent« stellt das Win32_ComputerSystem dar, das das BIOS enthält. Die Referenz »PartComponent« stellt das Win32_BIOS dar, das im Computersystem enthalten ist.
732
Anhang B: WMI Klassenreferenz
B.227 Win32_SystemBootConfiguration Element
Die Referenz »Element« stellt das Computersystem dar, das die Startkonfiguration verwendet. Die Referenz »Setting« stellt eine Startkonfiguration für das Computersystem dar.
Setting
B.228 Win32_SystemDesktop Element Setting
Die Referenz »Element« stellt das Computersystem mit der Desktopkonfiguration dar. Die Referenz »Setting« stellt eine Desktopkonfiguration auf dem Computersystem dar.
Die Referenz »GroupComponent« stellt die Eigenschaften des Computersystems mit dem logischen Gerät dar. Die Referenz »PartComponent« stellt die Eigenschaften des logischen Geräts auf dem Computersystem dar.
B.230 Win32_SystemDriver result as Integer = StartService
Die Methode »StartService« startet den Dienst. Folgende Werte werden zurückgegeben: 0 – Die Anforderung wurde angenommen. 1 – Die Anforderung wird nicht unterstützt. 2 – Der Benutzer verfügt nicht über die erforderlichen Zugriffsrechte. 3 – Der Dienst kann nicht angehalten werden, da aktive Dienste von ihm abhängig sind. 4 – Der angeforderte Steuerungscode ist ungültig oder wird nicht angenommen. 5 – Der angeforderte Steuerungscode kann nicht an den Dienst gesendet werden, da der Dienststatus (Win32_BaseService:State) 0, 1 oder 2 ist. 6 – Der Dienst wurde nicht gestartet. 7 – Der Dienst hat nicht rechtzeitig auf die Startanforderung reagiert. 8 – Beim Starten des Dienstes ist ein unbekannter Fehler aufgetreten. 9 – Der Verzeichnispfad zur ausführbaren Datei wurde nicht gefunden. 10 – Der Dienst wird bereits ausgeführt. 11 – Die Datenbank zum Hinzufügen eines neuen Dienstes ist gesperrt. 12 – Eine für den Dienst erforderliche Abhängigkeit wurde vom System entfernt. 13 – Der für einen abhängigen Dienst erforderliche Dienst konnte nicht gefunden werden. 14 – Der Dienst wurde deaktiviert. 15 – Der Dienst verfügt nicht über die zum Ausführen erforderliche Authentifizierung. 16 – Der Dienst wurde entfernt. 17 – Für den Dienst ist kein Ausführungsthread vorhanden. 18 – Ringabhängigkeiten beim Starten des Dienstes.
B.230 Win32_SystemDriver
result as Integer = StopService
result as Integer = PauseService
result as Integer = ResumeService
result as Integer = InterrogateService
result as Integer = UserControlService (ControlCode as Integer)
733
19 – Ein Dienst mit dem gleichen Namen wird bereits ausgeführt. 20 – Ungültige Zeichen im Dienstnamen. 21 – An den Dienst wurden ungültige Parameter übergeben. 22 – Das Konto, unter dem der Dienst ausgeführt wird, ist ungültig oder verfügt nicht über die erforderlichen Rechte. 23 – Der Dienst ist in der Dienstdatenbank des Systems vorhanden. 24 – Der Dienst wurde angehalten. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Service Functions|StartService Die Methode »StopService« hält den Dienst an. Der Wert 0 wird zurückgegeben, wenn der Dienst einwandfrei angehalten wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Service Functions|ControlService|dwControl|SERVICE_ CONTROL_STOP Die Methode »PauseService« hält den Dienst an. Der Wert 0 wird zurückgegeben, wenn die Anforderung angenommen wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Service Functions|ControlService|dwControl|SERVICE_ CONTROL_PAUSE Die Methode »ResumeService« setzt den Dienst fort. Der Wert 0 wird zurückgegeben, wenn die Anforderung angenommen wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Service Functions|ControlService|dwControl|SERVICE_ CONTROL_CONTINUE Die Methode »InterrogateService« erfordert, daß der Dienststatus aktualisiert wird. Der Wert 0 wird zurückgegeben, wenn die Anforderung angenommen wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Service Functions|ControlService|dwControl|SERVICE_ CONTROL_INTERROGATE Die Methode »UserControlService« sendet einen benutzerdefinierten Steuerungscode an einem Dienst. Der Wert 0 wird zurückgegeben, wenn die Anforderung angenommen wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Service Functions|CreateService|dwDesiredAccess|SERVICE_ USER_DEFINED_CONTROL
734
Anhang B: WMI Klassenreferenz
result as Integer = Create (DesktopInteract as Boolean, DisplayName as String, ErrorControl as Integer, LoadOrderGroup as String, LoadOrderGroupDependencies as String, Name as String, PathName as String, ServiceDependencies as String, ServiceType as Integer, StartMode as String, StartName as String, StartPassword as String) ValueMap = Array: 0=Boot 1=System 2=Automatic 3=Manual 4=Disabled result as Integer = Change (DesktopInteract as Boolean, DisplayName as String, ErrorControl as Integer, LoadOrderGroup as String, LoadOrderGroupDependencies as String, PathName as String, ServiceDependencies as String, ServiceType as Integer, StartMode as String, StartName as String, StartPassword as String) ValueMap = Array: 0=Boot 1=System 2=Automatic 3=Manual 4=Disabled result as Integer = ChangeStartMode (StartMode as String) ValueMap = Array: 0=Boot 1=System 2=Automatic 3=Manual 4=Disabled
Die Methode »Create« erstellt einen neuen Dienst. Der Wert 0 wird zurückgegeben, wenn der Dienst einwandfrei erstellt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Der Parameter »Win32_LoadOrderGroup« stellt eine Gruppierung der Systemdienste dar, die die Ausführungsabhängigkeiten definieren. Die Dienste müssen in der in der Ladegruppe angegebenen Reihenfolge initialisiert werden, da sie voneinander abhängig sind. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Service Functions|CreateService
Die Methode »Change« ändert einen Dienst. Der Wert 0 wird zurückgegeben, wenn der Dienst einwandfrei erstellt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Der Parameter »Win32_LoadOrderGroup« stellt eine Gruppierung der Systemdienste dar, die die Ausführungsabhängigkeiten definieren. Die Dienste müssen in der in der Ladegruppe angegebenen Reihenfolge initialisiert werden, da sie voneinander abhängig sind. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Service Functions|ChangeServiceConfig
Die Methode »ChangeStartMode« ändert den Startmodus für einen Dienst. Der Wert 0 wird zurückgegeben, wenn der Dienst geändert wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Service Functions|ChangeServiceConfig|dwStartType
B.230 Win32_SystemDriver result as Integer = Delete
AcceptPause
AcceptStop
Caption CreationClassName
Description DesktopInteract
DisplayName
ErrorControl
ExitCode
735
Die Methode »Delete« löscht einen vorhandenen Dienst. Der Wert 0 wird zurückgegeben, wenn der Dienst gelöscht wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Befehl wird von folgender API-Funktion bereitgestellt: Win32API|Service Functions|ChangeServiceConfig|DeleteService Die Eigenschaft »AcceptPause« gibt an, ob der Dienst angehalten werden kann. Werte: TRUE oder FALSE. TRUE gibt an, daß der Dienst angehalten werden kann. Die Eigenschaft »AcceptStop« gibt an, ob der Dienst beendet werden kann. Werte: TRUE oder FALSE. TRUE gibt an, daß der Dienst beendet werden kann. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. »CreationClassName« gibt den Namen der Klasse oder Teilklasse an, die beim Erstellen einer Instanz verwendet wird. Wenn diese Eigenschaft mit anderen Schlüsseleigenschaften dieser Klasse verwendet wird, können alle Instanzen der Klasse und der Teilklassen eindeutig erkannt werden. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DesktopInteract« gibt an, ob der Dienst mit Fenstern auf dem Desktop kommunizieren bzw. diese erstellen kann. Werte: TRUE oder FALSE. TRUE gibt an, daß der Dienst mit Fenstern auf dem Desktop kommunizieren oder diese erstellen kann. Die Eigenschaft »DisplayName« gibt den angezeigten Namen des Dienstes an. Die Zeichenfolge darf aus maximal 256 Zeichen bestehen. Für den Namen muß die Groß-/Kleinschreibung beachtet werden. Für den Vergleich von angezeigten Namen muß die Groß-/Kleinschreibung nicht beachtet werden. Einschränkungen: Akzeptiert den gleichen Wert wie die Eigenschaft »Name«. Beispiel: Atdisk. Wenn der Dienst nicht gestartet wird, wird in der Eigenschaft »ErrorControl« der Schweregrad des Fehlers angegeben. Der Wert gibt den Startvorgang an, wenn ein Fehler auftritt. Alle Fehler werden vom Computersystem protokolliert. Der Benutzer wird bei normalen Fehlern benachrichtigt (nicht bei Fehlern die ignoriert werden können). Bei schwerwiegenden Fehlern wird das System mit der letzten funktionierenden Konfiguration neu gestartet. Bei kritischen Fehlern wird versucht, das System mit einer funktionierenden Konfiguration neu zu starten. Die Eigenschaft »ExitCode« gibt einen Win32-Fehlercode an, der beim Starten oder Anhalten des Dienstes aufgetretene Probleme definiert. Der Wert der Eigenschaft ist ERROR_SERVICE_SPECIFIC_ERROR (1066), wenn der Fehler eindeutig von dieser Klasse dargestellt wird. Fehlerinformationen sind im Mitglied »ServiceSpecificExitCode« verfügbar. Der Dienst setzt den Wert auf »NO_ERROR«, wenn er ausgeführt oder ordnungsgemäß beendet wird.
736
Anhang B: WMI Klassenreferenz
InstallDate Name
PathName
ServiceSpecificExitCode
ServiceType Started StartMode
StartName
State Status
Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »Name« gibt den Dienst und die verwalteten Funktionen an. Die Funktionen werden in der Eigenschaft »Description« des Objekts genauer beschrieben. Die Eigenschaft »PathName« enthält den vollqualifizierten Pfad zur binären Datei, die den Dienst implementiert. Beispiel: \SystemRoot\System32\drivers\afd.sys Die Eigenschaft »ServiceSpecificExitCode« gibt einen dienstspezifischen Fehlercode für Fehler an, die beim Starten oder Anhalten des Dienstes auftreten. Der Beendigungscode wird vom Dienst definiert, der von dieser Klasse dargestellt wird. Dieser Wert wird nur festgelegt, wenn der Wert in der Eigenschaft »ExitCode« ERROR_SERVICE_SPECIFIC_ERROR, 1066 ist. Die Eigenschaft »ServiceType« gibt den Diensttyp für aufrufende Prozeß an. Der boolesche Wert »Started« gibt an, ob der Dienst gestartet (TRUE) oder angehalten (FALSE) wurde. Die Eigenschaft »StartMode« gibt den Startmodus des Win32-Basisdienstes an. »Boot« gibt einen vom Ladeprogramm des Betriebssystems gestarteten Gerätetreiber an. Dieser Wert ist nur für Treiberdienste gültig. »Automatisch« gibt einen Dienst an, der vom Dienststeuerungs-Manager während des Systemstarts gestartet wird. »Manuell« gibt einen Dienst an, der vom DienststeuerungsManager gestartet wird, wenn die Funktion »StartService« aufgerufen wird. »Deaktiviert« gibt einen Dienst an, der nicht mehr gestartet werden kann. Die Eigenschaft »StartName« gibt den Kontonamen an, unter dem der Dienst ausgeführt wird. Abhängig vom Diensttyp kann der Kontoname folgendes Format haben: »Domänenname\Benutzername«. Der Dienstprozeß wird beim Ausführen mit einem dieser Formate protokolliert. Wenn das Konto zu einer integrierten Domäne gehört, kann ».\Benutzername« angegeben werden. Wenn NULL angegeben ist, wird der Dienst als lokales Systemkonto angemeldet. Für Kernel- -der Systemtreiber enthält »StartName« den Treiberobjektnamen (\Dateisystem\Rdr oder \Treiber\Xns), den das E/A-System verwendet, um die Gerätetreiber zu laden. Wenn NULL angegeben ist, wird der Treiber mit dem vom E/A-System basierend auf dem Dienstnamen erstellten Standardobjektnamen ausgeführt. Beispiel: DWDOM\Admin. Die Eigenschaft »State« gibt den aktuellen Status des Basisdienstes an. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
Der Typname des Systems, auf dem sich der Dienst befindet. Der Name des Systems, auf dem sich der Dienst befindet. Die Eigenschaft »TagId« gibt einen eindeutigen Tagwert für diesen Dienst in der Gruppe an. Der Wert 0 gibt an, daß dem Dienst kein Tag zugeordnet wurde. Ein Tag kann zum Anfordern eines Dienststarts in einer Ladegruppe verwendet werden, indem ein Taganforderungsvektor in der Registrierung unter folgender Adresse angegeben wird: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GroupOrde rList. Tags werden nur für Kerneltreiber und Dateisystemtreiber im Startoder Systemmodus ausgewertet.
Die Referenz »Antecedent« stellt das Plug & Play-Gerät dar, das vom Treiber gesteuert wird. Die Referenz »Dependent« stellt den Treiber dar, der das Plug & Play-Gerät unterstützt.
B.232 Win32_SystemEnclosure result as Integer = IsCompatible (ElementToCheck???)
AudibleAlarm BreachDescription
CableManagementStrategy
Caption ChassisTypes CreationClassName
Die Methode »IsCompatible« gibt an, ob das physikalische Element im physikalischen Paket enthalten ist oder hinzugefügt werden kann. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Boolescher Wert, der angibt, ob der Rahmen mit einem hörbaren Alarm ausgestattet ist. Die formfreie Zeichenfolge »BreachDescription« enthält weitere Informationen, wenn die Eigenschaft »SecurityBreach« eine Sicherheitsverletzung oder ein anderes sicherheitsbezogenes Ereignis anzeigt. Die formfreie Zeichenfolge »CableManagementStrategy« gibt an, wie die verschiedenen Kabel verbunden und gebündelt sind. Für viele Netzwerkund Stromkabel ist die Kabelverwaltung komplex. Diese Eigenschaft enthält Informationen, die bei der Montage des Rahmens hilfreich sind. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Eine Aufzählung, die den Typ des Chassis angibt. »CreationClassName« gibt den Namen der Klasse oder Teilklasse an, die beim Erstellen einer Instanz verwendet wird. Wenn diese Eigenschaft mit anderen Schlüsseleigenschaften dieser Klasse verwendet wird, können alle Instanzen der Klasse und der Teilklassen eindeutig erkannt werden.
Vom Chassis erforderlicher Strom bei 120V. Wenn die Energie vom Chassis zur Verfügung gestellt wird (z.B. von einer USV), gibt diese Eigenschaft die Stromstärke als negative Zahl an. Die Tiefe des physikalischen Pakets in Zoll. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die vom Chassis generierte Wärme in BTU/Stunde. Die Höhe des physikalischen Pakets in Zoll. Ein physikalisches Paket kann in Betrieb ausgetauscht werden, wenn es durch ein physikalisch unterschiedliches, aber gleichwertiges, ersetzt werden kann, während der Container eingeschaltet ist. Ein Laufwerkpaket das mit SCA-Steckverbindungen eingefügt wird, ist z.B. in Betrieb austauschbar. Alle in Betrieb austauschbaren Pakete sind ersetzbar. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Boolescher Wert, der angibt, ob der Rahmen durch eine Sperre geschützt ist. Der Name der Organisation, die für die Herstellung des physikalischen Elements verantwortlich ist. Der Name der physikalischen Komponente. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Ganze Zahl, die die Anzahl der Stromkabel angibt, die mit dem Chassis verbunden sein müssen, damit alle Komponenten funktionieren. »OtherIdentifyingInfo« erfaßt außer Bestandskennzeichnungsinformationen auch Daten, die dazu verwendet werden können, physikalische Elemente zu identifizieren. Ein Beispiel dafür sind Barcodedaten, die mit einem Element verbunden sind, das auch über eine Bestandskennzeichnung verfügt. Hinweis: Wenn nur Barcodedaten verfügbar sind, die allein als Elementschlüssel verwendet werden können, ist diese Eigenschaft NULL und die Barcodedaten werden in der Eigenschaft »Tag« als Klassenschlüssel verwendet. Die Einzelteilnummer, die von der Organisation, die für die Produktion und Herstellung des physikalischen Elements verantwortlich ist, zugewiesen wurde. Boolescher Wert, der angibt, ob die physikalische Komponente eingeschaltet (TRUE) oder ausgeschaltet (FALSE) ist.
B.232 Win32_SystemEnclosure Removable
Replaceable
SecurityBreach
SecurityStatus SerialNumber ServiceDescriptions
ServicePhilosophy
SKU SMBIOSAssetTag Status
739
Ein physikalisches Paket ist austauschbar, wenn es aus seinem physikalischen Container entfernt werden kann, ohne die Funktion des Gesamtpakets zu beeinträchtigen. Ein Paket ist auch austauschbar, wenn das Gerät bei der Entnahme ausgeschaltet sein muß. Wenn das Gerät bei der Entnahme eingeschaltet sein kann, ist das Element in Betrieb austauschbar. Eine zusätzliche Batterie in einem Laptop ist z.B. austauschbar, und ein Laufwerkpaket, das mit SCA-Steckverbindungen eingefügt wird, ist in Betrieb austauschbar. Ein Laptopbildschirm und eine nicht redundante Stromversorgung sind nicht austauschbar. Wenn diese Komponenten entfernt werden, werden die Funktionen des Gesamtpakets beeinträchtigt. Ein physikalisches Paket ist austauschbar, wenn sie durch ein physikalisch unterschiedliches Element ersetzt (oder aktualisiert) werden kann. Bei einigen Computersystemen ist es z.B. möglich, den Hauptprozessorchip durch einen Chip mit einer höheren Taktfrequenz zu ersetzen. Ein weiteres Beispiel ist ein Energieversorgungspaket auf Gleitschienen. Alle austauschbaren Pakete sind durch Vererbung ersetzbar. Die Eigenschaft »SecurityBreach« gibt an, ob eine physikalische Sicherheitsverletzung nicht erfolgreich (Wert=4) oder erfolgreich (5) war. Es können auch die Werte »Unbekannt«, »Andere« oder »Keine Sicherheitsverletzung« angegeben werden. Die Eigenschaft »SecurityStatus« gibt die Sicherheitseinstellung für die externe Eingabe, z.B. über eine Tastatur, an. Eine Herstellernummer zum Identifizieren des physikalischen Elements. Formfreie Zeichenfolgen mit genaueren Erklärungen zu den Einträgen im Datenfeld »ServicePhilosophy«. Jeder Eintrag in diesem Array bezieht sich auf den Eintrag im Datenfeld »ServicePhilosophy« unter dem gleichen Index. »ServicePhilosophy« gibt an, ob das Rahmengehäuse von oben (Wert=2), von vorne (3), von hinten (4) oder von der Seite (5) bedienbar ist, ob es über Schiebefächer (6) oder entfernbare Seiten (7) verfügt und/oder ob es z.B. mit Rollen verschoben (8) werden kann. Die SKU-Nummer für das physikalische Element. Die Eigenschaft »SMBIOSAssetTag« gibt das Bestandskennzeichen des Systemgehäuses an. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
740
Anhang B: WMI Klassenreferenz
Tag TypeDescriptions
Version VisibleAlarm Weight Width
Die Eigenschaft »Tag« enthält eine Zeichenfolge, die das Systemgehäuse eindeutig kennzeichnet. Beispiel: Systemgehäuse 1 Formfreie Zeichenfolgen mit weiteren Informationen zu den Einträgen im Datenfeld »ChassisTypes«. Jeder Eintrag in diesem Array bezieht sich auf den Eintrag im Datenfeld »ChassisTypes« unter dem gleichen Index. Eine Zeichenfolge, die die Version des physikalischen Elements angibt. Boolescher Wert, der angibt, ob der Rahmen mit einem sichtbaren Alarm ausgestattet ist. Das Gewicht des physikalischen Pakets in Pfund. Die Breite des physikalischen Pakets in Zoll.
Die Referenz »GroupComponent« stellt das Computersystem dar, das die Ladegruppe enthält. Die Referenz »PartComponent« stellt eine Ladegruppe auf dem Computersystem dar.
B.234 Win32_SystemLogicalMemoryConfiguration Element
Setting
Die Referenz »Element« stellt das Win32-Computersystem mit den Eigenschaften des Computersystems dar, auf dem sich die logische Speicherkonfiguration befindet. Die Referenz »Setting« stellt die logische Win32-Speicherkonfiguration dar, die die logische Speicherkonfiguration auf dem Computersystem enthält.
Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. »CreationClassName« gibt den Namen der Klasse oder Teilklasse an, die beim Erstellen einer Instanz verwendet wird. Wenn diese Eigenschaft mit anderen Schlüsseleigenschaften dieser Klasse verwendet wird, können alle Instanzen der Klasse und der Teilklassen eindeutig erkannt werden. Der Erstellungsklassenname des bereichsdefinierenden Computersystems. Der Name des bereichsdefinierenden Computersystems. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »EndingAddress« enthält die letzte Adresse der im Speicher abgebildeten E/A.
B.236 Win32_SystemNetworkConnections InstallDate
Name
StartingAddress
Status
741
Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Die Eigenschaft »StartingAddress« enthält die erste Adresse der im Speicher abgebildeten E/A. Dieser Wert sollte für die Hardwareressourcenkennung verwendet werden, um den abgebildeten E/A-Ressourcenschlüssel zu erstellen. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMARTaktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
Die Referenz »GroupComponent« stellt das mit dem Netzwerk verbundene Computersystem dar. Die Referenz »PartComponent« stellt die Netzwerkverbindung mit diesem Computersystem dar.
Die Referenz »GroupComponent« stellt die Eigenschaften des Computersystems dar, auf dem das Betriebssystem installiert ist. Die Referenz »PartComponent« stellt die Eigenschaften des auf diesem Computersystem ausgeführten Betriebssystems dar. Boolescher Wert, der angibt, daß das Betriebssystem das Standardbetriebssystem ist.
Die Referenz »GroupComponent« stellt das Win32-Computersystem mit den Eigenschaften des Computersystems dar, auf dem sich die Partition befindet. Die Referenz »PartComponent« stellt die Win32-Datenträgerpartition mit den Eigenschaften einer Datenträgerpartition auf dem Computersystem dar.
Die Referenz »GroupComponent« stellt das Computersystem dar, auf dem der Prozeß ausgeführt wird. Die Referenz »PartComponent« stellt den Prozeß dar, der auf dem Computersystem ausgeführt wird.
B.240 Win32_SystemProgramGroups Element Setting
Die Referenz »Element« stellt das Computersystem dar, das die logische Programmgruppe enthält. Die Referenz »Setting« stellt eine logische Programmgruppe auf dem Computersystem dar.
Die Referenz »GroupComponent« stellt das Computersystem dar, das die Ressource enthält. Die Referenz »PartComponent« stellt die auf dem Computersystem verfügbare Ressource (z.B. E/A-Dienste, Speicherressourcen) dar.
Die Referenz »GroupComponent« stellt das Win32-Computersystem mit den Eigenschaften des Computersystems dar, auf dem sich der Dienst befindet. Die Referenz »PartComponent« stellt den Win32-Dienst mit dem Dienst dar, der sich auf dem Computersystem befindet.
B.243 Win32_SystemSetting
743
B.243 Win32_SystemSetting Element Setting
Die Referenz »Element« stellt die Eigenschaften des Computersystems dar, für das die Einstellung übernommen werden kann. Die Referenz »Setting« stellt die Eigenschaften der Einstellung dar, die für das Computersystem übernommen werden kann.
LengthAllowed Manufacturer MaxDataWidth Model Name
Number
Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Eine formfreie Zeichenfolge, die die Pinkonfiguration und die Signalverwendung einer physikalischen Steckverbindung beschreibt. Die Eigenschaft »ConnectorType« gibt die physikalischen Attribute der Steckverbindung für den Steckplatz an. Beispiel: 2 25 (Male RS-232) »CreationClassName« gibt den Namen der Klasse oder Teilklasse an, die beim Erstellen einer Instanz verwendet wird. Wenn diese Eigenschaft mit anderen Schlüsseleigenschaften dieser Klasse verwendet wird, können alle Instanzen der Klasse und der Teilklassen eindeutig erkannt werden. Die Eigenschaft »CurrentUsage« gibt an, ob der Systemsteckplatz verwendet wird. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Maximale Höhe der Adapterkarte, die in den Steckplatz eingesteckt werden kann, in Zoll. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Maximale Länge der Adapterkarte, die in den Steckplatz eingesteckt werden kann, in Zoll. Der Name der Organisation, die für die Herstellung des physikalischen Elements verantwortlich ist. Maximale Busbreite der Adapterkarten, die in den Steckplatz eingesteckt werden können, in Bits. Der Name der physikalischen Komponente. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Die Eigenschaft »Number« gibt die Anzahl der physikalischen Steckplätze an. Dieser Wert kann als Index in einer Systemsteckplatztabelle verwendet werden, unabhängig davon ob der Steckplatz belegt ist oder nicht.
744
Anhang B: WMI Klassenreferenz
OtherIdentifyingInfo
PartNumber
PMESignal
PoweredOn PurposeDescription
SerialNumber Shared
SKU SlotDesignation SpecialPurpose
Status
SupportsHotPlug
»OtherIdentifyingInfo« erfaßt außer Bestandskennzeichnungsinformationen auch Daten, die dazu verwendet werden können, physikalische Elemente zu identifizieren. Ein Beispiel dafür sind Barcodedaten, die mit einem Element verbunden sind, das auch über eine Bestandskennzeichnung verfügt. Hinweis: Wenn nur Barcodedaten verfügbar sind, die allein als Elementschlüssel verwendet werden können, ist diese Eigenschaft NULL und die Barcodedaten werden in der Eigenschaft »Tag« als Klassenschlüssel verwendet. Die Einzelteilnummer, die von der Organisation, die für die Produktion und Herstellung des physikalischen Elements verantwortlich ist, zugewiesen wurde. Die Eigenschaft »PMESignal« gibt an, ob das PCI-Bus PME-Signal (Power Management Enabled) von diesem Steckplatz unterstützt wird. Die Eigenschaft ist FALSE für Nicht-PCI-Steckplätze. TRUE gibt an, daß das PMESignal unterstützt wird. Boolescher Wert, der angibt, ob die physikalische Komponente eingeschaltet (TRUE) oder ausgeschaltet (FALSE) ist. Eine formfreie Zeichenfolge, die beschreibt, daß der Steckplatz physikalisch eindeutig ist und möglicherweise spezielle Hardwaretypen enthält. Diese Eigenschaft ist nur gültig, wenn die entsprechende boolesche Eigenschaft »SpecialPurpose« TRUE ist. Eine Herstellernummer zum Identifizieren des physikalischen Elements. Die Eigenschaft »Shared« gibt an, ob mindestens zwei Steckplätze einen freigegebenen Steckplatz (z.B. einen PCI/EISA-Steckplatz) auf dem Motherboard gemeinsam verwenden. Werte: TRUE oder FALSE. TRUE gibt an, daß der Steckplatz freigegeben ist. Die SKU-Nummer für das physikalische Element. Die Eigenschaft »SlotDesignation« enthält eine SMBIOS-Zeichenfolge, die den Systemsteckplatz auf dem Motherboard angibt. Beispiel: PCI-1 Boolescher Wert, der angibt, daß dieser Steckplatz physikalische eindeutig ist und möglicherweise spezielle Hardwaretypen enthält; z.B. einen Steckplatz für Grafikprozessoren. TRUE gibt an, daß die Eigenschaft »PurposeDescription« den Steckplatz beschreibt. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMARTaktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Boolescher Wert, der angibt, ob das Austauschen von Adapterkarten während des Betriebs unterstützt wird.
B.245 Win32_SystemSystemDriver Tag ThermalRating VccMixedVoltageSupport Version VppMixedVoltageSupport
745
Die Eigenschaft »Tag« gibt den Systemsteckplatz an, der von einer Instanz dieser Klasse dargestellt wird. Beispiel: Systemsteckplatz 1 Maximale thermale Ableitung des Steckplatzes in Milliwatt. Ein Array mit ganzen Zahlen, das die von diesem Steckplatz unterstützte VCC-Spannung angibt. Eine Zeichenfolge, die die Version des physikalischen Elements angibt. Ein Array mit ganzen Zahlen, das die von diesem Steckplatz unterstützte VPP-Spannung angibt.
Die Referenz »GroupComponent« stellt die Eigenschaften des Computersystems dar, auf dem der Treiber ausgeführt wird. Die Referenz »PartComponent« stellt den auf dem Computersystem ausgeführten Systemtreiber dar.
B.246 Win32_SystemTimeZone Element Setting
Die Referenz »Element« stellt das Computersystem dar, das die Zeitzone für das System überwacht. Die Referenz »Setting« die Eigenschaften der Zeitzone dar, die vom Computersystem überwacht wird.
Die Referenz »GroupComponent« stellt das Computersystem dar, das das Benutzerkonto enthält. Die Referenz »PartComponent« stellt das Benutzerkonto auf dem Computersystem dar.
746
Anhang B: WMI Klassenreferenz
B.248 Win32_TapeDrive result as Integer = SetPowerState »SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Pa(PowerState as Integer, Time as rameter »PowerState« folgende Werte festgelegt werden: 1=»Kein EnerDate/Time) giesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. result as Integer = Reset Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Availability Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Capabilities Funktionen des Geräts für den Medienzugriff. Wenn das Gerät z.B. »Zufälliger Zugriff«, »Austauschbare Medien« und »Automatische Reinigung« unterstützt, werden die Werte 3, 7 und 9 in das Datenfeld geschrieben. CapabilityDescriptions Formfreie Zeichenfolgen mit genaueren Erklärungen zu den im Datenfeld »Capabilities« angezeigten Funktionen des Geräts für den Medienzugriff. Jeder Eintrag in diesem Array bezieht sich auf den Eintrag im Datenfeld »Capabilities« unter dem gleichen Index. Caption Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Compression Die Eigenschaft »Compression« gibt an, ob die Hardwarekomprimierung aktiviert oder deaktiviert ist. Werte: 1 (TRUE) oder 2 (FALSE). TRUE gibt an, daß die Hardwarekomprimierung aktiviert ist.
Eine formfreie Zeichenfolge, die den Algorithmus oder das Programm angibt, der bzw. das die Komprimierung unterstützt. Wenn es nicht möglich ist, das Komprimierungsschema zu beschreiben, wird Folgendes angegeben: »Unbekannt«, wenn nicht bekannt ist, ob das Gerät die Komprimierung unterstützt. »Komprimiert«, wenn das Gerät die Komprimierung unterstützt, aber das Komprimierungsschema unbekannt ist. »Nicht komprimiert«, wenn das Gerät die Komprimierung nicht unterstützt. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Standardblockgröße für das Gerät in Byte. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die das Bandlaufwerk von anderen Geräten im System unterscheidet. Die Eigenschaft »ECC« gibt an, ob das Gerät die Hardwarefehlerkorrektur unterstützt. Werte: 1 (True) oder 0 (False). True gibt an, daß die Hardwarefehlerkorrektur unterstützt wird. Die Eigenschaft »EOTWarningZoneSize » gibt die Zonengröße für die EOT-Warnung (End Of Tape) an. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Die formfreie Zeichenfolge »ErrorMethodology« beschreibt den Typ der Fehlererkennung und -korrektur, der von diesem Gerät unterstützt wird. Die Eigenschaft »FeaturesHigh« gibt die hohen 32 Bits des Gerätefunktionsflags an. Die Eigenschaft »FeaturesLow« gibt die niedrigen 32 Bits des Gerätefunktionsflags an. Die Eigenschaft »Id« gibt den Herstellernamen des Win32 CD-ROMLaufwerks an. Beispiel: PLEXTOR CD-ROM PX-12CS 1.01 Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »Manufacturer« gibt den Hersteller des Win32 CDROM-Laufwerks an. Beispiel: PLEXTOR Maximale Größe in Byte des Mediums, auf das zugegriffen wird. Maximale Größe in KB des vom Gerät unterstützten Mediums. Die Eigenschaft »MaxPartitionCount« gibt die maximale Partitionsanzahl für das Bandlaufwerk an.
748
Anhang B: WMI Klassenreferenz
MediaType MinBlockSize Name
NeedsCleaning
NumberOfMediaSupported
Padding
PNPDeviceID PowerManagementCapabilities
PowerManagementSupported
ReportSetMarks
Die Eigenschaft »MediaType« gibt den Medientyp an, der von diesem Gerät verwendet wird. In dieser Klasse ist der Wert »Bandlaufwerk«. Minimale Größe in Byte des Mediums, auf das zugegriffen wird. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Boolescher Wert, der angibt, daß das Laufwerk gereinigt werden muß. In der Eigenschaft »Capabilities« wird angegeben, ob eine automatische oder manuelle Reinigung möglich ist. Wenn das Gerät für den Medienzugriff mehrere individuelle Medien unterstützt, gibt diese Eigenschaft die maximale Medienanzahl an, die unterstützt oder eingelegt werden kann. Wenn das Gerät für den Medienzugriff mehrere individuelle Medien unterstützt, gibt diese Eigenschaft die maximale Medienanzahl an, die unterstützt oder eingelegt werden kann. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Die Eigenschaft »ReportSetMarks« gibt an, ob Markierungsmeldungen aktiviert sind. Die Markierungsmeldung verwendet ein spezialisiertes Element, das keine Benutzerdaten enthält. Dieses Element enthält ein Segmentierungsschema, das den Dateimarkierungen hierarchisch übergeordnet ist. Markierungsmeldungen ermöglichen schnelleres Positionieren auf Bändern mit hoher Kapazität. Werte: 1 (True) oder 0 (False). True gibt an, daß Markierungsmeldungen aktiviert sind.
B.249 Win32_TemperatureProbe Status
StatusInfo
SystemCreationClassName
SystemName
749
Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft.
B.249 Win32_TemperatureProbe result as Integer = SetPowerState »SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Pa(PowerState as Integer, Time as rameter »PowerState« folgende Werte festgelegt werden: 1=»Kein EnerDate/Time) giesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. result as Integer = Reset Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an.
Gibt die Sensorgenauigkeit für die gemessene Eigenschaft plus/minus einem Hunderstel Prozent an. Der Wert der gemessenen physikalischen Eigenschaft wird anhand der Toleranz, der Auflösung und Genauigkeit berechnet. Die Genauigkeit ist davon abhängig, ob das Gerät linear über seinem dynamischen Bereich liegt. Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Der aktuelle vom Sensor angegebene Wert. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die den Temperaturtest kennzeichnet. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Gibt an, daß der Sensor linear über seinem dynamischen Bereich liegt. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Schwellenwerte des Sensors geben die Bereiche (min. und max. Werte) an, mit denen bestimmt wird, ob der Sensor unter normalen, unkritischen, kritischen oder sehr kritischen Bedingungen funktioniert. Die Schwellenwerte des Sensors geben die Bereiche (min. und max. Werte) an, mit denen bestimmt wird, ob der Sensor unter normalen, unkritischen, kritischen oder sehr kritischen Bedingungen funktioniert. Die Schwellenwerte des Sensors geben die Bereiche (min. und max. Werte) an, mit denen bestimmt wird, ob der Sensor unter normalen, unkritischen, kritischen oder sehr kritischen Bedingungen funktioniert.
B.249 Win32_TemperatureProbe MaxReadable MinReadable Name
»MaxReadable« gibt den größten Wert der gemessenen Eigenschaft an, der vom numerischen Sensor gelesen werden kann. »MinReadable« gibt den kleinsten Wert der gemessenen Eigenschaft an, der vom numerischen Sensor gelesen werden kann. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. »NominalReading« gibt den normalen bzw. erwarteten Wert für den numerischen Sensor an. »NormalMax« gibt den normalen maximalen Bereich für den numerischen Sensor an. »NormalMin« gibt den normalen minimalen Wert für den numerischen Sensor an. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. »Resolution« gibt die Sensorfunktion zum Beheben von Unterschieden in der gemessenen Eigenschaft an. Dieser Wert ist davon abhängig, ob das Gerät linear über seinem dynamischen Bereich liegt. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
752
Anhang B: WMI Klassenreferenz
StatusInfo
Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Gibt die Sensortoleranz für die gemessene Eigenschaft an. Der Wert der gemessenen physikalischen Eigenschaft wird anhand der Toleranz, der Auflösung und Genauigkeit berechnet. Die Toleranz ist davon abhängig, ob das Gerät linear über seinem dynamischen Bereich liegt. Die Schwellenwerte des Sensors geben die Bereiche (min. und max. Werte) an, mit denen bestimmt wird, ob der Sensor unter normalen, unkritischen, kritischen oder sehr kritischen Bedingungen funktioniert. Die Schwellenwerte des Sensors geben die Bereiche (min. und max. Werte) an, mit denen bestimmt wird, ob der Sensor unter normalen, unkritischen, kritischen oder sehr kritischen Bedingungen funktioniert. Die Schwellenwerte des Sensors geben die Bereiche (min. und max. Werte) an, mit denen bestimmt wird, ob der Sensor unter normalen, unkritischen, kritischen oder sehr kritischen Bedingungen funktioniert.
Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. »CreationClassName« gibt den Namen der Klasse oder Teilklasse an, die beim Erstellen einer Instanz verwendet wird. Wenn diese Eigenschaft mit anderen Schlüsseleigenschaften dieser Klasse verwendet wird, können alle Instanzen der Klasse und der Teilklassen eindeutig erkannt werden. Der Erstellungsklassenname des bereichsdefinierenden Computersystems. Der Name des bereichsdefinierenden Computersystems. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »ElapsedTime« gibt die Ausführungszeit für den Thread seit der Erstellung an. Gibt den aktuellen Zustand des Threads an. Mögliche Werte sind: Bereit (2), wird ausgeführt (3) und blockiert (4).
B.250 Win32_Thread Handle
InstallDate
KernelModeTime Name
OSCreationClassName OSName Priority
PriorityBase
ProcessCreationClassName ProcessHandle
StartAddress
Status
753
Die Eigenschaft »Handle« gibt ein Handle für einen Thread an. Das Handle hat standardmäßig volle Zugriffsrechte. Das Handle kann mit dem korrekten Sicherheitszugriff in jeder Funktion verwendet werden, die ein Threadhandle akzeptiert. Abhängig vom angegebenen Vererbungsflag, kann dieses Handle von untergeordneten Prozessen geerbt werden. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Zeit im Kernelmodus in Millisekunden. Wenn diese Informationen nicht verfügbar sind, verwenden Sie den Wert 0. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Der Erstellungsklassenname des bereichsdefinierenden Betriebssystems. Der Name des bereichsdefinierenden Betriebssystems. Die Eigenschaft »Priority« gibt die dynamische Priorität des Threads an. Jeder Thread besitzt eine dynamische Priorität, die der Planungsdienst verwendet, um zu bestimmen, welcher Thread ausgeführt wird. Ursprünglich ist die dynamische Priorität eines Threads identisch mit seiner Basispriorität. Das System kann die dynamische Priorität erhöhen oder verringern, um sicherzustellen, daß er reagiert. Die Priorität von Threads mit einer Basispriorität zwischen 16 und 31 wird nicht erhöht; nur die Priorität von Threads mit einer Basispriorität zwischen 0 und 15. Höhere Werte geben höhere Prioritäten an. Die Eigenschaft »PriorityBase« gibt die aktuelle Basispriorität eines Threads an. Das Betriebssystem kann die dynamische Priorität über die Basispriorität des Threads erhöhen, wenn der Thread die Benutzereingabe verarbeitet, oder verringern. Die Eigenschaft »PriorityBase« kann einen Wert zwischen 0 und 31 enthalten. Der Erstellungsklassenname des bereichsdefinierenden Prozesses. Die Eigenschaft »ProcessHandle« gibt den Prozeß an, der den Thread erstellt hat. Der Inhalt dieser Eigenschaft kann von Win32 API-Komponenten verwendet werden. Die Eigenschaft »StartAddress« gibt die Startadresse des Threads an. Da eine Anwendung mit dem entsprechenden Zugriff den Threadkontext ändern kann, ist dieser Wert nur eine ungefähre Angabe der Startadresse. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
754
Anhang B: WMI Klassenreferenz
ThreadState
ThreadWaitReason
UserModeTime
Die Eigenschaft »ThreadState« gibt den aktuellen Ausführungsstatus des Threads an. Ein Thread kann einen von acht Werten besitzen: Initialisiert (vom Microkernel erkannt), Bereit (zum Ausführen auf dem nächsten verfügbaren Prozessor vorbereitet), Wird ausgeführt, Standby (nur ein Thread kann sich in diesem Status befinden), Abgebrochen, Warten (nicht für den Prozessor bereit), Übergang (wartet auf andere Ressourcen) und Unbekannt. Die Eigenschaft »ThreadWaitReason« gibt die Ursache für den Wartezustand des Threads an. Der Wert ist nur gültig, wenn das Mitglied »ThreadState« auf Warten gesetzt ist. Mögliche Ursachen: Der Thread wartet auf das Ausführen (0 oder 7), auf eine freie Seite (1 oder 8), auf eine eingehende Seite (2 oder 9), auf eine Poolzuordnung (3 oder 10), auf eine Ausführungsverzögerung (4 oder 11), auf das Anhalten (5 oder 12), auf eine Benutzeranforderung (6 oder 13), auf ein High-Ereignispaar (14), auf ein Low-Ereignispaar (15), auf einen LPC-Empfang (16), auf eine LPC-Antwort (17), auf virtuellen Speicher (18) oder auf eine ausgehende Seite (19). Ereignispaare ermöglichen die Kommunikation mit geschützten Teilsystemen. Zeit im Benutzermodus in Millisekunden. Wenn diese Informationen nicht verfügbar sind, verwenden Sie den Wert 0.
Die Eigenschaft »Bias« gibt den aktuellen Zeitunterschied für lokale Zeitübersetzungen an. Der Zeitunterschied ist der Unterschied zwischen UTC (Coordinated Universal Time) und der lokalen Zeit. Die Übersetzungen zwischen UTC und der lokalen Zeit (UTC) basieren auf folgendem Format: UTC = lokale Zeit + Zeitunterschied. Dieses Mitglied ist erforderlich. Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Die Eigenschaft »DaylightBias« gibt einen Zeitunterschiedswert für lokale Zeitübersetzungen an, wenn die Sommerzeit aktiv ist. Dieses Mitglied wird ignoriert, wenn für »DaylightDay« kein Wert angegeben ist. Der Wert dieses Mitglieds wird zum Mitglied »Bias« hinzugefügt, um den Zeitunterschied während der Sommerzeit anzugeben. In den meisten Zeitzonen ist dieser Wert -60. Die Eigenschaft »DaylightDay« gibt den Tag an, an dem das Betriebssystem von Normalzeit auf Sommerzeit umgestellt wird. Beispiel: 15 Die Eigenschaft »DaylightDayOfWeek« gibt den Wochentag an, an dem das Betriebssystem von Normalzeit auf Sommerzeit umgestellt wird. Beispiel: 1 Die Eigenschaft »DaylightHour« gibt die Stunde an, zu der das Betriebssystem von Normalzeit auf Sommerzeit umgestellt wird. Beispiel: 2 Die Eigenschaft »DaylightMillisecond« gibt die Millisekunde an, zu der das Betriebssystem von Normalzeit auf Sommerzeit umgestellt wird. Die Eigenschaft »DaylightMinute« gibt die Minute an, zu der das Betriebssystem von Normalzeit auf Sommerzeit umgestellt wird. Beispiel: 59
Die Eigenschaft »DaylightMonth« gibt den Monat an, in dem das Betriebssystem von Normalzeit auf Sommerzeit umgestellt wird. Beispiel: 1 = Januar Die Eigenschaft »DaylightName« gibt den Namen der Zeitzone an, die angezeigt wird, wenn die Sommerzeit aktiv ist. Beispiel: EDT = Eastern Sommerzeit. Die Eigenschaft »DaylightSecond« gibt die Sekunde an, zu der das Betriebssystem von Normalzeit auf Sommerzeit umgestellt wird. Beispiel: 59 Die Eigenschaft »DaylightYear« gibt das Jahr an, wenn die Sommerzeit aktiv ist. Dieses Mitglied ist nicht erforderlich. Beispiel: 1997 Eine Textbeschreibung des Objekts »CIM_Setting«. Die Kennung für das Objekt »CIM_Setting«. Die Eigenschaft »StandardBias« gibt einen Zeitunterschiedswert für lokale Zeitübersetzungen an, wenn die Sommerzeit nicht aktiv ist. Dieses Mitglied wird ignoriert, wenn für »StandardDay« kein Wert angegeben ist. Der Wert dieses Mitglieds wird zum Mitglied »Bias« hinzugefügt, um den Zeitunterschied während der Normalzeit anzugeben. Beispiel: 0 Die Eigenschaft »StandardDay« gibt den Tag an, an dem das Betriebssystem von Sommerzeit auf Normalzeit umgestellt wird. Beispiel: 31 Die Eigenschaft »StandardDayOfWeek« gibt den Wochentag an, an dem das Betriebssystem von Sommerzeit auf Normalzeit umgestellt wird. Beispiel: 1 Die Eigenschaft »StandardHour« gibt die Stunde an, zu der das Betriebssystem von Sommerzeit auf Normalzeit umgestellt wird. Beispiel: 11 Die Eigenschaft »StandardMillisecond« gibt die Millisekunde an, zu der das Betriebssystem von Sommerzeit auf Normalzeit umgestellt wird. Die Eigenschaft »StandardMinute« gibt die Minute an, zu der das Betriebssystem von Sommerzeit auf Normalzeit umgestellt wird. Beispiel: 59 Die Eigenschaft »StandardMonth« gibt die Monat an, in dem das Betriebssystem von Sommerzeit auf Normalzeit umgestellt wird. Beispiel: 12 Die Eigenschaft »StandardName« gibt den Namen der Zeitzone an, die angezeigt wird, wenn die Normalzeit aktiv ist. Beispiel: EST = Eastern Normalzeit. Die Eigenschaft »StandardSecond« gibt die Sekunde an, zu der das Betriebssystem von Sommerzeit auf Normalzeit umgestellt wird. Beispiel: 59 Die Eigenschaft »StandardYear« gibt das Jahr an, wenn die Normalzeit aktiv ist. Dieses Mitglied ist nicht erforderlich. Beispiel: 1997
B.252 Win32_Trustee Domain Name SID SidLength SIDString
755
Der Domänenteil des Kontos. Der Namensteil des Kontos. Die SID des Vertrauensnehmers. Die Länge der SID in Byte. Die SID des Vertrauensnehmers im Zeichenfolgenformat (z.B. S-1-1-0)
756
Anhang B: WMI Klassenreferenz
B.253 Win32_TypeLibraryAction result as Integer = Invoke
ActionID Caption Cost Description Direction
Language LibID Name SoftwareElementID SoftwareElementState TargetOperatingSystem Version
Die Methode »Invoke« führt einen bestimmten Vorgang aus. Die Ausführungsdetails hängen von der Implementierung ab. Die Ergebnisse der Methode basieren auf dem Rückgabewert. Der Wert 0 wird zurückgegeben, wenn die Bedingung erfüllt wurde. Der Wert 1 wird zurückgegeben, wenn die Methode nicht unterstützt wird. Jeder andere Wert zeigt an, daß die Bedingung nicht erfüllt wurde. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Die Eigenschaft »ActionID« ist eine eindeutige Kennung, die einem bestimmten Vorgang für eine Softwarekomponente zugeordnet ist. Eine Beschreibung des Objekts. Die Eigenschaft »Direction« gibt an, ob ein CIM_Action-Objekt Teil einer Vorgangssequenz ist, um in den nächsten Status, z.B. »Installieren«, der aktuellen Softwarekomponente zu wechseln oder um sie zu entfernen, z.B. »Deinstallieren«. Sprache der Typenbibliothek. Die GUID für die Bibliothek. Der Name zum Identifizieren der Softwarekomponente. »SoftwareElementID« gibt eine ID für die Softwarekomponente an. »SoftwareElementState« gibt den Status der Softwarekomponente an. »TargetOperatingSystem« gibt das Zielbetriebssystem der Softwarekomponente an. Versionsformat: .. oder .
B.254 Win32_USBController result as Integer = SetPowerState »SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Pa(PowerState as Integer, Time as rameter »PowerState« folgende Werte festgelegt werden: 1=»Kein EnerDate/Time) giesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an.
B.254 Win32_USBController result as Integer = Reset
LastErrorCode Manufacturer MaxNumberControlled Name
PNPDeviceID
757
Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die den USBController von anderen Geräten im System unterscheidet. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »Manufacturer« gibt den Hersteller des USB-Controllers an. Beispiel: Acme Maximale Anzahl der direkt adressierbaren Einheiten, die vom Controller unterstützt werden. Wenn der Wert unbekannt ist, geben Sie 0 ein. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b
758
Anhang B: WMI Klassenreferenz
PowerManagementCapabilities
PowerManagementSupported
ProtocolSupported Status
StatusInfo
SystemCreationClassName
SystemName
TimeOfLastReset
Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Das vom Controller zum Zugriff auf gesteuerte Geräte verwendete Protokoll. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Eigenschaft »TimeOfLastReset« gibt an, wann der Controller zuletzt zurückgesetzt (ausgeschalten oder erneut initialisiert) wurde.
B.255 Win32_USBControllerDevice
759
B.255 Win32_USBControllerDevice AccessState
Antecedent Dependent NegotiatedDataWidth
NegotiatedSpeed
NumberOfHardResets NumberOfSoftResets
Die Eigenschaft »AccessState« gibt an, ob der Controller das Gerät steuert oder darauf zugreift (Wert=1) oder nicht (Wert=2). Es kann auch der Wert »Unbekannt« (0) definiert werden. Diese Informationen sind erforderlich, wenn ein logisches Gerät von mehreren Controllern gesteuert werden kann. Die Referenz »CIM_USBController« stellt den USB-Controller (Universal Serial Bus) für das Gerät dar. Die Referenz »Dependent« stellt das POTS-Modem dar, das den seriellen Anschluß verwendet. Wenn mehrere Bus- und/oder Verbindungsdatenbreiten möglich sind, definiert die Eigenschaft »NegotiatedDataWidth« die verwendete Datenbreite in Bits. Wenn die Datenbreite nicht ausgehandelt wurde oder diese Informationen nicht verfügbar sind, sollte der Wert der Eigenschaft 0 sein. Wenn mehrere Bus- und/oder Verbindungsgeschwindigkeiten möglich sind, definiert die Eigenschaft »NegotiatedSpeed« die verwendete Geschwindigkeit in Bits pro Sekunde. Wenn die Verbindungs- oder Busgeschwindigkeit nicht ausgehandelt wurde oder diese Informationen nicht verfügbar sind, sollte der Wert der Eigenschaft 0 sein. Anzahl der vom Controller ausgelösten Kaltstarts. Anzahl der vom Controller ausgelösten Warmstarts.
B.256 Win32_UninterruptiblePowerSupply result as Integer = SetPowerState »SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Pa(PowerState as Integer, Time as rameter »PowerState« folgende Werte festgelegt werden: 1=»Kein EnerDate/Time) giesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. result as Integer = Reset Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an.
»ActiveInputVoltage« gibt den aktuellen Eingangsspannungsbereich an. Mit den Werten 3, 4 oder 5 können die Bereiche 1 und 2 bzw. beide Bereiche festgelegt werden. Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Die Eigenschaft »BatteryInstalled« legt fest, ob eine Batterie im Gerät installiert ist. Werte: TRUE oder FALSE. TRUE gibt an, daß eine Batterie installiert ist. Die Eigenschaft »CanTurnOffRemotely« bestimmt, ob die Energieversorgung remote ausgeschaltet werden kann. Werte: TRUE oder FALSE. TRUE gibt an, daß die Energieversorgung remote ausgeschaltet werden kann. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »CommandFile« gibt den Namen der Befehlsdatei an, die unmittelbar vor dem Herunterfahren ausgeführt wird. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die das USV-Gerät von anderen Geräten im System unterscheidet. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Geschätzte Restladung einer USV, die Batterien verwendet, in Prozent. »EstimatedRunTime« schätzt, wie lange es noch dauert, bis die Batterie und der Generator unter der gegenwärtigen Belastung leer sind, wenn die Stromversorgung unterbrochen oder abgeschaltet ist. Die Eigenschaft »FirstMessageDelay« gibt den Zeitraum zwischen dem ursprünglichen Stromausfall und der ersten an den Benutzer gesendeten Meldung an. Wenn die Stromversorgung innerhalb des in »FirstMessageDelay« angegebenen Zeitraums wiederhergestellt wird, wird keine Meldung gesendet, obwohl das Ereignis protokolliert wird.
Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Boolescher Wert. Die Energieversorgung erfolgt mittels eines Schaltnetzteils; nicht linear. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Eigenschaft »LowBatterySignal« gibt an, ob die Energieversorgung bei niedrigem Batteriestatus ein Signal ausgibt. Werte: TRUE oder FALSE. TRUE gibt an, daß ein Signal ausgegeben wird. Die Eigenschaft »MessageInterval« gibt den Zeitraum zwischen den Meldungen an, die bei Stromausfall angezeigt werden. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b Die Eigenschaft »PowerFailSignal« gibt an, ob die Energieversorgung bei Stromausfall ein Signal ausgibt. Werte: TRUE oder FALSE. TRUE gibt an, daß ein Signal ausgegeben wird. Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Die hohe Frequenz (in Hertz) im Eingangsfrequenzbereich 1 der Energieversorgung. Der Wert Null gibt DC an. Die niedrige Frequenz (in Hertz) im Eingangsfrequenzbereich 1 der Energieversorgung. Der Wert Null gibt DC an. Wenn die Spannung (in Millivolts) über den in der Eigenschaft »Range1InputVoltageHigh« angegebenen Wert ansteigt, wird sie von der UPS ausgeglichen. Der Wert 0 gibt an, daß die Spannung unbekannt ist.
Wenn die Spannung (in Millivolts) unter den in der Eigenschaft »Range1InputVoltageLow« angegebenen Wert fällt, wird sie von der UPS ausgeglichen. Der Wert 0 gibt an, daß die Spannung unbekannt ist. Die hohe Frequenz (in Hertz) im Eingangsfrequenzbereich 2 der Energieversorgung. Der Wert Null gibt DC an. Die niedrige Frequenz (in Hertz) im Eingangsfrequenzbereich 2 der Energieversorgung. Der Wert Null gibt DC an. Wenn die Spannung (in Millivolts) über den in der Eigenschaft »Range2InputVoltageHigh« angegebenen Wert ansteigt, wird sie von der UPS ausgeglichen. Der Wert 0 gibt an, daß die Spannung unbekannt ist. Wenn die Spannung (in Millivolts) unter den in der Eigenschaft »Range2InputVoltageLow« angegebenen Wert fällt, wird sie von der UPS ausgeglichen. Der Wert 0 gibt an, daß die Spannung unbekannt ist. Zeigt die verbleibende Kapazität der USV-Batterien und des Generators an. Der Wert »Normal« (2) gibt an, daß die geschätzte Restlaufzeit über dem niedrigen Energiestatus von zwei Minuten liegt. Der Wert »Niedrig« (3) gibt an, daß die Restlaufzeit unter dem von USV definierten niedrigen Energiestatus liegt. Der Wert »Leer« (4) bedeutet, daß die USV die gegenwärtige Belastung nicht aufrechterhalten kann, wenn die Stromversorgung entweder verloren oder gegenwärtig unterbrochen ist. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft.
B.257 Win32_UserAccount TimeOnBackup
TotalOutputPower TypeOfRangeSwitching
UPSPort
763
»TimeOnBackup« gibt den Zeitraum in Sekunden an, der seit dem letzten Umschalten der UPS zu Batterie- bzw. Generatorbetrieb oder seit dem letzten Neustart der UPS verstrichen ist. Der Wert Null wird zurückgegeben, wenn die UPS aktiv ist. Stellt die gesamte Ausgabeleistung der Energieversorgung in Milliwatts dar. Der Wert 0 bedeutet unbekannt. »TypeOfRangeSwitching« beschreibt den in dieser Energieversorgung implementierten Eingangsspannungswechsel. Es kann z.B. der Wert 4 »Automatisch wechseln« angegeben werden. Die Eigenschaft »UPSPort« gibt den seriellen Anschluß an, mit dem die UPS verbunden ist. Beispiel: COM1:
B.257 Win32_UserAccount AccountType
Caption Description Disabled
Domain FullName InstallDate
Lockout
Die Eigenschaft »AccountType« enthält Flags, die die Merkmale eines Win32Benutzerkontos beschreiben: UF_TEMP_DUPLICATE_ACCOUNT – Lokales Benutzerkonto für Benutzer, deren primäres Konto sich in einer anderen Domäne befindet. Dieses Konto gewährt den Zugriff auf diese Domäne, aber nicht auf Domänen, die dieser Domäne vertrauen. UF_NORMAL_ACCOUNT – Standardkontotyp eines typischen Benutzers. UF_INTERDOMAIN_TRUST_ACCOUNT – Konto für eine Systemdomäne, die anderen Domänen vertraut. UF_WORKSTATION_TRUST_ACCOUNT – Konto für einen Windows NT/Windows 2000-Computer, der ein Mitglied dieser Domäne ist. UF_SERVER_TRUST_ACCOUNT – Konto für einen Reservedomänencontroller, der ein Mitglied dieser Domäne ist. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »Disabled« legt fest, ob das Win32-Benutzerkonto deaktiviert ist. Werte: TRUE oder FALSE. TRUE gibt an, daß das Benutzerkonto deaktiviert ist. Die Eigenschaft »Domain« gibt die Namen der Windows-Domäne an, zu der das Benutzerkonto gehört. Beispiel: NA-SALES Die Eigenschaft »FullName« gibt den vollständigen Namen des lokalen Benutzers an. Beispiel: Thomas Williams Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »Lockout« legt fest, ob das Benutzerkonto auf dem Win32System gesperrt ist. Werte: TRUE oder FALSE. TRUE gibt an, daß das Benutzerkonto gesperrt ist.
764
Anhang B: WMI Klassenreferenz
Name
PasswordChangeable
PasswordExpires
PasswordRequired
SID
SIDType
Status
Die Eigenschaft »Name« gibt den Namen des Win32-Benutzerkontos in der Domäne an, der vom Domänenmitglied der Klasse definiert wurde. Beispiel: thomasw Die Eigenschaft »PasswordChangeable« gibt an, ob das Kennwort für das Win32-Benutzerkonto geändert werden kann. Werte: TRUE oder FALSE. TRUE gibt an, daß das Kennwort geändert werden kann. Die Eigenschaft »PasswordExpires« gibt an, ob das Kennwort für das Win32Benutzerkonto abläuft. Werte: TRUE oder FALSE. TRUE gibt an, daß das Kennwort abläuft. Die Eigenschaft »PasswordRequired« gibt an, ob ein Kennwort für das Win32-Benutzerkonto erforderlich ist. Werte: TRUE oder FALSE. TRUE gibt an, daß ein Kennwort erforderlich ist. Die Eigenschaft »SID« enthält die SID (Security Identifier) für dieses Konto. Eine SID ist ein variabler Zeichenfolgenwert zum Identifizieren eines Vertrauensnehmers. Jedes Konto besitzt eine von einer Autorität (z.B. einer Windows-Domäne) ausgestellte eindeutige SID, die in einer Sicherheitsdatenbank gespeichert wird. Wenn sich ein Benutzer anmeldet, wird seine SID aus der Datenbank abgefragt und in das Zugriffstoken eingetragen. Anhand der SID im Zugriffstoken wird der Benutzer in allen nachfolgenden Interaktionen mit Windows-Sicherheit identifiziert. Wenn eine SID als eindeutige Kennung für einen Benutzer oder eine Gruppe verwendet wurde, kann sie nicht für einen anderen Benutzer bzw. eine andere Gruppe verwendet werden. Die Eigenschaft »SIDType« enthält Werte, die den SID-Typ angeben: SidTypeUser – Gibt eine Benutzer-SID an. SidTypeGroup – Gibt eine GruppenSID an. SidTypeDomain – Gibt eine Domänen-SID an. SidTypeAlias – Gibt eine Alias-SID an. SidTypeWellKnownGroup – Gibt eine SID für eine bekannte Gruppe an. SidTypeDeletedAccount – Gibt eine SID für ein gelöschtes Konto an. SidTypeInvalid – Gibt eine ungültige SID an. SidTypeUnknown – Gibt einen unbekannten SID-Typ an. SidTypeComputer – Gibt eine SID für einen Computer an. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMARTaktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online.
B.258 Win32_UserDesktop
765
B.258 Win32_UserDesktop Element Setting
Die Referenz »Element« stellt das Benutzerkonto dar, dessen Desktop von der Eigenschaft »Settings« dieser Klasse angepaßt werden kann. Die Referenz »Setting« stellt die Desktopeinstellungen dar, mit denen der Desktop eines Benutzerkontos angepaßt wird.
Die Eigenschaft »ActualColorResolution« gibt die aktuelle Farbtiefe der Videoanzeige an. Die Eigenschaft »AdapterChipType« enthält den Namen des Adapterchips. Beispiel: s3 Die Eigenschaft »AdapterCompatibility« gibt den Namen des Adapterherstellers an. Mit diesem Namen kann die Gerätekompatibilität mit den Anforderungen des Computersystems verglichen werden. Die Eigenschaft »AdapterDACType« gibt den Namen des im Adapter verwendeten DAC-Chips an. Die Eigenschaft »AdapterDescription« beschreibt den Videoadapter. Die Eigenschaft »AdapterRAM« gibt die Speichergröße des Videoadapters an. Beispiel: 16777216 Die Eigenschaft »AdapterType« gibt den Typ des Videoadapters an. Zeichensatz: Alphanumerisch Die Eigenschaft »BitsPerPixel« gibt die Anzahl der Bits pro Pixel für die Anzeige an. Dieser Wert kann zur aktuellen benutzerdefinierten Videoeinstellung (Eigenschaft »ActualColorResolution«) skaliert werden. Beispiel: 8 Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Die Eigenschaft »ColorPlanes« gibt die aktuelle Anzahl der für die Videowiedergabe verwendeten Farbebenen an. Eine Farbebene ist eine Methode zum Darstellen der Pixelfarben. Anstatt jedem Pixel einen RGB-Wert zuzuweisen, wird die Grafik in die primären Farbkomponenten (Rot, Grün, Blau) aufgeteilt und in separaten Ebenen gespeichert. Diese Methode ermöglicht größer Farbtiefen auf 8- und 16-Bit-Videosystemen. Die meisten Grafiksysteme verfügen über eine Bitbreite, die zum Speichern von Farbtiefeninformationen ausreicht; d.h. es ist nur eine Farbebene erforderlich. Beispiel: 1 Die Eigenschaft »ColorTableEntries« gibt die Anzahl der Farbindizes für eine Videoanzeige an. Diese Eigenschaft wird verwendet, wenn das Gerät eine Farbtiefe von höchstens 8 Bit pro Pixel hat. Für Geräte mit größeren Farbtiefen wird -1 zurückgegeben. Beispiel: 256 Eine Textbeschreibung des Objekts »CIM_Setting«.
Die Eigenschaft »DeviceSpecificPens« gibt die aktuelle Anzahl der gerätespezifischen Pens an. Der Wert 0xFFFFFFFF zeigt an, daß Pens nicht unterstützt werden. Pens werden verwendet, um die Linien eines Polygons zu zeichnen. Beispiel: 3 Die Eigenschaft »DriverDate« gibt das Datum und die Uhrzeit der Installation des aktuellen Videotreibers an. Die Eigenschaft »HorizontalResolution« gibt die aktuelle Pixelanzahl der Anzeige in horizontaler Richtung (X-Achse) an. Beispiel: 1024 Die Eigenschaft »InfFilename« gibt den Pfad zur INF-Datei des Videotreibers an. Beispiel: C:\WINNT\SYSTEM32\DRIVERS Die Eigenschaft »InfSection« gibt den Abschnitt in der INF-Datei an, der die Win32-Videoinformationen enthält. Die Eigenschaft »InstalledDisplayDrivers« gibt den Namen des installierten Videotreibers an. Die Eigenschaft »MonitorManufacturer« gibt den Namen des Bildschirmherstellers an. Example: NEC Die Eigenschaft »MonitorType« gibt den Modellnamen des Bildschirms an. Beispiel: NEC 5FGp Die Eigenschaft »Name« enthält den Namen der Videokonfigurationsklasse. Die Eigenschaft »PixelsPerXLogicalInch« gibt die Anzahl der Pixel pro logischem Zoll entlang der X-Achse (horizontal) an. Die Eigenschaft »PixelsPerYLogicalInch« gibt die Anzahl der Pixel pro logischem Zoll entlang der Y-Achse (vertikal) an. Die Eigenschaft »RefreshRate« gibt die Aktualisierungsrate der Videokonfiguration an. Die Werte 0 oder 1 geben eine Standardrate an. Beispiel: 72 Die Eigenschaft »ScanMode« legt den Modus für den Bildschirm fest. Die Eigenschaft »ScreenHeight« gibt die Höhe des physikalischen Bildschirms an. Die Eigenschaft »ScreenWidth« gibt die Breite des physikalischen Bildschirms an. Die Kennung für das Objekt »CIM_Setting«. Die Eigenschaft »SystemPaletteEntries« gibt die aktuelle Anzahl der Farbindexeinträge an, die für das System reserviert sind. Dieser Wert ist nur für Einstellungen gültig, die eine indizierte Palette verwenden. Indizierte Paletten werden nicht für Farbtiefen über 8 Bits pro Pixel verwendet. Wenn die Farbtiefe 8 Bits pro Pixel überschreitet, ist dieser Wert Null. Beispiel: 20 Die Eigenschaft »VerticalResolution« gibt die aktuelle Pixelanzahl der Anzeige in vertikaler Richtung (Y-Achse) an. Beispiel: 768
B.260 Win32_VideoController
767
B.260 Win32_VideoController result as Integer =SetPowerState »SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Pa(PowerState as Integer, Time as rameter »PowerState« folgende Werte festgelegt werden: 1=»Kein EnerDate/Time) giesparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. result as Integer =Reset Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. AcceleratorCapabilities Ein Array mit ganzen Zahlen, das die Grafik- und 3-D-Funktionen des Videocontrollers angibt. AdapterCompatibility Die Eigenschaft »AdapterCompatibility« enthält die allgemeinen Chips für den Controller, um Kompatibilitäten mit dem System zu vergleichen. AdapterDACType Die Eigenschaft »AdapterDACType« enthält eine Zeichenfolge des Namens oder der Kennung des DAC-Chips (Digital-to-Analog Converter). Zeichensatz: Alphanumerisch. AdapterRAM Die Eigenschaft »AdapterRAM« gibt die Speichergröße des Videoadapters an. Beispiel: 64000 Availability Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. CapabilityDescriptions Formfreie Zeichenfolgen mit genaueren Erklärungen zu den im Datenfeld »Capabilities« angezeigten Videobeschleunigungsfunktionen. Jeder Eintrag in diesem Array bezieht sich auf den Eintrag im Datenfeld »Capabilities« unter dem gleichen Index. Caption Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an.
Die Eigenschaft »ColorTableEntries« gibt die Größe der Systemfarbtabelle an. Die Farbtiefe des Geräts darf 8 Bits pro Pixel nicht überschreiten, da die Eigenschaft sonst nicht festgelegt wird. Beispiel: 256. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Die Anzahl der zum Anzeigen der Pixel verwendeten Bits. Aktuelle Anzahl der horizontalen Pixel. Anzahl der von der aktuellen Auflösung unterstützten Farben. Im Textmodus wird die Anzahl der Spalten für den Videocontroller angegeben. Geben Sie ansonsten 0 ein. Im Textmodus wird die Anzahl der Zeilen für den Videocontroller angegeben. Geben Sie ansonsten 0 ein. Die Eigenschaft »CurrentRefreshRate« gibt die Bildwiederholfrequenz des Videocontrollers an. Der Wert 0 gibt an, daß die Standardfrequenz und 0xFFFFFFFF gibt an, daß die optimale Frequenz verwendet wird. Aktueller Scanmodus. »Zeilensprung« (Wert=3) oder »Ohne Zeilensprung« (4) kann definiert werden. Aktuelle Anzahl der vertikalen Pixel. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DeviceID« enthält eine eindeutige Kennung für den Videocontroller. Die Eigenschaft »DeviceSpecificPens« gibt die aktuelle Anzahl der gerätespezifischen Pens an. 0xffff gibt an, daß das Gerät keine Pens unterstützt. Beispiel: 3 Die Eigenschaft »DitherType« gibt den Farbmischungstyp des Videocontrollers an. Diese Eigenschaft kann vordefinierte Werte oder treiberdefinierte Werte größer als oder gleich 256 enthalten. Wenn die S/WFarbmischung gewählt wird, verwendet der Controller eine Methode zum Definieren der Grenzen zwischen Schwarz-, Weiß- und Grauskalierungen. Die S/W-Farbmischung kann nicht auf Bilder (z.B. gescannte Fotos) mit kontinuierlichen Farbverläufen angewendet werden. Die Eigenschaft »DriverDate« gibt das Datum und die Uhrzeit der letzten Änderung des installierten Videotreibers an. Die Eigenschaft »DriverVersion« gibt die Versionsnummer des Videotreibers an. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge.
B.260 Win32_VideoController ICMIntent
ICMMethod
InfFilename InfSection InstallDate
InstalledDisplayDrivers LastErrorCode MaxMemorySupported MaxNumberControlled MaxRefreshRate MinRefreshRate Monochrome Name
Die Eigenschaft »ICMIntent« gibt den Wert einer der drei möglichen ICM-Methoden an, die standardmäßig verwendet werden sollten. Diese Eigenschaft wird hauptsächlich für Nicht-ICM-Anwendungen verwendet und kann einen vordefinierten oder einen treiberdefinierten Wert größer als oder gleich 256 enthalten. Farbanpassung basierend auf Sättigung ist die beste Methode für Geschäftsgrafiken, wenn keine Farbmischung verwendet werden kann. Farbanpassung basierend auf Kontrast ist die beste Methode für gescannte Bilder oder Fotos, wenn Farbmischung verwendet wird. Die für die exakte Farbwiedergabe optimierte Farbanpassung ist die beste Methode für Firmenlogos und andere Bilder, für die genaue Farben erforderlich sind. Die Eigenschaft »ICMMethod« gibt die Verwendung von ICM an. Für Nicht-ICM-Anwendungen gibt diese Eigenschaft an, ob ICM aktiviert ist. Für ICM-Anwendungen wird dieses Mitglied überprüft, um die ICMUnterstützung zu bestimmen. Diese Eigenschaft kann einen vordefinierten oder einen treiberdefinierten Wert größer als oder gleich 256 enthalten. Die Werte legen fest, welches System die Farbanpassung verarbeitet. Die Eigenschaft »InfFilename« gibt den Pfad zur INF-Datei des Videoadapters an. Beispiel: C:\WINNT\SYSTEM32\DRIVERS Die Eigenschaft »InfSection« gibt den Abschnitt mit den Win32Videoinformationen in der INF-Datei an. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Die Eigenschaft »InstalledDisplayDrivers« gibt den Namen des installierten Bildschirmtreibers an. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Maximal unterstützter Speicher in Bytes. Maximale Anzahl der direkt adressierbaren Einheiten, die vom Controller unterstützt werden. Wenn der Wert unbekannt ist, geben Sie 0 ein. Maximale Aktualisierungsrate des Videocontrollers in Hertz. Minimale Aktualisierungsrate des Videocontrollers in Hertz. Die Eigenschaft »Monochrome« gibt an, ob Bilder in Graustufen oder Farbe angezeigt werden. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. Aktuelle Anzahl der Farbebenen. Geben Sie 0 ein, wenn der Wert für die aktuelle Videokonfiguration nicht verwendbar ist. Anzahl der Videoseiten, die von der aktuellen Auflösung und dem verfügbaren Speicher unterstützt werden. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b
770
Anhang B: WMI Klassenreferenz
PowerManagementCapabilities
PowerManagementSupported
ProtocolSupported ReservedSystemPaletteEntries
SpecificationVersion Status
StatusInfo
SystemCreationClassName
Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. Das vom Controller zum Zugriff auf gesteuerte Geräte verwendete Protokoll. Die Eigenschaft »ReservedSystemPaletteEntries« gibt die aktuelle Anzahl der Farbindexeinträge an, die für das System reserviert sind. Dieser Wert ist nur für Einstellungen gültig, die eine indizierte Palette verwenden. Indizierte Paletten werden nicht für Farbtiefen über 8 Bits pro Pixel verwendet. Wenn die Farbtiefe 8 Bits pro Pixel überschreitet, ist dieser Wert Null. Beispiel: 20 Die Eigenschaft »SpecificationVersion« gibt die Versionsnummer der Initialisierungsdatenspezifikation an, auf der die Struktur basiert. Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft.
Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Eigenschaft »SystemPaletteEntries« gibt die aktuelle Anzahl der Farbindexeinträge an, die für das System reserviert sind. Dieser Wert ist nur für Einstellungen gültig, die eine indizierte Palette verwenden. Indizierte Paletten werden nicht für Farbtiefen über 8 Bits pro Pixel verwendet. Wenn die Farbtiefe 8 Bits pro Pixel überschreitet, ist dieser Wert Null. Beispiel: 20 Die Eigenschaft »TimeOfLastReset« gibt an, wann der Controller zuletzt zurückgesetzt (ausgeschalten oder erneut initialisiert) wurde. Die Videoarchitektur, z.B. können VGA (Wert=5) oder PC-98 (160) angegeben werden. Eine Aufzählung, die den Typ des Videospeichers angibt. Aktueller Videomodus. Die Eigenschaft »VideoModeDescription« gibt die aktuelle Auflösung, die Farbe und die Scanmoduseinstellungen des Videocontrollers an. Beispiel: 1024x768, 256 Farben. Eine formfreie Zeichenfolge, die den Videoprozessor beschreibt.
B.261 Win32_VideoSettings Element Setting
Die Referenz »Element« stellt den Win32-Videocontroller dar, der die Eigenschaften des Videocontrollers enthält, für den eine Videoeinstellung verwendet werden kann. Die Referenz »Setting« stellt eine CIM-Videocontrollerauflösung dar, die die Einstellungen für den Videocontroller enthält.
B.262 Win32_VoltageProbe result as Integer = SetPowerState »SetPowerState« definiert den gewünschten Energiestatus und den Zeitpunkt, zu dem das Gerät in diesen Status versetzt wird, indem für den Pa(PowerState as Integer, Time as rameter »PowerState« folgende Werte festgelegt werden: 1=»Kein EnergieDate/Time) sparmodus«, 2=»Energiesparmodus – Niedriger Energiestatus«, 3=»Energiesparmodus – Standby«, 4=»Energiesparmodus – Standby«, 5=»Energiezyklus« oder 6=»Ausschalten«. Der Parameter »Time« gibt für alle Statusänderungen, außer 5 »Energiezyklus«, den Zeitpunkt zum Aktivieren des Energiestatus als Datum-/Uhrzeit PowerState« auf 5 »Energiezyklus« gesetzt ist, gibt der Parameter »Time« den Zeitpunkt zum Reaktivieren des Geräts an. Das Ausschalten erfolgt unmittelbar. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an.
Fordert das Zurücksetzen eines logischen Geräts an. Der Wert 0 wird zurückgegeben, wenn die Anforderung einwandfrei ausgeführt wurde, der Wert 1, wenn die Anforderung nicht unterstützt wird. Andere Werte zeigen einen Fehler an. Gibt die Sensorgenauigkeit für die gemessene Eigenschaft plus/minus einem Hunderstel Prozent an. Der Wert der gemessenen physikalischen Eigenschaft wird anhand der Toleranz, der Auflösung und Genauigkeit berechnet. Die Genauigkeit ist davon abhängig, ob das Gerät linear über seinem dynamischen Bereich liegt. Die Verfügbarkeit und der Status des Geräts. Die Eigenschaft »Availability« gibt z.B. an, daß das Gerät aktiv ist und sich nicht im Energiesparmodus (Wert=3) befindet. Die Energiesparmodi sind wie folgt definiert: Der Wert 13 (»Energiesparmodus – Unbekannt«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber der genaue Status unbekannt ist; 14 (»Niedriger Energiestatus«) gibt an, daß sich das Gerät im Energiesparmodus befindet, aber noch funktioniert und die Leistung verringert ist; 15 (»Standby«) gibt an, daß das Gerät nicht funktioniert, aber schnell reaktiviert werden kann; 17 (»Warnung«) gibt an, daß sich das Gerät sowohl in einem Warnungs- als auch in einem Energiesparmodus befindet. Die Eigenschaft »Caption« gibt eine kurze Textbeschreibung (eine Zeile) des Objekts an. Gibt den Fehlercode des Win32-Konfigurations-Managers an. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Gibt an, ob das Gerät eine benutzerdefinierte Konfiguration verwendet. Der aktuelle vom Sensor angegebene Wert. Die Eigenschaft »Description« gibt eine Textbeschreibung des Objekts an. Die Eigenschaft »DeviceID« enthält eine Zeichenfolge, die den Spannungstest kennzeichnet. Die Eigenschaft »ErrorCleared« ist ein boolescher Wert, der angibt, daß der in der Eigenschaft »LastErrorCode« angezeigte Fehler behoben ist. Die formfreie Zeichenfolge »ErrorDescription« enthält Informationen über den in der Eigenschaft »LastErrorCode« angezeigten Fehler und eventuelle Korrekturvorgänge. Die Eigenschaft »InstallDate« gibt an, wann das Objekt installiert wurde. Wenn der Wert nicht angegeben ist, kann das Objekt trotzdem installiert sein. Gibt an, daß der Sensor linear über seinem dynamischen Bereich liegt. »LastErrorCode« gibt den letzten Fehlercode des logischen Geräts an. Die Schwellenwerte des Sensors geben die Bereiche (min. und max. Werte) an, mit denen bestimmt wird, ob der Sensor unter normalen, unkritischen, kritischen oder sehr kritischen Bedingungen funktioniert. Die Schwellenwerte des Sensors geben die Bereiche (min. und max. Werte) an, mit denen bestimmt wird, ob der Sensor unter normalen, unkritischen, kritischen oder sehr kritischen Bedingungen funktioniert.
Die Schwellenwerte des Sensors geben die Bereiche (min. und max. Werte) an, mit denen bestimmt wird, ob der Sensor unter normalen, unkritischen, kritischen oder sehr kritischen Bedingungen funktioniert. »MaxReadable« gibt den größten Wert der gemessenen Eigenschaft an, der vom numerischen Sensor gelesen werden kann. »MinReadable« gibt den kleinsten Wert der gemessenen Eigenschaft an, der vom numerischen Sensor gelesen werden kann. Die Eigenschaft »Name« definiert die Objektbezeichnung. Wenn sich diese Eigenschaft in einer Teilklasse befindet, kann sie als Schlüsseleigenschaft überschrieben werden. »NominalReading« gibt den normalen bzw. erwarteten Wert für den numerischen Sensor an. »NormalMax« gibt den normalen maximalen Bereich für den numerischen Sensor an. »NormalMin« gibt den normalen minimalen Wert für den numerischen Sensor an. Gibt die Win32 Plug & Play-Gerätekennung des logischen Geräts an. Beispiel: *PNP030b Gibt die energiespezifischen Funktionen des logischen Geräts an. Die Werte 0=»Unbekannt«, 1=»Nicht unterstützt« und 2=»Deaktiviert« können angegeben werden. Der Wert 3=»Aktiviert« gibt an, daß die Energieverwaltungsfunktionen aktiviert sind, aber die exakte Funktion unbekannt ist oder die Informationen nicht verfügbar sind. »Automatische Energiesparmodi« (4) gibt an, daß ein Gerät seinen Energiestatus basierend auf dem Energieverbrauch oder anderen Kriterien ändern kann. »Energiestatus einstellbar« (5) gibt an, daß die Methode »SetPowerState« unterstützt wird. »Energiezyklus unterstützt« (6) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) ausgeführt werden kann. »Geplante Reaktivierung unterstützt« (7) gibt an, daß die Methode »SetPowerState« mit dem Parameter »PowerState« 5 (»Energiezyklus«) und dem Parameter »Time« ausgeführt werden kann. Gibt an, daß die Energieverwaltung für das Gerät verfügbar ist (es kann z.B. in den Standbymodus versetzt werden). Dieser boolesche Wert zeigt an, daß die Energie des logischen Geräts verwaltet werden kann, nicht, daß die Energieverwaltungsfunktionen aktiviert sind. »Resolution« gibt die Sensorfunktion zum Beheben von Unterschieden in der gemessenen Eigenschaft an. Dieser Wert ist davon abhängig, ob das Gerät linear über seinem dynamischen Bereich liegt.
774
Anhang B: WMI Klassenreferenz
Status
StatusInfo
SystemCreationClassName
SystemName
Tolerance
UpperThresholdCritical
UpperThresholdFatal
UpperThresholdNonCritical
Die Eigenschaft »Status« gibt den aktuellen Status des Objekts an. Es können betriebsbereite oder nicht betriebsbereite Zustände definiert werden. Betriebsbereite Zustände sind »OK«, »Heruntergestuft« und »Künftiger Fehler«. »Künftiger Fehler« gibt an, daß ein Element ordnungsgemäß funktioniert, aber in naher Zukunft ein Fehler auftreten wird. Ein Beispiel ist eine SMART-aktivierte Festplatte. Nicht betriebsbereite Zustände sind »Fehler«, »Starten«, »Beenden« und »Dienst«. »Dienst« kann während des erneuten Spiegelns eines Datenträgers, beim erneuten Laden einer Benutzerberechtigungsliste oder einem anderen administrativen Vorgang zutreffen. Nicht alle Vorgänge sind online. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Die Zeichenfolge »StatusInfo« gibt den Gerätestatus an: »Aktiviert« (Wert = 3), »Deaktiviert« (4), »Andere« (1) oder »Unbekannt« (2). Der Wert 5 (»Nicht anwendbar«) wird verwendet, wenn diese Eigenschaft nicht auf das logische Gerät zutrifft. Gibt die Sensortoleranz für die gemessene Eigenschaft an. Der Wert der gemessenen physikalischen Eigenschaft wird anhand der Toleranz, der Auflösung und Genauigkeit berechnet. Die Toleranz ist davon abhängig, ob das Gerät linear über seinem dynamischen Bereich liegt. Die Schwellenwerte des Sensors geben die Bereiche (min. und max. Werte) an, mit denen bestimmt wird, ob der Sensor unter normalen, unkritischen, kritischen oder sehr kritischen Bedingungen funktioniert. Die Schwellenwerte des Sensors geben die Bereiche (min. und max. Werte) an, mit denen bestimmt wird, ob der Sensor unter normalen, unkritischen, kritischen oder sehr kritischen Bedingungen funktioniert. Die Schwellenwerte des Sensors geben die Bereiche (min. und max. Werte) an, mit denen bestimmt wird, ob der Sensor unter normalen, unkritischen, kritischen oder sehr kritischen Bedingungen funktioniert.
B.263 Win32_WMIElementSetting Element Setting
Die Referenz »Element« in »Win32_WMIElementSetting« stellt den Win32-Dienst dar, der WMI-Eigenschaften verwendet. Die Referenz »Setting« in »Win32_WMIElementSetting« stellt die für den Win32-Dienst verfügbaren WMI-Einstellungen dar.
Die Eigenschaft »ASPScriptDefaultNamespace« enthält den Namespace, der von API-Scriptaufrufen verwendet wird, wenn kein Namespace angegeben wird. Die Eigenschaft »ASPScriptEnabled« gibt an, ob WMI-Scripting auf (ASP) verwendet werden kann. Diese Eigenschaft ist nur für Windows NT 4.0-Systeme gültig. Für Windows 2000-Systeme ist WMI-Scripting auf ASP immer zugelassen. Die Eigenschaft »AutoRecoverMofs« enthält eine Liste der vollqualifizierten MOF-Dateinamen, die zum Initialisieren und Wiederherstellen des WMI-Repository verwendet werden. Die Liste legt die Reihenfolge fest, in der die MOF-Dateien kompiliert werden. Die Eigenschaft »AutoStartWin9X« gibt an, wann WMI auf Win9XSystemen gestartet wird. Die Eigenschaft »BackupInterval« gibt den Zeitraum zwischen den WMI-Datenbanksicherungen an. Die Eigenschaft »BackupLastTime« gibt an, wann die letzte Sicherung ausgeführt wurde. Die Eigenschaft »BuildVersion« enthält die Versionsinformationen des installierten WMI-Dienstes. Eine kurze Textbeschreibung (eine Zeile) des Objekts »CIM_Setting«. Die Eigenschaft »DatabaseDirectory« gibt den Pfad zum Verzeichnis mit dem WMI-Repository an. Die Eigenschaft »DatabaseMaxSize« gibt die maximale Größe des WMIRepository an. Eine Textbeschreibung des Objekts »CIM_Setting«. Die Eigenschaft »EnableAnonWin9xConnections« gibt an, ob der Remotezugriff ohne Sicherheitsüberprüfung erlaubt ist (nur für Windows 95- und Windows 98-Systeme). Die Eigenschaft »EnableEvents« gibt an, ob das WMI-Ereignisteilsystem aktiviert ist. Werte: TRUE oder FALSE, TRUE gibt an, daß das Ereignisteilsystem aktiviert ist. Die Eigenschaft »EnableStartupHeapPreallocation« gibt an, ob WMI mit einem reservierten Heap gestartet wird. Werte: TRUE oder FALSE. TRUE gibt an, daß beim Initialisieren von WMI ein reservierter Heap in der von »LastStartupHeapPreallocation« angegebenen Größe erstellt wird.
Die Eigenschaft »HighThresholdOnClientObjects« gibt die maximale Rate an, mit der von Anbieter erstellte Objekte an Clients gesendet werden. Um Geschwindigkeitsunterschiede zwischen Anbietern und Clients auszugleichen, werden Objekte vor dem Senden von WMI in Warteschlangen aufgenommen. Das Hinzufügen von neuen Objekten in die Warteschlange wird verlangsamt, wenn der niedrige Schwellenwert erreicht wird. Wenn der von dieser Eigenschaft angegebene hohe Schwellenwert erreicht wird, werden von Anbietern keine Objekte mehr angenommen und »WBEM_E_OUT_OF_MEMORY« wird an die Clients zurückgegeben. Die Eigenschaft »HighThresholdOnEvents« gibt die maximale Rate an, mit der Ereignisse an Clients gesendet werden. Um Geschwindigkeitsunterschiede zwischen Anbietern und Clients auszugleichen, werden Ereignisse vor dem Senden von WMI in Warteschlangen aufgenommen. Das Hinzufügen von neuen Ereignissen in die Warteschlange wird verlangsamt, wenn der niedrige Schwellenwert erreicht wird. Wenn der von dieser Eigenschaft angegebene hohe Schwellenwert erreicht wird, werden von Anbietern keine Ereignisse mehr angenommen und »WBEM_E_OUT_OF_MEMORY« wird an die Clients zurückgegeben. Die Eigenschaft »InstallationDirectory« enthält den Pfad zum Verzeichnis, in dem die WMI-Software installiert wurde. Standardverzeichnis: \system32\wbem. Die Eigenschaft »LastStartupHeapPreallocation« gibt die Größe des reservierten Heaps an, der von WMI während der Initialisierung erstellt wird. Die Eigenschaft »LoggingDirectory« gibt den Pfad zum Verzeichnis mit dem WMI-Systemprotokolldateien an. Die Eigenschaft »LoggingLevel« gibt an, ob die Ereignisprotokollierung und die ausführliche Protokollierung aktiviert sind. Die Eigenschaft »LowThresholdOnClientObjects« gibt die Rate an, mit der das Erstellen von neuen Objekten für Clients verlangsamt wird. Um Geschwindigkeitsunterschiede zwischen Anbietern und Clients auszugleichen, werden Objekte vor dem Senden von WMI in Warteschlangen aufgenommen. Wenn die maximale Anforderungsrate überschritten wird, wird das Erstellen von neuen Objekten stufenweise verlangsamt. Dieser Vorgang beginnt, wenn die Rate, mit der Objekte erstellt werden, den Wert dieser Eigenschaft überschreitet, und wird fortgesetzt, bis die Rate ausgeglichen ist oder der hohe Schwellenwert erreicht wird. Die Eigenschaft »LowThresholdOnEvents« gibt die Rate an, mit der das Senden von neuen Ereignissen verlangsamt wird. Um Geschwindigkeitsunterschiede zwischen Anbietern und Clients auszugleichen, werden Ereignisse vor dem Senden von WMI in Warteschlangen aufgenommen. Wenn die Größe der Warteschlange überschritten wird, wird das Senden von Ereignissen stufenweise verlangsamt. Dieser Vorgang beginnt, wenn die Rate, mit der Ereignisse generiert werden, den Wert dieser Eigenschaft überschreitet, und wird fortgesetzt, bis die Rate ausgeglichen ist oder der hohe Schwellenwert erreicht wird.
Die Eigenschaft »MaxLogFileSize« gibt die maximale Größe der vom WMI-Dienst erstellten Protokolldateien an. Die Eigenschaft »MaxWaitOnClientObjects« gibt den Zeitraum an, bis ein neu erstelltes Objekt vom Client verwendet wird, bevor es verworfen oder ein Fehlerwert zurückgegeben wird. Die Eigenschaft »MaxWaitOnEvents« gibt an, wie lange sich ein an den Client gesendetes Ereignis in der Warteschlange befindet, bevor es verworfen wird. Die Eigenschaft »MofSelfInstallDirectory« enthält den Verzeichnispfad für Anwendungen, die MOF-Dateien im CIM-Repository installieren. WMI kompiliert automatisch alle MOF-Dateien in diesem Verzeichnis und verschiebt diese anschließend in das Unterverzeichnis »good« oder »bad«. Wenn »Automatisch wiederherstellen« einbezogen ist, wird der vollqualifizierte Dateiname in die Liste »AutorecoverMofs« hinzugefügt, wenn das Repository von WMI initialisiert oder wiederhergestellt wird. Die Liste legt die Reihenfolge fest, in der die MOF-Dateien kompiliert werden. Die Kennung für das Objekt »CIM_Setting«.
L LanmanServer-Objekt 362 Last Printed 148 Last Saved By 148 Last Saved Time/Date 148 LastBootUpTime 404 LastLogin 338 LDAP: 308 Left 172 Letzter Zugriff 165 LIKE 287 Line 116 LITERAL_PREFIX 301 LITERAL_SUFFIX 301 LocalDateTime 404 LockoutObservationInterval 312 Logbuchdatei 73, 420 LoginHours 335
LONG 298 LONGTEXT 298
M Major 282 Make 186 MandatoryProperties 315 Markieren 176 Markierten Eintrag ins Blickfeld rücken 177 Markierung entfernen 176 MaxBadPasswordsAllowed 312 MaxPasswordAge 312 mciSendStringA 189 MDAC 281 Members 347, 348 MenuBar 172 Menüleiste 172 Microsoft Data Access Components 281 Microsoft Office 279 Microsoft Word 64 MinimizeAll 120 Minor 282 MinPasswordAge 312 MinPasswordLength 312, 314 Mit Eingabeaufforderung öffnen 31 ModifyDate 144 Modul aussuchen 46 Modulbeschreibung 165 Module 51 Modulversion 166 Move 102, 110 MoveFile 90 MoveFolder 90 MoveHere 162, 318 MS Access 283 MSDADC.DLL 281 MsgBox 190 MSVBVM50.EXE 199
N n/a 45 Name 69, 70, 102, 110, 144
Stichwortverzeichnis Name der Firma 165 Name of Creating Application 148 Name-Eigenschaft 184 Namenskonflikte 350 NameSpace 132 NDS: 308 NET HELPMSG 319 Netzwerk 307 Netzwerk- und DFÜ-Verbindungen 139 Netzwerkdrucker 316, 368 Netzwerkumgebung 138 neue Benutzergruppe anlegen 349 Neue Funktionen 54 neuen freigegebenen Ordner anlegen 365 neues Benutzerkonto anlegen 329 neues Projekt 189 NewFolder 162 Notbremse 86 Notify 374 NotifyPath 374 NT4-Domäne 392 NTFS-Dateisystem 153 NTLM-Authentifizierung 392 Number of Characters 148 Number of Pages 148 Number of Words 148 NWCOMPAT: 308
O Objekte 33 OCX-Datei 199 Offline Folder 169 OfflineStatus 162 OLEDB32.DLL 281 OLEERR 322 OLE-Subsystem 321 on error goto 0 323 on error resume next 323 onQuit-Event 82 Open 120, 286 open 157 OpenAsTextStream 110
Optionale Parameter 188 OptionalProperties 315 Optionskästchen 192 ORDER BY 288 Ordner managen 99 OSR2 381 Out-of-Process 45, 85 Output 48
T Tabellen in der Datenbank auflisten 292 Tabellen in einer Datenbank löschen 296 TABLE_NAME 294 TABLE_TYPE 294 Template 148 temporäre Konten einrichten 334 Temporary Internet Files 138 TEXT 298
788
Stichwortverzeichnis
Textstream-Objekt 114 Thema 165 Thumbnail 148 TileHorizontally 120 TileVertically 120 TimeElapsed 374 Timeout 29, 85 TimeSubmitted 374 Titel 165 Titelleiste 179 Title 148, 162 ToolBar 172 Toolbox 182 Top 172 Total Editing Time 148 TotalPages 374 TotalSize 96 TrayProperties 120 TSID 166 Type 110, 144 TypeLib 49 TypeName 33, 135
U Umbenennen 176 UNC-Netzwerkpfade 141 UndoMinimizeALL 120 Union 50 Unload 197 Unterordner 63 UntilTime 374 User 315, 316, 374 UserControl1 184 UserPath 374