Vista: Wo ist bitte die Option „Unterstrichene Buchstaben für Tastatur Navigation ausblenden“ geblieben

Ich bin Tastatur Fan. Wenn ich es vermeiden kann benutze ich nicht die Maus. Aus diesem Grund möchte ich natürlich auch immer die Acceleratoren (unterstrichenen Buchstaben) in Menüs oder Dialogen sehen.
Leider ist seit Windows XP die Standardeinstellung so, dass man erst durch Drücken der ALT-Taste die Acceleratoren sichtbar macht.

Unter XP findet man das ganze unter

  • Systemsteuerung -> Darstellung und Design -> Anzeige -> Darstellung -> Effekte:
    Unterstrichene Buchstaben für Tastatur Navigation ausblenden (mit ALT-Taste einblenden)

Leider hat ist diese Option unter Windows Vista nicht mehr dort zu finden.
Dank Windows Vista Suche nach „Tastenkombination“ führte mich das direkt zu:

  • Systemsteuerung -> Erleichterte Bedienung -> Center für erleichterte Bedienung -> Bedienung der Tastatur erleichtern:
    Tastenkombinationen und Zugriffstasten unterstreichen

Vista: Standby und Hibernate Probleme

Standby und Hibernate können eine endlose Geschichte des Leidens sein. Das liegt an sich nicht an Vista, unter Windows XP hatte ich auch immer wieder Ärger.
Hier mal wieder zwei neue Erfahrungen:

Problem 1:
Ich fahre meinen Rechner meistens mit Hibernate am Tagesende herunter. Warum Ausschalten, wenn eben alles was man braucht beim neuen Einschalten sofort da ist. Nun wachte mein Rechner jedoch nachts um Mitternacht oder etwas später sofort wieder auf. Morgens lief der Rechner und schaltete auch (wegen Problem 2) nicht in den Standby.
Ursache 1:
Ich hatte Nero 9 installiert. Und Nero 9 hat einen Task in der der Aufgabenplanung mit dem Namen NeroLiveEpgUpdate eingetragen. Dieser veranlasste aus irgend einem Grund im Hibernate auch das Aufwachen des Rechners.
Einfach diesen Eintrag deaktiviert und endlich blieb der Rechner ausgeschaltet wie ich es wollte.

Problem 2:
Mein Rechner ging nicht mehr in den Standby. Er schaltete einfach den Bildschirm ab und das wars.
Ursache 2:
Hier war es die Windows Media Player Freigabe. In den Energieoptionen existieren extra Einträge unter Multimediaeinstellungen ob ein Standby auch bei existierenden Freigaben erlaubt ist.
Nachdem ich die Freigaben im Windows Media Player entfernt hatte – die ich sowieso nicht nutzte –  funktionierte auch wieder der Standby.

Vista: Ausrufezeichen vor Microsoft WPD-Dateisystem-Volumen-Treiber im Gerätemanager

Es hat ziemlich lange gedauert bis ich verstanden habe woher das Ausrufezeichen vor dem Microsoft WPD-Dateisystem-Volumen-Treiber im Gerätemanager kommt.

Ich musste einige Siemens Rechner mit Vista neu ausstatten und habe einen Master erstellt um die anderen Rechner nur clonen. Irgendwann bei meinen Vorbereitungen erschien dann ein Ausrufezeichen vor dem Microsoft WPD-Dateisystem-Volumen-Treiber.

 wpd-dateisystem-volumentreiber

Irgendwann nachdem ich den Chipset Treiber aktualisierte und einige andere Änderungen gemacht hatte, erschien diese Anzeige. Ich machte die Änderungen langsam wieder rückgängig und fand dadurch den Grund.

Die Ursache ist ganz simpel. Meine Rechner verfügen auch über einen internen Speicherkartenleser. Dafür werden auch Laufwerksbuchstaben in der Datenträgerverwaltung reserviert. Mich nervt das regelmäßig, da ich maximal nur ein Laufwerk mit dem SD-Kartenleser nutze. Also entferne ich die Laufwerksbuchstaben für die anderen Kartentypen.
Aber genau das mag anscheinend der Treiber nicht.

