Freigeben über


[Newsletter-Archiv ^] [< Band 2, Nummer 5] [Band 3, Nummer 2 >]

Der Systems Internals-Newsletter Band 3, Nummer 1

http://www.sysinternals.com
Copyright (C) 2001 Mark Russinovich


18. April 2001 – In dieser Ausgabe:

  1. LEITARTIKEL

  2. NEUERUNGEN BEI SYSTEM INTERNALS

    • PsService v1.01
    • PsFile v1.0
    • PsExec v1.11
    • HandleEx v4.0
    • DebugView v4.11
    • Inside Windows 2000, dritte Auflage
    • Windows 2000 Magazine vom Februar
    • Sysinternals bei Microsoft
  3. INTERNALS – INFORMATIONEN

    • Nützliche Tastenkombinationen
    • PnP-Debugmeldungen
    • Entscheidung zum Reverse Engineering
    • Neue Windows XP-Systemaufrufe
    • Fehlende Netzwerkverbindung
    • WinDev
    • TechEd US
  4. BALD VERFÜGBAR

    • Prefetching (Speichervorgriff) unter Windows XP

SPONSOR: WINTERNALS SOFTWARE ~~~~

Der Sysinternals-Newsletter wird von Winternals Software gesponsert, im Internet unter http://www.winternals.com. Winternals Software ist der führende Entwickler und Anbieter von erweiterten Systemtools für Windows NT/2000. Zu den Produkten von Winternals Software zählen FAT32 für Windows NT 4.0, NTFSDOS Professional Edition (ein NTFS-Treiber mit Lese-/Schreibzugriff für DOS) und Remote Recover.

Winternals ist stolz darauf, mit Defrag Commander NE Version 1.2 eine kostengünstige und einfach zu handhabende Defragmentierungslösung für Unternehmen ankündigen zu können, die zusätzlich zur bestehenden Unterstützung von Windows 95/98/Me und Windows 2000 auch NT 4 unterstützt. Defrag Commander NE nutzt die integrierten Defragmentierungsfunktionen von Windows 2000 und Windows 95/98/Me und fügt eine eigene leistungsstarke Defragmentierungsfunktion für Windows NT 4 hinzu. Jetzt können Sie Defragmentierungszeitpläne in Ihrem gesamten Windows-Unternehmen über ein einfaches MMC-Snap-In verwalten, ohne dass Sie Clientsoftware auf Ihren NT- oder Windows 2000-Systemen installieren müssen. Eine Lizenz für 10 Systeme kann online für nur 169 USD erworben werden, und es sind attraktive Mengenrabatte verfügbar. Weitere Informationen finden Sie unter http://www.winternals.com.

Guten Tag,

Willkommen beim Sysinternals-Newsletter. Der Newsletter hat derzeit 31.500 Abonnenten.

Eines der ersten Dinge, die Ihnen auffallen, wenn Sie eine Beta-Version von Windows XP installieren, ist die neu gestaltete Benutzeroberfläche namens Luna. Look-and-Feel von Luna zieht sich durch alle Aspekte der Benutzeroberfläche, vom Verhalten des Startmenüs bis zum Design der Anwendungsmenüs und Dialogfelder. Diese komplette Umgestaltung wird durch den Einsatz einer „Design“-Engine erreicht. Designs werden in Designstildateien (mit der Endung .msstyles) beschrieben, und die Luna-Designdatei luna.msstyle befindet sich in \Windows\Resources\Themes\Luna. Im selben Verzeichnis finden Sie ein Unterverzeichnis namens Shell, in dem sich „shellstyle.dll“ befindet. Es ist nicht klar, wie XP die DLL verwendet, die von Explorer geladen wird und ein HTML-Stylesheet enthält, aber keine Exporte. Da „comdlg.dll“ und „kernel32.dll“ sie importieren und jede Anwendung eine Kopie dieser DLLs erhält, erhält jeder Prozess auch eine geladene Kopie von \Windows\System32\UxTheme.DLL, der Clientbibliothek für Designs. Diese DLL exportiert Funktionen wie IsThemeActive, IsAppThemed, GetCurrentThemeName, DrawThemeBackground und GetThemeColor.

In der Registrierung wird das aktuelle Design angegeben und die Verbreitung des Designs konfiguriert. Unter HKEY_CURRENT_USER\Software\Microsoft\Plus!\Themes finden Sie einen Schlüssel namens Apply, in dem Sie Werte wie „Farben“ und „Symbole“ finden, die angeben, wo das Design aktiv sein soll. Unter demselben Schlüssel enthält der Unterschlüssel Current den Pfad zu der MSSTYLES-Datei für das aktuelle Design.

