IT Berater – Java, J2EE, WebSphere Portal, Lotus Domino
RSS icon Home icon
  • [Solved] Windows 7 “Safely Remove Hardware” pop-up menu horrendously slow

    (4 votes) 1 Star2 Stars3 Stars4 Stars5 Stars
    Posted on 14 May 2012 Sebastian Thomschke*/?> No comments

    Since I upgraded to Windows 7 an annoying problem regarding USB device ejection bugged me for quite some time. At least for my system configuration I now seem to have found a working solution.

    The symptom: When you try to eject an USB device using the “Safely Remove Hardware and Eject Media” tray icon it takes ages until the popup menu appears where you can eventually select the device to eject from.

    The problem #1: When Windows tries to build the list of ejectable devices it also seems to scan all configured printers – unfortunately this does not only include local printers connected via USB but also network printers. Since I am working from different locations not all network printers are reachable all the time. But Windows still tries to determine the printers’ connection state and for offline printers this takes until a network time out occurs.
    The solution #1: The real solution for this would be if Microsoft would provide a patch that network printers are not taken in account when building the list of ejectable devices (which makes no sense anyway). As a workaround I disabled the “SNMP Status Enabled” option of the TCP/IP printer ports. You can do this as follows:

    1. Open the “Devices and Printers” control panel
    2. Click the “Printer server properties” button or via the menu File->Printer server properties
    3. Click the “Ports” tab
    4. For each port where the description says “Standard TCP/IP Port”, click “Configure Port…” and disable the option “SNMP Status Enabled”
    5. Voilá¡, the “Safely Remove Hardware” pop-up menu appears in a snap again!

    The only disadvantage of disabling SNMP status checking is that the printer control panel does not indicate the connection state of the network printers anymore. But for me this is the smaller issue.

    The problem #2: Unfortunately the described solution did not work on all of my machines (especially Lenovo ThinkPads).

    The solution #2: After a long search I eventually I came acros this post where it says:

    Windows 7 Lenovo preload
    It will take longer time to show a list for removal device candidates than previous OS, when clicking “Show hidden icons” from task tray then clicking “Safely Remove Hardware and Eject Media”.

    Cause of the issue:
    Windows 7 will start to scan some files in folders when click “Safely Remove Hardware and Eject Media”. Due to this scanning process, it takes times to prepare a list of devices.

    How to solve this problem:
    Eliminating number of unused files will shorten the scanning process.
    There are lots of files for national language support of the Windows in %programdata%\Microsoft\Windows\DeviceMetadataStore
    Usually in C:\ProgramData\Microsoft\Windows\MetadataStore. It carries various icon data and resource data for displaying in some managing process such as defining printers.

    There are “READ ONLY” folders like following:

    • cs-CZ for Czech
    • da-DK for Danish
    • de-DE for German
    • el-GR for Greek
    • en-US for English
    • es-ES for Spanish
    • fi-FI for Finnish
    • fr-FR for French
    • he-IL for Hebrew
    • hu-HU for Hungarian
    • it-IT for Italian
    • ja-JP for Japanese
    • ko-KR for Korean
    • nb-NO for Norwegian
    • nl-NL for Dutch
    • pl-PL for Polish
    • pt-BR for Portuguese (Brazil)
    • pt-PT for Portuguese (Portugal)
    • ru-RU for Russian
    • sl-SI for Slovenian
    • sv-SE for Swedish
    • tr-TR for Turkish
    • zh-CN for Chinese (Simplified, PRC)
    • zh-TW for Chinese (Traditional, Taiwan)

    Each folder carries 24 device metadata files except en-US carrying 26 files. Those file name will be “hexadecimal numbers”.devicemetadata-ms.

    Depends on your computing environment, there may be some language folders never used. Removing those folders and files will speed up scanning process remarkably.

    Note: en-US folder should not be removed. There are commonly used files in other language.

    Since those folders are read only, a following dialog will come up with attempting delete a folder. Click “Continue” button will delete a folder. If you need a administrator access to delete, please consult your system administrator.

  • [Behoben] Leere Seiten mit WordPress 2.6.x

    1 Star2 Stars3 Stars4 Stars5 Stars
    Posted on 13 September 2008 Sebastian Thomschke*/?> 2 comments

    Nach dem Upgrade auf WordPress 2.6 kam es immer wieder vor das im Browser leere Seiten angezeigt wurden. Eine Seitenaktualisierung mittels STRG+F5 behob in den meisten Fällen das Problem. Heute habe ich meinen Blog auf WordPress 2.6.2 aktualisiert und danach war es nicht mehr möglich die Verwaltungsseite für Plug-ins aufzurufen. Egal was ich probierte, die Seite blieb im Browser leer.
    Auf der Suche nach einer möglichen Lösung im Internet bin ich auf verschiedene Diskussionen über dieses scheinbar allgemein bekannte Phänomen gestossen. Leider half in meinem Fall keine der skizzierten Lösungsansätze.
    Daher habe ich mich einmal mehr in die Untiefen des WordPress Codes gestürzt und die – für meinen Fall – entscheidenden Programmzeilen lokalisieren können. Das Problem wird durch mehrere (object) Casts in der Datei strong>wp-includes/taxonomy.php verursacht, welche Arrays in Objekte transformieren:

    $wp_taxonomies['category'] = (object) array('name' => 'category', 'object_type' => 'post', 'hierarchical' => true, 'update_count_callback' => '_update_post_term_count');
    $wp_taxonomies['post_tag'] = (object) array('name' => 'post_tag', 'object_type' => 'post', 'hierarchical' => false, 'update_count_callback' => '_update_post_term_count');
    $wp_taxonomies['link_category'] = (object) array('name' => 'link_category', 'object_type' => 'link', 'hierarchical' => false);

    Da weder Fehlermeldungen im Browser noch in den Log Dateien erscheinen habe ich leider keine Idee wieso diese Casts zum Abbruch der Skriptausführung führen. Die installierte PHP Version entspricht der aktuellen stabilen 5.x Version und sollte daher eigentlich nicht die Ursache des Problems sein.
    Um das Problem zu umgehen habe ich eine Methode eingeführt die ebenfalls Arrays in Objekte transformieren kann, welche jedoch nicht auf der PHP Objekt Casting Funktion beruht.

    function arr2obj($arr) {
    	foreach ($arr as $k => $v) $obj -> {$k} = $v;
    	return $obj;
    $wp_taxonomies['category'] = arr2obj(array('name' => 'category', 'object_type' => 'post', 'hierarchical' => true, 'update_count_callback' => '_update_post_term_count'));
    $wp_taxonomies['post_tag'] = arr2obj(array('name' => 'post_tag', 'object_type' => 'post', 'hierarchical' => false, 'update_count_callback' => '_update_post_term_count'));
    $wp_taxonomies['link_category'] = arr2obj(array('name' => 'link_category', 'object_type' => 'link', 'hierarchical' => false));
  • Sun JDK5/6 compilers broken when linking overloaded methods with variable arguments

    (5 votes) 1 Star2 Stars3 Stars4 Stars5 Stars
    Posted on 16 May 2008 Sebastian Thomschke*/?> 1 comment

    We are currently switching the build system of OVal from custom Ant scripts to Maven 2. During that process we accidentally compiled the project using the Java compiler of the Sun JDK 5 instead of the AspectJ compiler. Surprisingly javac did not complain about the missing aspect class files. Instead it already aborted while compiling an ordinary Java class which only referenced other non-AspectJ related classes. This is the original error message:

    [INFO] [compiler:compile]
    [INFO] Compiling 180 source files to C:\projects\oval\src\trunk\target\classes
    [INFO] ------------------------------------------------------------------------
    [INFO] ------------------------------------------------------------------------
    [INFO] Compilation failure
    has private access in net.sf.oval.internal.ClassChecks 

    There exist multiple methods named addMethodParameterChecks in the class ClassChecks with different signatures. The problem is that javac tries to link against the wrong method when compiling the class calling one of the methods.

    Read the rest of this entry »

  • [Behoben] WordPress 2.5 One-Click Plug-in Upgrades – Could not create directory

    (6 votes) 1 Star2 Stars3 Stars4 Stars5 Stars
    Posted on 25 April 2008 Sebastian Thomschke*/?> 42 comments

    Vor einigen Tagen habe ich meine WordPress Installation auf das neue 2.5 Release aktualisiert. Aufgrund meiner Trägheit im Hinblick auf administrative Tätigkeiten wollte ich natürlich auch die neue on-click plug-in upgrade Funktion nutzen um ein paar Plug-ins zu aktualisieren. Allerdings scheiterten alle meine Versuche die Funktion zu nutzen mit der ziemlich nutzlosen Fehlermeldung “Could not create directory”. Daher begab ich mich auf die übliche Netzsuche und bin relativ schnell auf einige Beiträge gestossen, welche die Ursache in unzureichenden Berechtigungen auf bestimmte Verzeichnisse ausmachten. Das manuelle Anlegen des Verzeichnisses /wp-content/upgrade und das “chmodden” auf 777 des selben sowie der Plug-in Verzeichnisse würden das Problem lösen. Leider nicht bei mir. Daher blieb mir nichts weiter übrig als die Ärmel hochzukrempeln und WordPress zu debuggen…

    Lange Rede, kurzer Sinn, ich bin schließlich auf den PHP Bug Report #42739 mkdir doesn’t like a trailing slash when safe_mode is enabled gestossen und es zeigte sich, daß dies genau das Problem war, welches sich mir auf meinem Hosting Account entgegenstellte. Die PHP Option safe_mode war dort aktiviert und WordPress versucht vergeblich mit Schrägstrich endende Verzeichnissepfade anzulegen (z.B. /htdocs/wp-content/upgrade/the-plugin/).

    Nachdem mir der Grund also bekannt war, konnte ich einen Workaround entwickeln und endlich den one-click plug-in updater nutzen. Für alle die das gleiche Problem haben, hier meine Lösung:

    1. Die Datei <wp_root>/wp_admin/includes/class-wp-filesystem-direct.php lokalisieren und in einem Editor öffnen
    2. Nach “function mkdir” in der Datei suchen
    3. Die nachfolgenden Codezeilen in die Methode einfügen. 
      function mkdir($path,$chmod=false,$chown=false,$chgrp=false){
      	if( ! $chmod)
      		$chmod = $this->permission;
      	// workaround for starts here
      	if(ini_get('safe_mode') && substr($path, -1) == '/')
      		$path = substr($path, 0, -1);
      	// workaround for ends here
      	if( !@mkdir($path,$chmod) )
      		return false;
      	if( $chown )
      	if( $chgrp )
      	return true;
    4. Mit der Ein-Klick-Aktualisierung beginnen!


    1. Die Änderung funktioniert auch mit WordPress 2.5.1
    2. Falls diese Änderung nicht zum gewünschten Erfolg führt, kann der Fehler noch eine zweite Ursache haben. Daher sollten die Berechtigungen des Verzeichnis /wp-content/upgrade/ und dessen Unterverzeichnisse überprüft und gegebenenfalls per chmod auf 777 gesetzt werden. Falls das upgrade Verzeichnis gar nicht existieren sollte, reicht es vielleicht schon dieses einfach manuell anzulegen.

    Nachtrag 2:

    1. Falls sich das Problem weiter besteht sollte geprüft werden ob das Plug-in AskApache Password Protect installiert ist.
    2. Wenn ja, kann es helfen, dieses vor dem Aktualisieren anderer Plug-ins zu deaktivieren.

  • MyPad v1.1.6 – ein PHP Editor

    (2 votes) 1 Star2 Stars3 Stars4 Stars5 Stars
    Posted on 26 July 2004 Sebastian Thomschke*/?> 3 comments

    MyPad ist ein kompakter PHP Editor. Ich habe diesen Editor entwickelt, weil ich keinen passenden mit einem Single Documend Interface finden konnte.
    Der Editor, nach dem ich gesucht habe, sollte dem Notepad äneln, aber auch in der Lage sein, PHP Quellcode farblich hervorzuheben.
    Ein solcher Editor kann dann ideal im Zusammenhang mit einem Dateimanager ähnlich dem Norton Commander verwendet werden.

    Read the rest of this entry »