Ordnet man allen Datenträgern wieder einen Laufwerksbuchstaben zu, verschwindet auch wieder das Ausrufezeichen. Also kein Grund zur Sorge und kein defekt. Einfach nur unschön.

PS: Bei den Rechnern, bei denen ich das beobachtete handelte es sich fast immer um Geräte mit Intel Chipsatz. Ich weiß nicht ob dies mit damit zusammenhängt.

SETX der kleine Helfer für die wechselnden Environment Variablen des Entwicklers

In manchen Fällen kommt man um Environment Variablen nicht herum. Sie machen es auch einfach, globale Pfade für Linker, Präprozessor und auch für die Ausführung (PATH) zu setzen, oder eben auch EXEs und  DLLs zu steuern.

Solche Environment Variablen, bzw. INCLUDE und LIB Pfade zu setzen für das ganze System kann mühsam sein wenn man die Windows System UI nutzt. Der Aufruf ist umständlich und es erfolgt ein UAC-Prompt. Eine andere Variante wäre die Nutzung einer Reg-Datei. Dazu muss man aber wieder der UAC-Prompt über sich ergehen lassen.

Es geht viel einfacher, mit dem Helferlein SETX.EXE, das seit Vista nicht mehr nur im Windows Ressource Kit drin ist. Mit SETX kann man sich Ruckzuck ein kleines Batch-File schreiben, dass alle wichtigen Umgebungsvariablen für eine bestimmte Projektumgebung setzt.
Genial ist einfach, dass ab diesem Moment für jedes neu gestartete Programm diese Environment Variablen gelten. Natürlich inklusive der Visual Studio Umgebung.

In der Verbindung mit dem Aufruf von DEVENV /useenv kann man damit sehr schnell seinen Rechner auf eine komplett andere Projektumgebung einstellen. Und das ganze auch ohne UAC-Prompt 🙂 Ja! Man glaubt es kaum. Es erfolgt ja auch nur Zugriff auf HKCU.

Anmerkung:Ich benutzt sehr gerne den Property-Manager nur ist es eben nur eine Lösung für alle Software, die aus dem Visual-Studio heraus gestartet wird, und es nützt gar nichts, wenn man die EXE/DLL selber mit unterschiedlichen Umgebungen testen will.

Und SETX ist auch noch wirklich extrem flexibel. Man kann nicht nur einfach eine Environment Variable setzen, wie man es mit SET kennt. Als Quelle können hier sogar Tetxdateien, Registryschlüssel genutzt werden. Und das Multitalent SETX kann sogar bei Angabe von Computername, Nutzername und Kennwort remote benutzt werden und damit auch die Systemweiten Parameter verändern.

Hier die Beschreibung von SETX /?

SetX hat drei verschiedene Ausführungsmethoden:

Syntax 1:
    SETX [/S System [/U [Domäne\]Benutzer [/P [Kennwort]]]] var Wert [/M]

Syntax 2:
    SETX [/S System [/U [Domäne\]Benutzer [/P [Kennwort]]]] var /K
         Registrierungspfad [/M]

Syntax 3:
    SETX [/S System [/U [Domäne\]Benutzer [/P [Kennwort]]]]
         /F Datei {var {/A x,y | /R x,y Zeichenfolge}[/M] | /X}
         [/D Trennzeichen]

Beschreibung:
  Erstellt oder bearbeitet Umgebungsvariablen in der Benutzer- oder
  Systemumgebung. Ermöglicht das Festlegen von Variablen, die auf
  Argumenten, Registrierungsschlüsseln oder Dateieingabe basieren.