Angesichts der Tatsache, dass Skins für Anwendungen wie WinAmp und Windows Media Player zum Trend geworden ist, sollte es naheliegend sein, dass Microsoft ein Tool veröffentlicht, mit dem Dritte ihre eigenen Designs entwickeln können, oder zumindest das Format der .msstyles-Datei und der Shellstyle-DLL dokumentiert, damit Dritte Design-Editoren entwickeln können. Sie würden sich jedoch irren. In „Microsoft Windows XP: What's in It for Developers?“ (online verfügbar unter http://msdn.microsoft.com/library/default.asp?URL=/library/techart/winxpintro.htm)) stellt Microsoft klar, dass es nicht die Absicht hat, Designs von Drittanbietern zuzulassen:

„Auf den ersten Blick ähnelt das Potenzial für mehrere Windows XP-Stile der Skin-Funktionalität in Anwendungen wie dem Windows Media Player, aber es gibt Unterschiede. Designs ändern den visuellen Stil des Betriebssystems, bieten aber dennoch eine mit früheren Versionen von Windows konsistente Benutzeroberfläche. Dies ist wichtig, da Designs systemweit angewendet werden. Änderungen am Design einer Anwendung, wie z. B. das Entfernen von Schaltflächen, sind auf Betriebssystemebene nicht zweckmäßig. Die Designdateiformate sind nicht öffentlich. Microsoft behält die Kontrolle über die Designs, um eine konsistente Benutzeroberfläche und Designkontinuität zu gewährleisten. Ein Entwicklerkit für Designs wird für Windows XP nicht zur Verfügung stehen.“

Das Argument für eine solche Haltung ist sicher, dass die Designs von Drittanbietern die Benutzeroberfläche irgendwie beschädigen könnten und die Benutzer den Microsoft-Support um Hilfe bitten würden. Warum bei Windows Media Player nicht die gleiche Befürchtung besteht, ist mir ein Rätsel. Dennoch gibt es Möglichkeiten, dem Desktop und Anwendungen ein designähnliches Erscheinungsbild zu verleihen. Besuchen Sie http://www.wincustomize.com/, wo Sie Windows-Desktopdesigns wie das neue Aqua-Soft (ein WindowBlinds-Design – http://www.windowblinds.net) finden, das Windows das Erscheinungsbild des OS X-Desktops von Apple verleiht. Und angesichts der Hartnäckigkeit der Skinning Community herauszufinden, wie sich alles, was veröffentlicht wird, skinnen lässt, bin ich mir sicher, dass es Leute gibt, die das Designformat von Microsoft einem Reverse Engineering unterziehen. Es ist nur eine Frage der Zeit, bis jemand einen Design-Editor veröffentlicht, unabhängig von der Richtlinie von Microsoft hinsichtlich der Kontrolle von Designs.

Was wird Microsoft also tun, wenn Windows XP Design-Editoren und Designs von Drittanbietern auftauchen? Wir werden abwarten müssen, aber das Verhalten von Apple könnte uns einen Vorgeschmack geben. Vor einigen Tagen hat Apple einem Unternehmen, das einen Design-Editor für das Mac OS entwickelt, eine Unterlassungsaufforderung erteilt: http://www.macworld.co.uk/news/main_news.cfm?NewsID=2773. Designentwickler aufgepasst.

Bitte leiten Sie den Newsletter an alle Personen weiter, für die diese Informationen von Interesse sein könnten.

Vielen Dank!

– Mark

NEUERUNGEN BEI SYSTEM INTERNALS

PsService v1.01

Die Resource Kits für NT 4 und Windows 2000 verfügen, solange ich mich erinnern kann, über ein über die Befehlszeile aufrufbares Hilfsprogramm zur Dienststeuerung namens SC. Mit SC können Sie Zustand und Konfiguration von Win32-Diensten auf dem lokalen oder auf Remotesystemen anzeigen und ändern. PsService ist ein Freewareklon von SC mit einigen zusätzlichen Features.

Zum einen können Sie sich mit PsService mit Remotesystemen mithilfe alternativer Benutzeranmeldeinformationen verbinden. Dies ist nützlich, wenn das Konto, mit dem Sie das Programm ausführen, keine Administratorberechtigungen auf dem Remotesystem hat, Sie aber Zugriff auf ein Konto haben, das diese Berechtigungen hat. Das zweite ist die Suchfunktion von PsService. Wenn Sie schon einmal vergessen haben, auf welchem System in Ihrem Netzwerk der DNS-, DHCP- oder ein anderer Dienst ausgeführt wird, werden Sie die Suchfunktion als nützlich empfinden, da Sie einen Dienstnamen angeben können und die Computer gemeldet werden, auf denen der Dienst ausgeführt wird.

PsService basiert auf der Service Control Manager-API, für die Sie eine vollständige Dokumentation im Platform SDK finden, und erfordert keine Installation von Clientsoftware.

PsService v1.01 kann unter http://www.sysinternals.com/ntw2k/freeware/psservice.shtml. heruntergeladen werden.

PsFile V1.0

