Komfortabler Dateimanager mit vielen Funktionen

Warum noch SP1?

By Sven on 20.06.2006 - 15:22 in Entwicklung with Keine Kommentare

Im Kommentar zu Windows-Version ermitteln fragte Thomas, warum ich immer noch XP SP1 einsetze. Der Grund liegt in der Kombination von VC6 und den Windows-Debugsymbolen. Debugsymbole sind Zusatzinformationen des Compilers bzw. Linkers. Sie werden benötigt, um sich beim Debuggen bequem durch die verschiedenen Funktionen eines Programms bewegen zu können. Mit Hilfe der Debuginformationen kann der Debugger viel mehr Informationen anzeigen als ohne. Beim Erstellen der eigenen Programme werden die Debuginformationen normalerweise automatisch erstellt und verwendet. Sobald man aber eine Windows-Funktion aufruft, sieht man nur noch den Assemblercode und im Aufrufstack werden hexadezimale Adressen angezeigt. Zur Verdeutlichung habe ich einmal zwei Screenshots gemacht. Im ersten wird der Aufrufstack beim erstellen eines Fensters gezeigt. Man sieht nur, dass der Aufruf aus der USER32.DLL kommt:

Aufrufstack ohne Debugsymbole

Der zweite Screenshot zeigt das Disassembler-Fenster im Debugger, wenn man in die Windows-Funktion LoadLibrary hineingeht:

LoadLibrary ohne Debugsymbole

Bei Verwendung von Debugsymbolen ist der Aufrufstack sehr viel aussagekräftiger. Man sieht genau, wo der Aufruf einer Funktion herkommt und welchen Weg er durchlaufen hat:

Aufrufstack mit Debugsymbolen

Im Disassembler-Fenster sind die Auswirkungen der Debugsymbole aber noch gravierender. Die Assemblerwüste hat sich zu einer Oase von nützlichen Informationen entwickelt. Nun ist z.B. zu sehen, dass die Datei twain_32.dll beim Laden eine Sonderbehandlung erfährt:

LoadLibrary mit Debugsymbolen

Mit dem SP2 und der damaligen Sicherheitsinitiative hat Microsoft zum besseren Schutz vor Pufferüberläufen den Compiler gewechselt. Ab dem SP2 werden alle Dateien mit dem VC7 kompiliert, bis zum SP1 wurde noch der VC6 verwendet. Alle Patches für SP1 werden übrigens auch noch mit dem VC6 erstellt. Leider hat sich mit dem VC7 aber das Format der Debuginformationen geändert, der VC6 kann mit dem neuen Format nichts mehr anfangen. Man sieht so nur noch die Informationen, die in den ersten beiden Screenshots dargestellt werden. Abhilfe würde nur ein kompletter Umstieg auf Visual Studio 2005 schaffen, allerdings gibt es einige Gründe, warum dies derzeit keine Alternative ist.

Windows-Version ermitteln

By Sven on 19.06.2006 - 15:11 in Kleine Tools with 3 Kommentare

Es war mal wieder an der Zeit, die Funktion zur Ermittlung der Windows-Version auf den aktuellen Stand zu bringen. Um dies auf den verschiedenen Systemen zu testen, habe ich mir ein kleines Programm geschrieben, welches die über GetVersionEx ermittelten Daten in einem Fenster anzeigt:

GetWindowsVersion

Wer mag, kann sich GetWindowsVersion.exe auch herunterladen. Vielleicht ist es ja dem einen oder anderen ebenfalls nützlich.

SpeedCommander zeigt falsche Systemzeit

By Sven on 12.06.2006 - 19:59 in Support with 6 Kommentare

In einer Supportanfrage bemängelte ein Anwender, dass SpeedCommander seit einigen Tagen falsche Zeitangaben anzeigt. Im Vergleich mit dem Windows-Explorer und der Taskbar läge SpeedCommander immer ca. 2h zurück. Ich bat darum, mir einen Screenshot mit den jeweils angezeigten Zeitangaben zu schicken, um mir selbst ein Bild machen zu können. Mit dem Screenshot war dann auch schnell alles klar. Der Explorer zeigte die Zeit mit der letzten Änderung, im SpeedCommander war jedoch die Spalte mit dem Erstellungsdatum zu sehen. Solche selbstheilenden Fehler sind mir immer noch die liebsten.

SpeedCommander im Office 2007-Look

By Sven on 08.06.2006 - 19:00 in SpeedCommander 12 with 8 Kommentare

Codejock hat am letzten Wochenende das Xtreme ToolkitPro™ 2006 Vol. 2 veröffentlicht. Neben der Implementierung des neuen Ribbon-Interfaces ist auch die Möglichkeit gegeben, normale Anwendungen mit dem Office 2007-Look aufzupolieren. Ich habe es auf die Schnelle mal ausprobiert, schaut recht nett aus:

SpeedCommander im Office 2007-Look

Die endgültige Fassung wird es aber natürlich erst nach dem offiziellen Erscheinen von Office 2007 geben.

Schneller Dateimanager

By Sven on 07.06.2006 - 16:23 in Presse with 2 Kommentare

In der Digatrend-Beilage der Hamburger Morgenpost hat mein Nachbar gestern einen kleinen Artikel über den SpeedCommander entdeckt. Schön zu sehen, wie immer mehr regionale Zeitungen über SpeedCommander berichten.