Parameterliste:
  /S    System             Remotesystem für die Verbindungsherstellung.

  /U    [Domäne\]Benutzer  Bestimmt den Benutzerkontext, unter dem
                           der Befehl ausgeführt wird.

  /P    [Kennwort]         Bestimmt das Kennwort für den
                           Auslassung fordert zur Kennworteingabe auf.

  Variable                 Bestimmt die zu setzende Umgebungsvariable.

  Wert                     Bestimmt einen zu setzenden Wert
                           für die Umgebungsvariablen.

  /K    Registrierungspfad Bestimmt, dass die Variable auf Informationen
                           aus einem Registrierungsschlüssel basiert.
                           Gültiges Pfadformat:
                           Struktur\Schlüssel\…\Wert, z. B.
                           HKEY_LOCAL_MACHINE\System\CurrentControlSet\
                           Control\TimeZoneInformation\StandardName.

  /F    Datei              Bestimmt den Dateinamen der zu verwendenden
                           Textdatei.

  /A    x,y                Bestimmt die absoluten Dateikoordinaten
                           (Zeile X, Element Y) als Parameter, nach denen
                           innerhalb der Datei gesucht werden soll.

  /R    x,y Zeichenfolge   Bestimmt die relativen Dateikoordinaten im
                           Verhältnis zur „Zeichenfolge“ als Suchparameter.

  /M                       Legt fest, dass die Variable in der
                           systemübergreifenden Umgebung
                           (HKEY_LOCAL_MACHINE) gesetzt werden. Der
                           Standardwert wird unter der Umgebung gesetzt
                           (HKEY_CURRENT_USER).

  /X                       Zeigt Dateiinhalte mit den x,y Koordinaten an.

  /D    Trennzeichen       Bestimmt zusätzliche Trennzeichen, wie z. B.
                           „,“ oder „\“. Standardtrennzeichen sind
                           Leerzeichen, Tabulator, Wagenrücklauf und
                           Zeilenvorschub. Beliebige ASCII-Zeichen können
                           als zusätzliche Trennzeichen verwendet
                           werden. Die max. Anzahl an Trennzeichen,
                           einschließlich Standardtrennzeichen beträgt 15.

  /?                       Zeigt diese Hilfe an.

HINWEIS: 1) SETX schreibt Variablen in die übergeordnete Umgebung
            in der Registrierung.

         2) Auf einem lokalen System sind Variablen, die mit
            diesem Programm erstellt oder bearbeitet wurden,
            erst in zukünftigen und nicht in aktuellen
            cmd.exe Befehlszeilenfenstern verfügbar.

         3) Auf einem Remotesystem sind Variablen, die mit
            diesem Programm erstellt oder bearbeitet wurden, erst
            bei der nächsten Anmeldesitzung verfügbar.

         4) Gültige Registrierungsschlüssel-Datentypen:
            REG_DWORD, REG_EXPAND_SZ, REG_SZ, REG_MULTI_SZ

         5) Unterstützte Registrierungsstrukturen: HKEY_LOCAL_MACHINE
            HKEY_CURRENT_USER (HKCU).

         6) Bei Trennzeichen wird zwischen Groß-/Kleinschreibung
            unterschieden.

         7) REG_DWORD-Werte werden aus der Registrierung
            im Dezimalformat extrahiert.

Beispiele:
    SETX MACHINE COMPAQ
    SETX MACHINE „COMPAQ COMPUTER“ /M
    SETX MYPATH „%PATH%“
    SETX MYPATH ~PATH~
    SETX /S System /U Benutzer /P Kennwort MACHINE COMPAQ
    SETX /S System /U Benutzer /P Kennwort ^%PATH^%
    SETX TZONE /K HKEY_LOCAL_MACHINE\System\CurrentControlSet\
         Control\TimeZoneInformation\StandardName
    SETX BUILD /K „HKEY_LOCAL_MACHINE\Software\Microsoft\Windows
         NT\CurrentVersion\CurrentBuildNumber“ /M
    SETX /S System /U Benutzer /P Kennwort TZONE /K HKEY_LOCAL_MACHINE\
         System\CurrentControlSet\Control\TimeZoneInformation\
         StandardName
    SETX /S System /U Benutzer /P Kennwort BUILD /K
         „HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\
         CurrentVersion\CurrentBuildNumber“ /M
    SETX /F ipconfig.out /X
    SETX IPADDR /F ipconfig.out /A 5,11
    SETX OCTET1 /F ipconfig.out /A 5,3 /D „#$*.“
    SETX IPGATEWAY /F ipconfig.out /R 0,7 Gateway
    SETX /S System /U Benutzer /P Kennwort /F c:\ipconfig.out /X