PsFile ist ein Tool, das ich als Antwort auf Anfragen nach etwas erstellt habe, das die Einschränkungen des Befehls „net file“ unter Windows NT/2000 überwindet. Sie können den integrierten Befehl „net“ unter NT und Windows 2000 mit der Option „file“ verwenden, um die Dateien aufzulisten, die andere Computer auf vom System exportierten Freigaben geöffnet haben. Der Befehl „net“ schneidet jedoch lange Pfadnamen ab und funktioniert nur auf dem lokalen System.

PsFile verwendet dieselben APIs (passenderweise die „Net“-API, die im Platform SDK dokumentiert ist) wie der Befehl „net“, schneidet aber keine Dateinamen ab und funktioniert sowohl lokal als auch remote, ohne dass Clientsoftware installiert werden muss.

PsFile v1.0 kann unter http://www.sysinternals.com/pstools.htm. heruntergeladen werden.

PsExec V1.11

PsExec ist eine Befehlszeilenanwendung für Windows NT/2000, mit der Sie Programme auf Remotesystemen ausführen können. Besonders leistungsfähig ist es dadurch, dass sich Konsolenprogramme remote aktivieren lassen, sodass Sie sie interaktiv ausführen können. Wenn Sie z. B. die ausführbare Datei für die Eingabeaufforderung (cmd.exe) auf einem Remotesystem mithilfe von PsExec starten, haben Sie effektiv eine Remoteshell, ohne Clientsoftware installieren zu müssen.

PsExec dient nicht nur als schlankes Telnet, sondern ermöglicht auch, ausschließlich lokale Anwendungen remote zu aktivieren. IpConfig, das integrierte Tool, das Ihnen die Netzwerkkonfiguration eines Systems anzeigt, ist nicht in der Lage, die Konfiguration von Remotesystemen anzuzeigen. Mit PsExec können Sie es jedoch remote starten und seine Ausgaben lokal einsehen.

In einigen Fällen ist das Konto wichtig, unter dem eine Anwendung ausgeführt wird. Die Anwendung muss möglicherweise in Ihrem Konto ausgeführt werden, damit Änderungen an der Registrierung oder an Dateien im richtigen Sicherheitskontext erfolgen. In anderen Fällen kann es wünschenswert sein, die Anwendung in einem anderen Konto auszuführen als in dem, in dem Sie PsExec ausführen, und manchmal möchten Sie möglicherweise, dass die Remoteanwendung im Systemkonto ausgeführt wird. PsExec unterstützt all diese Fälle.

Standardmäßig führt PsExec Programme in einem Sicherheitskontext mit Identitätswechsel aus. Wenn Sie PsExec im Administratorkonto ausführen, wird der Remoteprozess im Administratorkonto ausgeführt. Aufgrund von Einschränkungen beim Identitätswechsel hat der Remoteprozess keinen Zugriff auf Netzwerkressourcen auf dem Remotesystem. Wenn Sie einen Benutzernamen und ein Kennwort in der Befehlszeile von PsExec angeben, startet PsExec den Remoteprozess im anderen Konto, der Zugriff auf alle Netzwerkressourcen hat, auf die dieses Konto Zugriff hat. Schließlich können Sie mit einer Befehlszeilenoption PsExec anweisen, den Remoteprozess im Systemkonto auszuführen – also in dem Konto, in dem Win32-Dienste ausgeführt werden.

Laden Sie PsExec v1.11 unter http://www.sysinternals.com/ntw2k/freeware/psexec.shtml. herunter.

HandleEx v4.0

HandleEx ist ein vielseitiges Tool, das Ihnen die Liste der auf einem Computer aktiven Prozesse sowie die Handles für geöffnete Betriebssystemressourcen und die von ihnen geladenen DLLs zeigt. Die Suchfunktion und die detaillierte Darstellung von Prozess-, Handle- und DLL-Eigenschaften machen HandleEx zum perfekten Tool zum Aufspüren von DLL-Versionsproblemen, zum Behandeln von Handle-Lecks und für den Prozess, der auf eine bestimmte Datei oder ein bestimmtes Verzeichnis zugreift.

Wenn Sie die Updates für Sysinternals verfolgt haben, werden Sie feststellen, dass bei HandleEx in den letzten Monaten zwei Hauptversionsnummern übersprungen wurden. Mit dem ersten Hauptupdate, v3.0, wurde eine Reihe von Funktionen eingeführt, wie z. B. Anwendungssymbole in der Prozessansicht, QuickInfos für alle Elemente der Listenansicht, eine wesentlich effizientere Aktualisierung und eine verbesserte Suchfunktion, bei der Sie im Dialogfeld „Suchen“ auf die Ergebnisse klicken können, woraufhin HandleEx zum entsprechenden Handle oder DLL-Eintrag springt.

Die vielleicht nützlichsten Features für Entwickler sind jedoch „Aktualisierungshervorhebungen“ und „Hervorhebung verschobener DLLs“. „Aktualisierungshervorhebung“ bezieht sich auf das Verhalten von HandleEx, wenn Sie die Ansicht aktualisieren. Neue Elemente, einschließlich Prozesse, Handles oder geladener DLLs, die vor der Aktualisierung nicht vorhanden waren, sind grün hervorgehoben, während Elemente, die nicht mehr vorhanden sind, rot hervorgehoben sind. Neben visuellen Hinweisen auf Änderungen können Sie auf diese Weise Handle-Lecks anschaulich erkennen, wobei neu geöffnete Handles nach einer Aktualisierung grün angezeigt werden.