Anzeige für SpeedCommander in com!

By Sven on 06.06.2006 - 17:25 in Presse with 8 Kommentare

In der aktuellen Ausgabe der com! ist eine ganzseitige Anzeige für SpeedCommander abgedruckt:

Anzeige com!

Hat Alexandra mal wieder gut hinbekommen. 🙂

Vista und das ShellTaskScheduler-Objekt (2)

By Sven on 01.06.2006 - 16:52 in Windows Vista with Keine Kommentare

Nach der Veröffentlichung des Windows-SDKs für Vista Beta 2 bin ich der Sache mit dem ShellTaskScheduler-Objekt noch einmal auf den Grund gegangen. Der Grund für das Problem beim Erstellen des Objekts liegt daran, dass Vista nur noch das IShellTaskScheduler-Interface unterstützt, aber nicht mehr das IShellTaskScheduler2-Interface. Der von mir verwendete intelligente Zeiger IShellTaskScheduler2Ptr braucht also nur zu IShellTaskSchedulerPtr degradiert werden, dann klappt alles wie erwartet. Durch den Wegfall des IShellTaskScheduler2-Interfaces muss man sich dann aber auf die Methoden von IShellTaskScheduler beschränken.

System failed, CPU test (2)

By Sven on 31.05.2006 - 16:31 in Fuhrpark with Keine Kommentare

Gutes Ende in der „System failed, CPU test“ Geschichte, heute kam das Mainboard von Alternate zurück. Läuft wieder wie gewohnt, weitere Kosten fielen auch nicht an. :^

Spezielle Einstellungen (2)

By Sven on 30.05.2006 - 11:12 in SpeedCommander 11 with 2 Kommentare

Uwe gab mir die Empfehlung, für die speziellen Einstellungen das Xtreme PropertyGrid von Codejock zu verwenden. Der Einbau verlief dank des verständlichen Quellcodes und der umfangreichen Beispiele problemlos. Durch eine kleine Erweiterung im Konstruktor von CXTPPropertyGridItem konnte ich noch Einstellungs- und Hilfetext in der Stringressource zusammenlegen, was die Übersicht im Dialogquelltext und in der Ressourcendatei erhöht.

Spezielle Einstellungen

Damit sieht der Dialog nun um Klassen besser aus und ist auch sehr viel bedienerfreundlicher geworden. Vielleicht bekommt ja Ramirez bei Gelegenheit auch noch seine gewünschte Sektion für AddIn-Programmierer.

Vista über NTDLR und BOOT.INI starten

By Sven on 29.05.2006 - 11:51 in Windows Vista

Auf meinem Vista-Rechner sind drei Systeme (Windows XP, Windows XP x64 und Vista) installiert. Jedes System befindet sich auf einer primären Partition, vor der Installation werden die beiden anderen primären Partitionen ausgeblendet. So ist sichergestellt, dass die Laufwerke in der erweiterten Partition unter jedem System gleich sind (D, E und F). Im normalen Betrieb sind dann wieder alle drei primären Partitionen sichtbar und sollten über das NTLDR-Bootmenü der ersten Partition (x64) gestartet werden.

Mit Vista hat sich Microsoft leider vom NTLDR-Konzept verabschiedet und benutzt stattdessen nun einen Boot Configuration Data Store. Dieser Speicher ist nicht mehr so ohne weiteres editierbar. Die Konfiguration lässt sich nur noch mit dem Kommandozeilenprogramm „bcdedit.exe“ bearbeiten, dessen Syntax ist aber nicht ganz so einfach zu verstehen.

Nach der Installation von Vista habe ich nun versucht, die beiden XP-Systeme in das Bootmenü mit aufzunehmen. Während der Installation waren sie versteckt, ansonsten hätte Vista ihnen automatisch die Laufwerksbuchstaben „D“ und „E“ zugeteilt. Die Laufwerke in der erweiterten Partition wären dann zu „F“, „G“ und „H“ geworden – ein nicht gewollter Zustand. Über Google sind zwar einige Tips zur Verwendung von bcdedit.exe zu finden, viel Erfolg hatte ich aber nicht.

Blieb also nur noch der Ansatz, über den NTLDR zu gehen. Ich erinnerte mich daran, dass man ja auch Linux über den NTLDR starten kann, wenn man den Bootsektor der Linuxpartition in eine Datei speichert und den Dateinamen dann in die Boot.ini einträgt. Mit Hilfe von Tiny Hexer habe ich den ersten Sektor der Vista-Partition als BOOTSECT.VIS gespeichert und in das Hauptverzeichnis kopiert, in dem sich auch NTDLR befindet. Nun musste ich nur noch die neue Option eintragen und beim nächsten Bootvorgang hatte ich dann die Wahl zwischen allen drei Systemen. Vista lief nach dem Start über die Bootsektor-Datei ganz normal hoch.

Die Boot.ini sieht nach der Anpassung dann so aus:

[boot loader]
timeout=3
default=C:\BOOTSECT.VIS
[operating systems]
C:\BOOTSECT.VIS="Windows Vista"
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows XP Professional" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP Professional x64 Edition" /noexecute=optin /fastdetect
Top