Text aus eine MessageBox einfach in die Zwischenablage kopieren…

Jeder kennt das, der schon mal an Supportfällen gearbeitet hat.

Der Kunde bekommt eine Fehlermeldung und meistens ist es eine simple MessageBox die dort angezeigt wird. Was wird gemacht? Der Kunde drückt Alt+Druck und schickt einen Screenshot.

Oder man will selber nach dem Text in Google suchen und tippt mühselig die Meldung ab.

Dabei geht es so einfach: Strg+C oder einfach Strg+Einfg drücken und schon wird der Text der Messagebox auf wundersameweise in die Zwischenablage kopiert:

---------------------------
Titel der MessageBox
---------------------------
Text der MessageBox
---------------------------
OK   Abbrechen  
---------------------------

Dies geht auf allen Windows Betriebssystemen!

Besonders interessant ist das auch der Windows Vista Task Dialog diese Funktionalität enthält, wie man z.B. mit dem Notepad unter Vista ausprobieren kann.

[Window Title]
Editor
[Main Instruction]
Möchten Sie die Änderungen an Unbenannt speichern?
[Speichern] [Nicht speichern] [Abbrechen]

Abgespecktes 4NT als TCC/LE von JP-Software als Freeware

Ich bin seit Jahren ein begeisterter Fan von 4NT (kennengelernt habe ich es noch als 4DOS unter DOS 4.0).
Was man so alles vermisst wenn man mal mit CMD.EXE arbeitet merke ich immer sofort, wenn ich ein DIR oder COPY ausführe und die komplexen Ranges, die 4NT bietet , sofort vermisse.
Ganz zu schweigen von netten Befehlen wie LIST, SELECT und anderem.

Auf den großen Bruder Take Command habe ich bisher immer verzichtet.
Ich verwende 4NT gerade auch da, wo ich komplexe Batchfiles für den gesamten Weg vom Build bis zum Setup benötige. All‘ das Kopieren von Dateien und Tools anwerfen, die dann irgendwann ein fertiges SETUP Paket erzeugen. Es ist einfach unschlagbar von den internen Funktionen, die hier geboten werden.

Jetzt hat mich JP-Software überrascht:

  1. Negativ: 4NT als Produkt alleine gibt es nicht mehr. Man kann den gesamten Funktionsumfang nur noch als Take Command erhalten.
  2. Positiv: Es gibt 4NT in etwas abgespeckter Form nun als TCC/LE (Take Command Console LE) kostenlos ❗

Soweit ich das sehe fehlt nur der Batch-Debugger und der Batch-Compiler, die ich sowieso kaum nutze, sonst sind alle meine gliebten Befehlszeilenfunktionen vorhanden.
In den internen Funktionen wird man evtl. die Datums- und Zeitfunktionen vermissen, die komplett herausgenommen wurden. Gleichfalls wie einige andere Funktionen.
Selbst mit den eingeschränkten Funktionen: TCC/LE ist ein Muss ❗

Download hier: http://www.jpsoft.com/tccledes.htm

Vista SP1 und so manche Ruhezustand/Hibernate Probleme

Irgendwie wunderte ich mich in letzter Zeit, dass mein Outlook 2007 beim Neustart meines PCs meinte, es wäre nicht korrekt beendet worden. Und irgendwann habe ich im Event Log dann den Folgenden Eintrag gefunden:

Das System wurde zuvor am 11.05.2008 um 19:26:46 unerwartet heruntergefahren.

Nach ein wenig Analyse kam ich dahinter, dass gemäß Energiesparplaneinstellungen mein Rechner irgendwann in in den Ruhezustand (Hibernate) geht. Allerdings beim Neueinschalten des Rechners nicht wieder den letzten Zustand wieder herstellt.
Die Startmeldung, dass das System nicht ordnungsgemäß herunter gefahren wurde. Diese Meldung habe ich irgendwie immer übersehen, da ich meistens meinen Rechner einschalte und wieder weg gehe und noch anders erledige bis er gebootet hat.