Die Hervorhebung verschobener DLLs von HandleEx steht im Zusammenhang mit der DLL-Verschiebung, einem Begriff, der das Verhalten des Lademechanismus von Modulen unter Windows beschreibt, wenn dieser die von den Entwicklern beim Erstellen einer DLL angegebene bevorzugte „Basisadresse“ nicht berücksichtigen kann. Der Code, den ein Linker (das in der letzten Phase der DLL- oder EXE-Erstellung verwendete Tool) für eine DLL erzeugt, hat Verweise auf Arbeitsspeicher innerhalb der DLL festgelegt, wobei davon ausgegangen wird, dass der Lademechanismus die Basisadresse der DLL berücksichtigt. Der Arbeitsspeicherbereich im Prozess zum Laden einer DLL, der an der Basisadresse beginnt und der Größe des geladenen DLL-Images entspricht, muss frei sein, damit die DLL an ihrer bevorzugten Basisadresse geladen werden kann. Wenn die Basisadresse für mehrere Prozesse berücksichtigt wird, wird eine effiziente Arbeitsspeichernutzung erreicht, da alle Prozesse denselben DLL-Codearbeitsspeicher verwenden.

Falls der Lademechanismus die Basisadresse einer DLL nicht berücksichtigen kann, z. B. wenn eine andere DLL den gewünschten Adressbereich bereits nutzt, muss der Lademechanismus eine „Verschiebung“ durchführen, bei der alle Verweise auf Arbeitsspeicher innerhalb der DLL aktualisiert werden, um die tatsächliche Ladeadresse der DLL wiederzugeben. Neben der (meist nicht wahrnehmbaren) Verlangsamung der Ladezeit des Prozesses kann das verschobene DLL-Image nicht mit anderen Prozessen gemeinsam genutzt werden, die die DLL an der bevorzugten Basisadresse geladen haben. Dies bedeutet, dass Sie effektiv eine zweite Kopie der DLL erhalten, die Arbeitsspeicher belegt.

Im DLL-Modus können Sie die Option „Highlight relocated DLLs“ auswählen. Dies führt dazu, dass HandleEx Einträge für DLLs, die nicht an ihrer bevorzugten Basisadresse geladen werden, gelb anzeigt. Entwickler können ihre DLL-Basisadressen zurücksetzen, um Verschiebungen zu vermeiden.

Was ist mit dem Sprung von HandleEx auf Version 4.0? Diese neueste Version von HandleEx bietet auf der Win9x/Me-Plattform die vollständige Handleanzeige. Jetzt können Sie wie bei der Ausführung von HandleEx unter WinNT/2000/XP einen Prozess auswählen und die von ihm geöffneten Handles einsehen. Nicht nur das, sondern wie auch unter WinNT/2000/XP liefert die Anzeige der Eigenschaften von Ereignissen, Mutexen und Semaphoren Informationen über deren Zustand (gehalten, signalisiert).

Laden Sie HandleEx v2.4.0 unter http://www.sysinternals.com/ntw2k/freeware/handleex.shtml. herunter.

DebugView V4.11

DebugView ist ein Hilfsprogramm für Entwickler, mit dem Sie Debugausgaben von Anwendungen oder Treibern auf dem lokalen System oder einem Remotesystem erfassen können – sogar von mehreren Systemen gleichzeitig. Diese neueste Version bietet Kompatibilität mit Windows XP Beta 2, einige neue nützliche Features und ein Feature für Entwickler von Gerätetreibern für WinNT/2000/XP.

Im Filterdialogfeld von DebugView können Sie Filtermasken ein- und ausschließen, um die Debugausgabe auf die gewünschten Ergebnissen einzugrenzen. Darüber hinaus können Sie bis zu fünf Hervorhebungsfilter angeben, die jeweils eine andere anpassbare Farbe aufweisen. Wenn Sie bislang Projekte hatten, für die unterschiedliche Filter erforderlich waren, mussten Sie die Filter bei jedem Projektwechsel neu eingeben. Mit DebugView 4.11 können Sie Filter in einer Datei speichern und schnell erneut laden. Wie bisher beginnt DebugView mit den Filtern, die beim letzten Beenden des Programms aktiv waren.

Mitunter ist es notwendig, eine Ablaufverfolgung der Debugausgabe zur späteren Analyse oder zum Vergleich mit anderen Ablaufverfolgungen aufzuzeichnen. Vor der neuen Version von DebugView bestand die einzige Möglichkeit zur Anzeige einer Protokolldatei darin, sie in einen Text-Editor zu laden, was bedeutete, dass Sie keine hilfreichen Hervorhebungsfilter anwenden konnten. Jetzt können Sie eine DebugView-Protokolldatei erneut in DebugView laden und dadurch die Ausgabe so anzeigen, wie Sie sie ursprünglich erfasst haben. Mithilfe mehrerer DebugView-Fenster können Sie Ablaufverfolgungen vergleichen.

