, schön und gut. Aber über folgende Fehler könnte man stolpern.
Die Registry dient häufig als Ablage für Programmeinstellungen, auch für laufende Dienste. Möchte man nun scriptgesteuert die Einstellungen des Dienstes ändern kann es zu folgendem Fehler kommen: „Der Prozess kann auf die Datei nicht zugreifen, da diese von einem anderen Prozess verwendet wird„. Was dagegen tun? Den Dienst vor dem Reg Import beenden.
@echo off net stop tvnserver reg import \\server\pfad\new-config.reg net start tvnserver
Sollte dabei der Fehler „Fehler beim Zugriff auf die Registrierung.“ auftreten fehlen für den Import vermutlich die Rechte, also als Administrator starten.
Sollte
reg import
den Fehler „Fehler beim öffnen der Datei. Es ist möglicherweise ein Datenträger- bzw. Dateisystemfehler aufgetreten.“ ausspucken, enthält der Pfad zu eurer .reg Datei wahrscheinlich ein Leerzeichen. Setzt die Pfadangabe in Anführungszeichen oder benennt den Leerzeichen-Ordner um.
Beide Probleme werden mit der Chrome Dev Version 9.0.597.16 vom 10.12.2010 behoben.
So, vielleicht kennt das Problem ja jemand oder ein Google Suchender hat ne Lösung:
1. Problem: WordPress Uploader -> Bild auswählen -> Upload abwarten. Normalerweise klappen jetzt die Einstellungen für das Foto aus, seit einigen Tagen nicht mehr. Das Bild landet in der Galerie und kann von dort normal bearbeitet und eingebunden werden. Aber nicht mehr direkt nach dem Upload. Der altmodische Browseruploader funktioniert wunderbar.
Lösung unten: Nicht nur das, auch Chrome zickt sowohl auf Arbeit als auch zu Hause rum, wenn der Browser-Explorer bei Uploads aufgerufen wird. Zumindest manchmal. Heute habe ich das Problem nicht, gestern hatte ich es und hab auch mal ein Screen gemacht. Das Desktop-Symbol links ist weg und wenn man den Desktop auswählen will, bekommt man diese Fehlermeldung. Was seltsam ist: der Browser hat dann sehr seltsame Zugriffsprobleme. Ich bin nach C:/Benutzer gegangen und kam mit dem Filebrowser in gar kein Benutzerprofil rein. Weder mein eigenes noch irgendein anderes. Heute ist wieder alles schick.
Ratlos… nunja, die kleinen Probleme des Lebens 😉
Lösung für das Chrome Filebrowser Problem
Ich weiß nicht genau woran es liegt aber hier mein Lösungsweg: Tools -> Erweiterungen -> Alle Erweiterungen aktualisieren dann alle Erweiterungen deaktivieren, Chrome neustarten, eure benutzten Erweiterungen wieder aktivieren, Chrome neustarten. Bei mir hat Chrome damit zum Normalverhalten zurückgefunden.
Ziel ist es, mit einem unbeaufsichtigten Script (also ohne Benutzereingaben etc) alle installierten Netzwerkdrucker (lokal installiert, nicht vom Druckerserver), von denen die IPs bekannt sind, zu löschen. Dieser Vorgang soll unabhängig vom vergebenen Druckernamen auf jedem beliebigen PC funktionieren.
Szenario
Wir haben zum Beispiel 14 verschiedenen Drucker installiert. Nun wollen wir 8 von denen deinstallieren und danach neu installieren. Von den 8 Druckern ist der Name nicht bekannt, da diese bei der Installation beliebig benannt wurden. Da dieser Vorgang auf dutzenden oder hunderten PCs funktionieren soll, ist der Name ein schlechter Anlaufpunkt. Stattdessen wissen wir aber die IP jedes Druckers, der deinstalliert werden soll. Lokale Drucker wie PDF Drucker oder Microsoft-interne Drucker sollen unberührt bleiben.
Wie löschen wir am besten Drucker scriptbasiert? Mit printui.dll via CMD. Zum Löschen nutzen wir den Befehl:
rundll32 printui.dll,PrintUIEntry /dl /n "Name des Druckers"
Wie gesagt kennen wir die Druckernamen nicht. Aufgabe ist also, den Namen der gewünschten Drucker zu bekommen und mit diesem dann den Löschbefehl zu starten.
Set WshShell = CreateObject("Wscript.Shell")
Set WshNetwork = CreateObject("WScript.Network")
Set objPrinters = WshNetwork.EnumPrinterConnections
For i = 0 to objPrinters.Count - 1 Step 2
WScript.Echo "Port: " & objPrinters.Item(i) & " | Name: " & objPrinters.Item(i+1)
Next
Probiert es mal aus, beim Ausführen der .vbs werden alle installierten Drucker nacheinander mit Port und Name angezeigt. objPrinters.Item ist also unser Freund. Die einzelnen Codezeilen erkläre ich nachher im Gesamtbild.
Wir können also die Druckernamen herausfinden und für den printui.dll Löschbefehl weiterverwenden. Nun wollen wir aber nicht alle installierten Drucker löschen sondern nur die gewünschten Drucker, dessen IPs wir nennen. Zudem sollen Systemdrucker (Microsoft-interne, PDF Drucker etc) erhalten bleiben, genauso wie durch Druckserver hinzugefügte Drucker.
Also schauen wir uns das Konstrukt mal an:
delete-printers.vbs:
Set WshShell = CreateObject("Wscript.Shell")
printer = Array("111.40.162.60", "111.40.162.90", "111.40.162.100", "111.40.162.105", "111.40.162.120", "111.40.162.129", "111.40.162.140")
Set WshNetwork = CreateObject("WScript.Network")
Set objPrinters = WshNetwork.EnumPrinterConnections
For i = 0 to objPrinters.Count - 1 Step 2
If Left(objPrinters.Item(i+1),2) <> "\\" Then
For Each item In printer
If Len(item) >= 2 Then
If InStr(objPrinters.Item(i), item) > 0 Then
WshShell.Run "cmd /c rundll32 printui.dll,PrintUIEntry /dl /n " & Chr(34) & objPrinters.Item(i+1) & Chr(34)
End If
End If
Next
End If
Next
Nun im Detail: Zeile 2 enthält, mit Kommata getrennt, die IPs aller Drucker, die gelöscht werden sollen. Zeile 4 speichert in der Variable objPrinters alle Druckerobjekte. Zeile 5 startet die Schleife, die so oft durchläuft, wie es Druckerobjekte (objPrinters.Count – 1) gibt. Die Schleife in 2er Schritten (Step 2) durchzugehen muss sein. Denn: Nachdem EnumPrinterConnections in objPrinters geschrieben hat, sieht objPrinters etwa so aus, um es mal bildlich zu haben und die folgenden Codezeilen einfacher zu verstehen:
Step 2
i=
Abfrage
Typ
Wert
0x
0
objPrinters.Item(i)
Portname
[IP_111.40.162.60]
0x
1
objPrinters.Item(i+1)
Druckername .60
[Drucker-1]
1x
2
objPrinters.Item(i)
Portname
[IP_111.40.162.90_2]
1x
3
objPrinters.Item(i+1)
Druckername .90
[Kopierer_EG]
2x
4
objPrinters.Item(i)
Portname
[111.40.162.105_1]
2x
5
objPrinters.Item(i+1)
Druckername .105
[EG – Netzdrucker]
… usw. Wir überprüfen den Portnamen, der die IP enthält, aber durch „IP_“ am Anfang oder „_X“ am Ende doch stark variieren kann. Dazu später mehr. Ab Zeile 6 Nun wird für jeden Port durchgegangen (da jeder 2. Step den Druckernamen überspringt und zum nächsten Port springt): Zeile 6 prüft mit Left(XXXXXX,2) die ersten 2 Stellen des Druckernamens. Sind diese nicht „\\“ so handelt es sich nicht um einen Druckerserver-Drucker und die Schleife wird fortgeführt. Zeile 7 startet eine Schleife, die jeden Eintrag des Arrays printer durchgeht. In diesem Array stehen alle Drucker-IPs, die wir löschen wollen. Zeile 8 prüft, ob der Eintrag des Arrays, der überprüft wird, 2 oder mehr Zeichen lang ist. Ehrlich gesagt, keine Ahnung warum ich damals diese Abfrage eingebaut habe…. 😀 wenn ich drauf kommt packe ich es als edit dazu. Mit Kommentaren wäre das nicht passiert, ich weiß. Zeile 9 vergleicht den Druckerport (objPrinters.Item(i)) und die eingelesene IP, also: „IP_111.40.162.90_2 <> 111.40.162.90″ und prüft, ob der eingelesene Arraywert im Portnamen vorkommt. Ist der Rückgabewert > 0, so wurde der String 2 (IP aus dem Array) in String 1 (Portname) gefunden. Ist wie Regular Expressions, nur simpler. Wer gut regexen kann, hier könnte es Sinn machen. Zeile 10 ist nun der Löschbefehl. objPrinters.Item(i+1) steht hier also für einen Druckernamen, der weder Druckserverdrucker noch lokaler Drucker noch ungewollter Drucker ist. Da wir den Löschbefehl
printui.dll,PrintUIEntry /dl /n "Name"
über
WshShell.Run "Befehl"
laufen lassen müssen, dessen Befehl in Anführungszeichen stehen muss, kriegen wir ein kleines Problem. So würde es nämlich aussehen:
Der schlaue Leser weiß längst, dass hier der vbs Befehl nach dem /n als beendet angesehen wird und das Script damit fehlschlägt. Um den Namen des Druckers für printui.dll in Anführungszeichen zu kriegen, nutzen wir das Chr(34), das in ein “ umgewandelt wird. Der vbs Befehl läuft damit weiter und dem CMD Befehl wird ein “ vorgegeben.
Fertsch, Drucker wird gelöscht.
Voraussetzung für das Löschen ist natürlich das Recht dazu, Adminrechte also. CPAU kann helfen, doch wie immer Vorsicht, CPAU ist nicht sicher. Dank Kenny… 😛
Das Programm ist funktionsfähig, getestet und im Produktiveinsatz. Bei Fragen, Wünschen, Verbesserungen oder Kritik etc, Kommentarfeld ist unten oder per Mail/Kontakt.
delete-printer.vbs mit Parametern
Danke an Kenny für die Parameter Idee, macht das Script viel flexibler als zuvor!
Set WshShell = CreateObject("Wscript.Shell")
Set WshNetwork = CreateObject("WScript.Network")
Set objPrinters = WshNetwork.EnumPrinterConnections
If WScript.Arguments.Count = 0 Then
WScript.Echo "Usage: delete-printer.vbs "&Chr(34)&"Portname1"&Chr(34)&" "&Chr(34)&"Portname2"&Chr(34)&" ..."
Else
Dim first
first = WScript.Arguments(0)
Select Case first
Case "help" WScript.Echo "Usage: delete-printer.vbs "&Chr(34)&"Portname1"&Chr(34)&" "&Chr(34)&"Portname2"&Chr(34)&" ..."
Case "/?" WScript.Echo "Usage: delete-printer.vbs "&Chr(34)&"Portname1"&Chr(34)&" "&Chr(34)&"Portname2"&Chr(34)&" ..."
Case "-?" WScript.Echo "Usage: delete-printer.vbs "&Chr(34)&"Portname1"&Chr(34)&" "&Chr(34)&"Portname2"&Chr(34)&" ..."
Case "?" WScript.Echo "Usage: delete-printer.vbs "&Chr(34)&"Portname1"&Chr(34)&" "&Chr(34)&"Portname2"&Chr(34)&" ..."
Case Else
End Select
End If
For i = 0 to objPrinters.Count - 1 Step 2
If Left(objPrinters.Item(i+1),2) <> "\\" Then
For Each item In WScript.Arguments
If Len(item) >= 2 Then
If InStr(objPrinters.Item(i), item) > 0 Then
WshShell.Run "cmd /c rundll32 printui.dll,PrintUIEntry /dl /n " & Chr(34) & objPrinters.Item(i+1) & Chr(34)
End If
End If
Next
End If
Next
Okay, was hat sich geändert? Das Array ist weg und wird durch Parameter ersetzt. Diese werden beim Aufruf einfach hinten angehängt. Mehrere Parameter werden mit Leerzeichen getrennt angegeben. Ein Parameter mit Leerzeichen drin wird einfach in Anführungzeichen angegeben. Das lässt sich also beliebig kombinieren. Wird kein Parameter angegeben (Doppelklick z.B.) bzw. ist der erste Parameter „help“ o.Ä. so wird eine Usage Hilfe angezeigt.
Dieser Beitrag wurde von Martin Breuer geschrieben, vielen Dank dafür! Martin ist Autor von droidnova.com, ein auf Android Themen spezialisiertes Blog. Zusätzlich leitet und programmiert er das Projekt „Saint Feint City“ (Facebook), ein opensource, SimCity-ähnliches Android Spiel. Entwickler gesucht, übrigens! 😀
Der König ist tot … *Hektik; wer als Erster auf dem Thron sitzt!* … lang lebe der König!
Das Ableben von ICQ
Mit diesem Spruch wurde früher eine Ablösung des Königs durch einen neuen lautstark gefeiert. Dieser Wechsel war meist eher brutaler Natur, anders als bei ICQ momentan. ICQ schafft es erfolgreich seit Jahren die eigenen Nutzer mehr und mehr zu verschrecken. Sei es, dass die Werbung im ICQ Client mit jeder Version aggressiver und damit nerviger wird, oder das selbst im Jahr 2010 der offizielle ICQ Client nur für Windows existiert. Wie klein die Welt von ICQ geworden ist, sieht man in einer der letzten Statistiken zu diesem Thema. Sie ist leider von 2008, aber dennoch aussagekräftig genung:
Doch den Todesstoß haben sich die Russen von ICQ (vorher AOL, davor eine israelische Firma) nun selbst gegeben. Sie verlangen nun Lizenzgebühren von Multimessenger-Clients. Also Clients wie Trillian, Miranda, Pidgin, Adium die auch Verbindungen in das ICQ Netz anbieten. Das besonders freche daran ist, dass es keine Lizenzgebühr für die generelle Anbindung ist, sondern eine Lizenzgebühr pro User, der ins ICQ Netz will. Unbezahlbar für die meisten Multimessenger Clients.
Die Revolution – Jabber, XMPP basiert
Eine Alternative dazu ist die Verwendung von Jabber, welches das weit verbreitete XMPP Protokoll benutzt. Es sprechen noch weitere Vorteile für dieses aufstrebende Protokoll. Eine relativ gute und kurzgefasste Übersicht gibt es hier auf jabber-server.de, u.A. Vorteile von XMPP, Vergleich von Jabber mit anderen Chatdiensten und die fiesen Stellen in den AGBs von ICQ, MSN und AIM.
Anhand des Multimessengers Pidgin wollen wir jetzt testen, wie einfach es ist, einen Jabber Account zu erstellen und zu nutzen. Pidgin bietet, wie die meisten anderen auch, die Möglichkeit, sich direkt vom Client aus einen Account bei einem Jabberanbieter seiner Wahl zu erstellen. Ein Anbieter, dem man bezüglich Datensicherheit sicher am meisten trauen dürfte ist der Jabber Server vom Chaos Computer Club: jabber.ccc.de Es gibt jedoch auch viele andere Jabber Server, bei denen ihr euch registrieren könnt. Ein Vorteil vom Open Source XMPP ist schließlich, dass jeder seinen eigenen Server hosten kann. ejabberd, openfire und Spark sind die bekanntesten Lösungen dafür. Keine Gedanken müsst ihr euch machen, wenn ihr einen der größeren Dienste wie Google Talk, Nimbuzz oder Live Journal Talk nutzt. Denn diese erstellen für euch automatisch einen Jabber Account.
Schritt für Schritt zum eigenen Jabber Account
Schauen wir uns an wie einfach es ist, einen Jabber Account zu erstellen: Wir gehen auf den Menüpunkt Konten -> Konten verwalten und sehen dort eine Auflistung aller bisher vorhandenen Konten.
Von dort gelangen wir mit einem Klick auf „Hinzufügen“ zum nächsten Formular, in dem wir XMPP als Protokoll auswählen, den Jabber Server vom CCC eintragen und unseren Wunschnamen und Passwort. Den Haken für die Erstellung des Accounts auf dem Server muss natürlich auch aktiviert werden. Das sollte dann etwa so aussehen.
Danach kommt die Sicherheitsabfrage, die meist schon vorausgefüllt ist. Ich tippe dort gerne nochmal mein Passwort per Hand ein, damit ich sicher bin, mich nicht vertippt zu haben.
Nun sollte die Bestätigung zu sehen sein, dass ihr euch angemeldet habt.
Jetzt zum kleinen Test, dass das ganze funktioniert hat: Ich kontaktiere mich aus dem GTalk Netz selbst. Das geht ohne weiteres, da GTalk selbst auch auf dem XMPP Protokoll aufbaut und trotz Erweiterungen von Google zu den anderen Jabber Netzen kompatibel ist.
Ich füge also meinem GTalk Account meinen anderen Jabber Account als Kontakt hinzu.
Mein Pidgin zeigt mir postwendend die Kontaktanfrage, die ich einfach bestätige.
Danach kann ich mit mir selbst chatten:
Für alle Google Mail Nutzer, die es bisher nicht wussten: Ihr habt auch gleich einen GTalk Account und braucht euch daher keinen eigenen neuen Jabber Account anlegen. Ihr braucht euch mit eurem Client nur ein Konto für GTalk mit euren Kontodaten einrichten. Pidgin meldet euch dann auch, wenn ihr neue Emails bekommt, falls ihr das wollt.
Wichtige (erste) Schritte mit Jabber und Multimessengern sind auch hier im Computerbild Forum (ich weiß, Facepalm) nochmal erklärt.
Die Windows CMD bietet eine brauchbare Druckerverwaltung in der Kommandozeile an. Dank der printui.dll, die ihr mit der rundll32.exe ansprecht und die alle nötigen Werkzeuge enthält, könnt ihr Drucker hinzufügen, verwaltungen, löschen und mehr. Dadurch lassen sich bestimmte Jobs wunderbar in Scripte packen. Code Grundgerüst: rundll32.exe printui.dll,PrintUIEntry /Parameter Groß- und Kleinschreibung bei PrintUIEntry beachten, case sensitive.
Nun schauen wir auf die Möglichkeiten von printui.dll.
/a
[Datei] Name der Binärdatei
/b
[Name] Basisdruckername
/c
[Name] UNC-Computername, wenn der Vorgang auf einem Remotecomputer ausgeführt wird.
Installiert Druckertreiber mithilfe einer INF-Datei.
/id
Installiert Druckertreiber mithilfe des Assistenten.
/if
Installiert Drucker mithilfe der angegebenen INF-Datei.
/ii
Installiert Drucker mithilfe des Assistenten und einer INF-Datei.
/il
Installiert Drucker mithilfe des Assistenten.
/in
Fügt eine Netzwerkdruckerverbindung hinzu.
/j
[Anbieter] Druckanbietername
/k
Druckt eine Testseite auf dem angegebenen Drucker aus. Kann bei der Druckerinstallation nicht verwendet werden.
/l
[Pfad] Quellpfad des Druckertreibers
/m
[Modell] Modellname des Druckertreibers
/n
[Name] Druckername
/o
Zeigt die Druckerwarteschlange an.
/p
Zeigt Druckereigenschaften an.
/q
Stiller Modus. Fehlermeldungen werden nicht angezeigt.
/r
[Anschluss] Anschlussname (Hier auch die Möglichkeit Lokale Schnittstellen, anstelle des UNC Pfades anzugeben)
/s
Zeigt Servereigenschaften an.
/Ss
Speichert Druckereinstellungen in einer Datei.
/Sr
Stellt Druckereinstellungen aus einer Datei wieder her. Speichert Optionsattribute für Druckereinstellungen oder stellt diese wieder her. Die Attribute müssen am Ende des Befehls stehen: 2 PRINTER_INFO_2 7 PRINTER_INFO_7 c Farbprofil d Druckerdaten s Sicherheitsbeschreibung g Globaler DevMode m Minimale Einstellungen u Benutzer-DevMode r Namenskonflikte lösen f Namen erzwingen p Anschluss zuordnen
/u
Verwendet den vorhandenen Druckertreiber, sofern bereits einer installiert ist
/t
[#] Nullbasierte Indexseite zum Starten
/v
[Version] Eine der folgenden Treiberversionen: Windows 95 oder 98 | Windows NT 3.1 | Windows NT 3.5 oder 3.51 | Windows NT 3.51 | Windows NT 4.0 | Windows NT 4.0 oder 2000 | Windows 2000
/w
Fordert einen Treiber an, wenn der angegebene Treiber nicht in der INF-Datei gefunden wird.
/y
Richtet den Drucker als Standarddrucker ein.
/Xg
Liest Druckereinstellungen.
/Xs
Richtet Druckereinstellungen ein.
/z
Gibt diesen Drucker nicht automatisch frei.
/Z
Gibt diesen Drucker frei. Verwendung nur mit der Option /if möglich.
Die volle Hilfe, printui.dll /? ist etwas länger, hat viele Beispiele und wen es interessiert: hier als Download.
Beispielszenario: Man muss allen Mitarbeitern eines Betriebes bestimmte Drucker eines Druckerservers bereitstellen. Das geht zwar auch über Gruppenrichtlinien aber oftmals hat dieser Weg entscheidende Nachteile, wo sich Scripte besser eignen.
Auf dem Server ist ein Druckserver eingerichtet, der Drucker mit allen Treibern (für das Serversystem und alle Clientsysteme (XP+7 32bit+64bit)) installiert und freigegeben.
Druckerinstallation per Netzwerk: rundll32.exe printui.dll,PrintUIEntry /in /n „\\server\Canon iR400 EG“ /in steht für „install network printer“, /n gibt den Freigabenamen des Druckers (natürlich mit Verbindung des Servernamens) an.
Sollen mehrere Drucker eingerichtet werden empfielt es sich, das Konstrukt etwas auszubauen. Zum Beispiel kann man in dem Script abhängig von der Etage des Mitarbeiters auch gleich den richtigen Standarddrucker setzen lassen (Parameter /y).
Hier mein Scriptbeispiel:
@echo off
cls
echo Wo befindet sich Ihr Büro?
echo --------------------------
echo 1 - Erdgeschoss
echo 2 - 1. Obergeschoss
echo 3 - Dachetage
set /p etage=Eingabe (1/2/3):
if %etage%==1 set drucker=KopiererEG
if %etage%==2 set drucker=Kopierer1.OG
if %etage%==3 set drucker=Kopierer2.OG
echo.
echo %drucker% wird als Standarddrucker eingerichtet.
echo.
:drucker1
echo Installiere Kopierer EG
if "%etage%"=="1" goto drucker1std
rundll32 printui.dll,PrintUIEntry /in /n "\\iqbserver\Kopierer EG" >> nul
echo Installation abgeschlossen
echo.
goto drucker2
:drucker1std
echo Definiere als Standarddrucker
rundll32 printui.dll,PrintUIEntry /in /n "\\server\Kopierer EG" /y >> nul
echo Installation erfolgreich
echo.
goto drucker2
:drucker2
echo Installiere Kopierer 1.OG
if "%etage%"=="2" goto drucker2std
rundll32 printui.dll,PrintUIEntry /in /n "\\server\Kopierer 1.OG" >> nul
echo Installation erfolgreich
echo.
goto drucker3
:drucker2std
echo Definiere als Standarddrucker
rundll32 printui.dll,PrintUIEntry /in /n "\\server\Kopierer 1.OG" /y >> nul
echo Installation erfolgreich
echo.
goto drucker3
REM :drucker3
REM ... und so weiter
Das lässt sich mit beliebig vielen Druckern durchführen, die alle nacheinander auf dem Computer des Mitarbeiters eingerichtet werden. Verbunden mit errorlevel kann man noch cleverer als ich hier reagieren, z.B. den Befehl mit erhöhten Rechten erneut probieren o.Ä. (CPAU Warnung, Nutzung auf eigene Gefahr)
Weitergabe oder Verwendung des Textes nur mit voller Quellen- und Autorangabe! Ich bitte euch, seid fair.
Folgendes Phänomen: Die Fehlermeldung „Element wurde nicht gefunden“ wird bei jeder Ordneraktion (Erstellen, Löschen, Verschieben, Umbenennen) angezeigt. Der Ordner existiert natürlich. Nach einem Klick auf „Wiederholen“ wird die Aktion fehlerfrei durchgeführt.
Dieses Problem bekam ich vor kurzer Zeit an meinem privaten PC. 1, 2 Wochen später das Selbe auf Arbeit. Zeit eine Lösung zu finden. Und die fand ich im Antary Blog von Tobias (btw: Lesetipp). Er hatte das Problem ebenfalls und hat eine Lösung im Netz gefunden, einen Registry Fix:
Schritt 1: Registry Fix (KB980408_fix.reg) herunterladen und per Doppelklick anwenden
Registry Key anwenden, PC neustarten und das Problem ist behoben.
Sollte das doch noch nicht reichen gäbe es hier noch eine Lösung, die aber nicht mehr so richtig zu funktionieren scheint: Wer Windows Updates automatisch bezieht kann meistens Schritt 1 überspringen, da das Update auf aktuellen Windows 7 PCs schon installiert ist. Wer auf Nummer Sicher gehen möchte, Schritt 2: Update KB 980408 installieren (x86, x64)
Über den Ursprung kann man nur Rätseln. Tobias vermutet, dass der nur Fehler auftritt, wenn man Bibliotheken Explorer Tweaks angewendet hat. Z.B. die Bibliotheken aus dem Dateibrowser entfernen, nicht anzeigen lassen o.Ä. Da ich diese Tweaks sowohl zu Hause als auch auf Arbeit durchgeführt habe, könnte da was dran sein.
Seit Windows Vista, also auch in Windows 7, gibt es einen neuen Dienst, der sich um die verbesserte Problembehandlung kümmert, das „Windows Error Reporting“ (WER). Das Feature ist (zumindest im Privatgebrauch) nur selten brauchbar und ein großer Nachteil ist, dass es viel Speicherplatz auf dem Systemlaufwerk frisst. Etliche Reportdateien gewährleisten die Funktion des Dienstes, diese jedoch können nach einigen Monaten Laufzeit schonmal ein bis zwei Gigabyte in Anspruch nehmen.
Die meisten Datenberge liegen in diesem Ordner:
C:\ProgramData\Microsoft\Windows\WER\ReportQueue\
. ProgramData ist ein Systemordner, diese müsst ihr ggf. in den Ansichtseinstellungen eures Dateibrowsers einblenden. Oder ihr kopiert den Pfad direkt von mir in die Adressleiste. Wie groß ist er bei euch?
Fasst der Ordner nur wenige KB oder MB so habt ihr entweder den Problembehandlungsdienst deaktiviert oder reinigt öfter mal mit CCleaner („Windows-Fehlerbericht“) bzw. dem Festplattenbereinigungstool auf. Das sind übrigens auch gleich meine Lösungsvorschläge für euch:
Deaktiviert die Problembehandlung unter Start -> Problembehandlung -> Einstellungen ändern -> Aus.
Reinigt eure Systemplatte mit CCleaner, indem ihr die Option „Windows-Fehlerbericht“ ankreuzt und ausführt.
Reinigt eure Systemplatte mit dem Reinigungsutility von Windows (Eigenschaften der Systemplatte -> Bereinigen), indem ihr die „Windows-Fehlerberichterstattungsdateien“ entfernt.