Um solche Probleme wird sehr viel Blödsinn im Netz geschrieben. Zu allerst stehen die Tipps mit einem BIOS Update, und alles mögliche andere Spielereinen mit POWERCFG und anderes. Für mein Problem trafen sie alle nicht zu. Ich hätte einfach damit leben können und mit POWERCFG -h OFF einfach den Ruhezustand ausschalten können. Aber irgendwie lassen mich solche Probleme nicht los und ich will sie lösen.
Einiges Suchen und viele, viele  erfolglose Versuche und Tests brachten mich schließlich zu dieser Lösung, die hier in diesem Thread beschrieben ist:
http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=2897541&SiteID=17

  1. Run CMD.EXE as administrator
  2. Run the following command: bcdedit -enum all
    Look for „Resume from Hibernate“ in the output from the command above(example below):
    Resume from Hibernate
    ———————
    identifier {3d8d3081-33ac-11dc-9a41-806e6f6e6963}
    device partition=C:
    path \Windows\system32\winresume.exe
    description Windows Vista (TM) Enterprise (recovered)
    inherit {resumeloadersettings}
    filedevice partition=C:
    filepath \hiberfil.sys
    pae Yes
    debugoptionenabled No
  3. Once you have found it, copy the value for identifier (in this example : {3d8d3081-33ac-11dc-9a41-806e6f6e6963})
  4. Run the following command:
    bcdedit /deletevalue {3d8d3081-33ac-11dc-9a41-806e6f6e6963} inherit
  5. Test hibernation.

OK! Das wäre behoben. Alles wieder heile.

Da ich aber jetzt schon etwas hin und her gespielt hatte mit POWERCFG -h ON|OFF etc. fragte ich mich nun, warum in meinem Startmenü, Energiesparen und alles mögliche andere angeboten wird, aber nicht Ruhezustand. Was habe ich nun kaputt repariert?

Komischer Weise lies der Rechner sich sofort in den Ruhezustand per Netzschalter-Tastendruck am PC versetzen, genauso wie eingestellt. Aber im Startmenü erscheint es nicht. Bei meinem Laptop geht es doch auch?

Einiges Lesen und Suchen in der Online-Hilfe brachte dann die Erklärung! Ja es ist wirklich beschrieben:
Nur wenn der Hybriden Standbymodus ausgeschaltet ist, erscheint auch der Ruhezustand im entsprechenden Startmenü.

Systemsteuerung -> System und Wartung -> Energieoptionen -> Energiesparplaneinstellungen bearbeiten -> Erweiterte Energieeinstellungen ändern -> Energiesparen -> Hybriden Standbymodus zulassen -> Einstellung: Aus

Jetzt ist wieder alles so, wie ich es will…

Tipps & Tricks:EXE Dateien in der Eingabeaufforderung/Batches überall zugänglich machen ohne die Verwendung von PATH

Ich verwende sehr oft eine Eingabeaufforderung/Console/CMD.EXE/4-NT Session (wie man es auch nennen mag), weil vieles für mich einfach so schneller geht.
Zudem verwende ich eine Reihe von netten Helferleins (Tools), die zum Teil auch in meinen Buildprozessen integriert sind. Dort wird manchmal auch etwas gemacht was über ein TF CHECKOUT hinausgeht, oder was eben sowieso durch VS in den Path eingetragen wurde.

In den meisten Fällen nutze ich die normalen Installationsroutinen für diese Tools. Das Problem ist dann aber, dass diese Tools sich über X-C:\Program Files\Verzeichnisse verteilen.
Jetzt bei jedem Tool zu wissen wo es installiert ist übersteigt meine Kapazitäten und meine Lust die Pfade einzugeben. Es genügt, wenn ich weiß dass ich die Powertools des TFS mit TFPT aufrufen möchte, oder 7z.
Nun jeden dieser Pfade in PATH einzutragen ist ja wirklich auch nicht der Schreier. Das ganze wegen einer EXE…

Es gibt einen einfachen Weg sich Tools so zu behandeln, dass man sie von überall aufrufen kann. Dieser Weg ist in der Shell verborgen und lautet:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\
Jeder, der schon mal ein Installationsprogramm geschrieben hat kennt diesen Eintrag.