Das letzte neue Feature, die Startzeitprotokollierung, ergänzt die Unterstützung von Absturzabbildern von DebugView in NT/Win2000. Dank der Unterstützung von DebugView für Absturzabbilder können Sie die Ausgaben eines Gerätetreibers erfassen. Wenn der Treiber das System zum Absturz bringt und Sie Absturzabbilder aktiviert haben (vollständig oder im Kernel), können Sie mit DebugView die Debugausgabe des Treibers aus dem Abbild extrahieren. Dadurch können Sie die Ausgaben des Treibers bis zum Zeitpunkt des Absturzes einsehen.

Mithilfe der Startzeitprotokollierung können Sie die Ausgaben von Treibern protokollieren, die während des Startprozesses als Start- bzw. Systemstarttreiber geladen werden. Der DebugView-Treiber erfasst und puffert bis zu 1 MB an Debugausgaben während des Startvorgangs, nachdem Sie die Startzeitprotokollierung aktiviert haben. Nachdem das System hochgefahren wurde, importiert die Anwendung DebugView die gepufferte Ausgabe zur Ansicht. Und wenn Ihr Treiber während des Startvorgangs abstürzt und Sie Absturzabbilder aktiviert haben, können Sie dank der Unterstützung für Absturzabbilder in DebugView die Ausgaben einsehen, die der Treiber vor dem Absturz generiert hat.

Laden Sie DebugView v4.11 unter http://www.sysinternals.com/ntw2k/freeware/debugview.shtml. herunter.

INSIDE WINDOWS 2000, DRITTE AUFLAGE

Das offizielle Buch zu den Interna von Windows 2000 ist jetzt verfügbar! Diese Ausgabe, die von David Solomon (www.solsem.com) und Mark Russinovich gemeinsam verfasst wurde, ist um mehr als 40 % umfangreicher als die vorherige und behandelt nun auch Netzwerke, Plug & Play, Energieverwaltung, Dienste, die Registrierung, die Windows-Verwaltungsinstrumentation (Windows Management Instrumentation, WMI), Start und Herunterfahren sowie Speicher. Enthalten ist auch eine CD mit mehreren leistungsstarken Tools zum Untersuchen der Windows 2000-Interna, die nirgendwo sonst verfügbar sind.

Wenn Sie die Amazon.com-Seite des Buchs (http://www.amazon.com/exec/obidos/ASIN/0735610215/o/qid%3D957490318/sr%3D8-1/ref%3Daps%5Fsr%5Fb%5F1%5F1/103-5793119-3499040/systemsinternals/107-2386425-6078131) besuchen, werden Sie feststellen, dass seit Veröffentlichung des Buchs im September nur zwei Rezensionen veröffentlicht wurden. Wenn Sie das Buch besitzen, möchten wir Sie dringend bitten, Ihre Meinung mit anderen potenziellen Lesern zu teilen.

Sehen Sie sich das Inhaltsverzeichnis des Buchs an, und bestellen Sie es gleich auf http://www.sysinternals.com/insidew2k.htm.

WINDOWS 2000 MAGAZINE VOM FEBRUAR

Lesen Sie in der Februar-Ausgabe des Windows 2000 Magazine meinen Artikel zur Absturzabbildanalyse in NT/Win2000. In diesem Artikel werden zunächst die einfachen Vorgänge zum Konfigurieren von Absturzabbildern erläutert. Es wird erklärt, wie das Betriebssystem ein Absturzabbild erstellt (mit Hinweisen darauf, warum ein Absturzabbild möglicherweise nicht generiert werden kann). Anschließend erkläre ich, wo Sie die neuesten Hilfsprogramme für die Analyse von Absturzabbildern erhalten können, und erläutere die Verwendung eines neuen, leistungsstarken Hilfsprogramms von Microsoft, Kanalyze. Schließlich werfe ich einen kurzen Blick darauf, wie Sie mit einem Kerneldebugger ein Absturzabbild untersuchen können. Auch wenn nur ein kleiner Teil der Absturzabbilder bei der Analyse ihre Ursache offenbart, dürften Sie die Informationen nützlich finden.

Der Artikel ist online über einen Link unter http://www.sysinternals.com/publ.shtml abrufbar, wo Sie auch Links zu allen unseren Veröffentlichungen finden.

SYSINTERNALS BEI WWW.MICROSOFT.COM

Seit dem letzten Newsletter ist Sysinternals in weiteren Artikeln der Microsoft Knowledge Base (KB) aufgetaucht. Insgesamt habe ich 17 Verweise auf Sysinternals-Tools gefunden.

  • Q274038: PRB: ASP-Fehler 8002801d „Bibliothek nicht registriert“
    http://support.microsoft.com/support/kb/articles/Q274/0/38.ASP
    In diesem Artikel werden Benutzer auf Regmon verwiesen, um Active Server Pages-Fehler zu beheben.

  • Q232830 – VORGEHENSWEISE: Ermitteln des Besitzes von Dateihandles
    http://support.microsoft.com/support/kb/articles/Q232/8/30.ASP
    Möchten Sie wissen, welcher Prozess eine Datei geöffnet hat? In diesem KB-Artikel werden Sie zu HandleEx weitergeleitet.

  • Q2163868 – PRB: Zugriffsverletzung während der Anwendungseinrichtung bei in Verwendung befindlicher Datei
    http://support.microsoft.com/support/kb/articles/Q216/3/68.ASP
    Visual Basic Setup-Anwendungen können abstürzen, wenn eine Datei, die sie zu kopieren versuchen, gerade verwendet wird. HandleEx ist das ideale Tool für die Nachverfolgung des störenden Prozesses.

  • Q286198 – VORGEHENSWEISE: Nachverfolgen von Fehlern des Typs „Berechtigung verweigert“ für DLL-Dateien
    http://support.microsoft.com/support/kb/articles/Q286/1/98.ASP
    Mithilfe von Filemon (in diesem Artikel wird auch Regmon erwähnt) können Sie feststellen, welcher Prozess einer COM- oder MTS-Anwendung den Fehler „Zugriff verweigert“ erhält.

  • Q246199 – FEHLER: Geänderte Gebietsschemaeinstellungen in erweiterten gespeicherten Prozeduren können zu falschen Ergebnissen führen
    http://support.microsoft.com/support/kb/articles/Q246/1/99.ASP
    In diesem Artikel wird empfohlen, mithilfe von ListDLLs festzustellen, welche Version der C-Runtime-Bibliothek von SQL Server verwendet wird.

  • Q196453 – Problembehandlung bei NTVDM- und WOW-Startfehlern http://support.microsoft.com/support/kb/articles/Q196/4/53.ASP Benutzer mit Problemen beim Starten von 16-Bit-Anwendungen werden auf Filemon verwiesen, um zu prüfen, bei welchen Dateien das 16-Bit-Umgebungssubsystem (NTVDM) Zugriffsfehler gemeldet werden.

INTERNALS – INFORMATIONEN

Nützliche Tastenkombinationen

Viele von Ihnen betrachten die WINDOWS-TASTE auf neueren Tastaturen wahrscheinlich als eine Taste, die einfach nur Platz wegnimmt. So ging es mir bis vor Kurzem, bis ich über eine Tastenkombination mit der WINDOWS-TASTE für einen Vorgang stolperte, den ich häufig ausführe, und jetzt nutzt sich schon das Logo ab, weil ich die Taste ständig drücke. Ich dachte mir, ich stelle Ihnen einige meiner nützlichen Tastenkombinationen vor, die alle unter allen Versionen von Windows funktionieren.

Aktion Verknüpfung
Task-Manager starten STRG+UMSCHALT+ESC
Dialogfeld „Systemeigenschaften“ anzeigen WINDOWS+PAUSE
Minimieren aller Fenster WINDOWS+M
Alle Fenster maximieren WINDOWS+M
„Arbeitsplatz“ öffnen WINDOWS+E
Datei suchen WINDOWS+F
Dialogfeld „Ausführen“ öffnen WINDOWS+R

Nachdem ich diese durch Ausprobieren ermittelt hatte, wies David Solomon darauf hin, dass sie in der Windows 2000-Hilfe unter „Natürliche Tastenkombinationen“ dokumentiert sind.

PnP-Debugmeldungen

Wenn Sie Plug & Play-Treiber für Windows 2000 entwickeln, wird es Sie vielleicht überraschen zu erfahren, dass Sie sogar den Retail-Build von Windows 2000 dazu bringen können, während des Enumeration- und Treiberladeprozesses umfangreiche Plug & Play-Systemdebugmeldungen zu erzeugen. Halten Sie Ihren Kerneldebugger zu Beginn des Systemstartvorgangs an, und legen Sie die interne Kernelvariable PnpEnumDebugLevel auf 2 fest (die meisten Meldungen werden auf Ebene 1 ausgelöst). Hier ein Beispiel der Ausgabe, das zeigt, wie der PnP Manager den Swenum-Treiber (Software Enumeration Bus Driver) lädt:

.
IopCallDriverAddDevice: Processing devnode 0xfe503208
IopCallDriverAddDevice: DevNode flags going in = 0x000019
IopCallDriverAddDevice: Will load driver
IopCallDriverAddDevice: Opening registry key Root\SYSTEM\0000
IopCallDriverAddDevice:         Class GUID is {4D36E97D-E325-11CE-BFC1-08002BE10318}
IopCallDriverAddDevice: Unable to open GUID\Properties key {4D36E97D-E325-11CE-BFC1-08002BE10318} - 0xc0000034
IopCallDriverAddDevice:         Value Service [Type 1, Len 14] @ 0xe14ee82c
IopCallDriverAddDevice:                 Service Name swenum
IopCallDriverAddDevice:                 DriverName is \Driver\swenum
IopCallDriverAddDevice:                 Driver Reference 0xff3a8af0
IopCallDriverAddDevice: Adding Services (type 0)
IopCallDriverAddDevice: Adding Services (type 1)
IopCallDriverAddDevice: Adding Services (type 2)
IopCallDriverAddDevice: Adding driver 0xff3a8af0
IopCallDriverAddDevice:         Routine returned 00000000
.

Entscheidung zum Reverse Engineering

Diejenigen unter Ihnen, die Sysinternals folgen, wissen, dass ich keinen Zugriff auf den Quellcode von Windows habe (abgesehen von den Treibern, die im DDK enthalten sind) und dass ich die Feinheiten der Implementierung durch den mühsamen Einsatz von SoftICE und meinem eigenen benutzerdefinierten Disassembler in Erfahrung bringen muss.

Ich bin auf einen Artikel gestoßen – „Reverse Engineering: Necessary Function or Illegal Activity?“ (http://www.planetit.com/techcenters/docs/security/news/PIT20010123S0001), in dem ein Urteil des 9. Circuit Court of Appeals in den USA vom Januar in einem Fall zwischen Sony und Connectix beschrieben wird, das für diejenigen unter Ihnen interessant sein dürfte, die ebenfalls Reverse Engineering betreiben. Sony hatte gegen Connectix geklagt, nachdem Connectix die „Virtual Game Station“ entwickelt hatte, ein Programm, mit dem Sony PlayStation-Spiele auf einem PC ausgeführt werden können. Das Gericht entschied, dass Connectix sich im Rahmen des Gesetzes bewegte, als es die PlayStation (durch Disassemblieren) einem Reverse Engineering unterzog, um die Entwicklung des Emulators zu ermöglichen.

Obwohl das Maß der Rechtmäßigkeit von Reverse Engineering, insbesondere in Anbetracht von Shrink-Wrap-Lizenzen (Schutzhüllenlizenzen), die dies verbieten, immer noch unklar ist, wurde in diesem Fall zugunsten von Reverse Engineering entschieden.

WINDOWS XP-Kernelupdates

Anders als beim Übergang von NT 4 zu Windows 2000 wurden am Windows XP-Kernel subtilere Änderungen vorgenommen, von denen viele auf Leistungsverbesserungen abzielen. Die für Treiberentwickler verfügbaren Kernel-APIs wurden um mehr als 200 neue exportierte Kernelfunktionen erweitert, wodurch einige frühere Lücken geschlossen wurden. Beispielsweise können Filemon und andere Sysinternals-Tools den Namen des Prozesses, der einen Vorgang ausführt, über den undokumentierten Prozessumgebungsblock ermitteln – unter Windows XP können sie PsGetProcessImageFileName aufrufen. Es gibt fast drei Dutzend neue Ps-Aufrufe zum Abrufen und Festlegen von Prozessattributen, neue APIs für Debugausgaben, mit denen Sie Ausgabetyp und Debugebene klassifizieren können, und einen neuen Systemaufruf zum Speichern von Registrierungsstrukturen. Es gibt auch eine Handvoll APIs wie ZwQueryBootOptions, ZwSetBootEntryOrder und ZwDeleteBootEntry zur Bearbeitung der 64-Bit-Windows-XP-Entsprechung von „Boot.ini“, die nicht in einer Datei, sondern im nichtflüchtigen Arbeitsspeicher gespeichert wird.

Es gibt jedoch auch bedeutendere Änderungen am Kernel, von denen die meisten von Gerätetreibern oder der Kernelunterstützung abhängen. So gibt es beispielsweise einen Dienst zur Systemwiederherstellung, der mithilfe eines Treibers für Dateisystemfilter (sr.sys) die Nachverfolgung von Änderungen an Dateien ermöglicht, sodass das System auf einen früheren Zeitpunkt zurückgesetzt werden kann. Es gibt einen Speicherfiltertreiber namens „volsnap.sys“, der im Zusammenspiel mit Dateisystemtreibern eine zeitpunktbezogene Kopie eines Volumes erstellen kann. Es gibt einen schnellen Dienst für den Benutzerwechsel, der die in den Kernel integrierte Unterstützung von Terminaldiensten nutzt, damit mehrere Benutzer angemeldet und zwischen ihnen umgeschaltet werden kann, sowie eine verbesserte API-Unterstützung für die Defragmentierung, die von den Dateisystemtreibern bereitgestellt wird.

Microsoft hat unter http://www.microsoft.com/hwdev/Whistler/download/Whistler_kernel.zip. ein Whitepaper veröffentlicht, in dem viele der Verbesserungen beschrieben werden. Der Detailgrad ist unterschiedlich, sodass viele Fragen zur Implementierung und zum Verhalten unbeantwortet bleiben, aber es handelt sich um einen recht guten Gesamtüberblick. Aber bestimmt können Sie in künftigen Newslettern und Artikeln von Sysinternals sowie in meinen Artikeln im Windows 2000 Magazine Antworten auf einige dieser Fragen finden.

Fehlende Netzwerkverbindung

Ein Großteil meiner Entwicklung konzentriert sich auf netzwerkfähige Anwendungen, aber unter Windows 2000 können Sie solche Anwendungen nicht testen, wenn Sie einen nicht mit dem Netzwerk verbundenen Computer (z. B. einen Laptop) in der Standardkonfiguration hochfahren. Das liegt daran, dass der TCP/IP-Stapel erst aktiviert wird, nachdem das System eine Netzwerkverbindung erkannt hat. Das bedeutet zum Beispiel, dass dir \\laptop\c$ (wobei „Laptop“ der Name Ihres Computers ist) und ping 127.0.0.1 beide auf nicht mit dem Netzwerk verbundenen Systemen fehlschlagen. Wenn Sie über einen Domänencomputer verfügen, kann dies auch zu erheblichen Verzögerungen beim Systemstart führen.

Hierfür gibt es zwei Problemumgehungen. Eine davon ist die Installation des Microsoft-Loopbackadapters, eines virtueller Netzwerkadapters, der mit dem Hardware-Assistenten installiert werden kann. Die zweite besteht darin, die Medienerkennung zu deaktivieren, die verhindert, dass das System erkennt, dass die Verbindung unterbrochen wurde, indem Sie einen Wert in der Registrierung festlegen, wie im Microsoft KB-Artikel Q239924 beschrieben: http://support.microsoft.com/support/kb/articles/Q239/9/24.ASP. Bei beiden Ansätzen ist der TCP/IP-Stapel auch auf nicht mit dem Netzwerk verbundenen Systemen aktiv und ermöglicht den Zugriff auf das lokale System über Netzwerk-APIs und UNC-Pfade (wie \\laptop\c$).

WinDev

WinDev, die Windows-Entwicklerkonferenz, findet dieses Jahr vom 11. bis 15. Juni in Boston statt. Alle großen Namen der Win32-, System- und .NET-Programmierung werden anwesend sein, und es ist das einzige Mal in diesem Jahr, dass Sie eine Sitzung über Interna von Windows 2000 besuchen können, die sowohl von David Solomon (www.solsem.com) als auch von mir moderiert wird. Dave und ich werden am ersten Tag gemeinsam das ganztägige Tutorial „Inside Windows 2000 Fundamentals“ veranstalten. Außerdem halte ich eine Sitzung über die Programmierung von Kommunikationsmechanismen zwischen Prozessen unter Windows und eine über Neuerungen in Windows XP ab.

Sie können die Zusammenfassungen meiner Vorträge anzeigen und finden einen Link zur WinDev-Website unter http://www.sysinternals.com/ntw2k/info/talk.shtml..

TechEd US

Die TechEd ist die wichtigste Konferenz von Microsoft, an der 10.000 Personen teilnehmen und die seit mehreren Jahren stets ausverkauft ist. Dieses Jahr findet sie vom 17. bis 21. Juni in Atlanta, Georgia statt. Wenngleich der Schwerpunkt auf .NET liegt, hat Microsoft mich eingeladen, „A Tour of Sysinternals Tools“ und „Introduction to Windows NT/2000 Crash Dump Analysis“ zu präsentieren. David Solomon wird ebenfalls anwesend sein und über die Arbeitsspeicherverwaltung unter Windows 2000 und die Interna von Prozessen und Threads referieren.

Diejenigen unter Ihnen, die in Europa leben, können David und mich auf der TechEd Europe treffen, die vom 3. bis 6. Juli in Barcelona stattfindet.

Sehen Sie sich meine Zusammenfassungen an, und folgen Sie einem Link zur TechEd-Startseite unter http://www.sysinternals.com/ntw2k/info/talk.shtml.

Was steht an?

Prefetching (Speichervorgriff) unter Windows XP

Eine der auffälligsten Verbesserungen an Windows XP sind die schnellen Systemstartzeiten. Prefetching ist die Grundlage der Verbesserung. XP überwacht den Zugriff auf Datenträger während des Systemstarts und speichert die Informationen für den nachfolgenden Systemstart, bei dem die Daten verwendet werden, um Anwendungen in den Arbeitsspeicher zu laden, ehe auf sie verwiesen wird. Beim nächsten Mal werde ich näher auf die Prefetchingmechanismen eingehen, um zu erklären, wie XP sie implementiert.


Vielen Dank, dass Sie den Sysinternals-Newsletter gelesen haben.

Veröffentlicht am Mittwoch, den 18. April 2001 um 19:04 Uhr von ottoh

[Newsletter-Archiv ^] [< Band 2, Nummer 5] [Band 3, Nummer 2 >]