Was man zu tun hat ist ganz simpel: Man erzeugt einfach über RegEdit.exe in diesem Ast einen neuen Schlüssel mit dem Namen der EXE, die man gerne überall benutzen möchte (z.B. 7Z.EXE oder TFPT.EXE). Auf der rechten Seite als Standardwert trägt man einfach den vollständigen Pfad ein, wo diese EXE zu finden ist (in meinem Beispiel also: C:\Program Files\7-Zip\7z.exe oder eben C:\Program Files\Microsoft Team Foundation Server 2008 Power Tools\TFPT.exe).
So einfach kann es manchmal sein 😉

BTW: Leider geht das ganze nicht mit
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\!
Es gibt zwar einige dämliche Programme, die hier Eintragungen machen, allerdings haben die keine Wirkung.

Wie bekommt man den Servernamen auf den Anmeldeschirm eines Windows Servers?

Ich habe in unserem Serverraum 4 Server herumstehen. Natürlich nur einen Bildschirm mit einer elektronischen Maus-, Tastatur- und Bildschirmumschaltung. Leider liegt das alles so, dass ich den Umschalter nie im Blick habe und so rätsele ich jedesmal, auf welchen der 4 Server meldest Du Dich eigentlich jetzt an (wenn es mal direkt sein muss und nicht über einen Remotedesktop). Oft genug erwische ich den falschen Server.

Wie bekommt man nun also am Besten den Anmeldenamen des Servers in den Logonscreen?

Die Gina haken, habe ich keine Lust… und irgendwas muss ja auch mit den Bordmitteln gehen.
Etwas googlen und die direkte Suche nach allen Registry Einträgen die es für WinLogon gibt, brachten die erwünschte Info:

Unter HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon wird einfach ein neuer Texteintrag mit dem Namen Welcome erzeugt. Dort nun den Servernamen eingetragen z.b. als * SVR-02 * und schon steht in der Überschrift des Anmeldebildschirmes die Info, die ich manchmal so sehr vermisst habe.

Löschen von Verzeichnissen über Laufwerke, die als Verzeichnis bereitgestellt wurden

Ich habe eine zweite SATA Festplatte in meinem Rechner (Windows XP SP2). Festplatten kann man ja auch direkt als neue Verzeichnisse bereitstellen. Schön, da eines meiner Verzeichnisse auf der ersten Festplatte am überquellen ist dachte ich mir:
Stelle einfach dies zweite Festplatte als neues Verzeichnis in meiner Verzeichnisstruktur zur Verfügung.

Gesagt getan und alles prima.

Bis ich heute auf die Idee kam ein wenig aufzuräumen:
Hier eine Datei gelöscht: OK. Dort eine Datei gelöscht: auch OK. Hier das Verzeichnis löschen: Peng „Zugriff wurde verweigert“! 😮
Was ist denn hier los ❓

Der Explorer hat mit meinem so eingemappten Laufwerk ein Problem. Er möchte die Dateien, die zu löschen sind, in den Papierkorb (Recycler Verzeichnis) verschieben. Das gelingt ihm offensichtlich mit Dateien (und die werden kopiert), allerdings gelingt ihm das nicht mit Verzeichnissen.

Direkt Löschen kann man diese Verzeichnisse indem man die Umschalt-Taste festhält m Explorer.
Das Löschen gelingt auch, wenn man die Festplatte über einen Laufwerksbuchstaben zusätzlich einmappt und dann über diese Verknüpfung die Verzeichnisse löscht.

Irgendwie nicht zu verstehen, dass hier der Explorer so kläglich versagt. 🙁
Aber auch dieses Verhalten ist dokumentiert, was ich nach einer Rückfrage bei meinen Mit-MVP Ralf Breuer auch erfuhr:
http://support.microsoft.com/kb/319368

Anmerkung: ❗ Eine Datei, die über das gemappte Verzeichnis C:\xyz gelöscht wird landet übrigens im Papierkorb auf der Platte C:, obwohl sie physikalisch auf einer anderen Platte liegt. Wirre Explorer Welt!