Mich beschäftigte heute kurz der Windows Update Fehler 8024402C unter Windows 7. Er wird im Internet entweder an WSUS Problemen oder Netzwerkproblemen festgemacht. Ist der WSUS Server aktiv, sind die Netzwerkeinstellungen korrekt, kann man den WSUS von dem Rechner aus pingen?
Ich konnte den Fehler mit dem Löschen (vorher sichern!) des folgenden Registry Keys beheben:
Ziel soll es sein mit Notepadd++ (in Windows) einfache Java Anwendungen schreiben und sie mit einem einfachen Tastendruck testen zu können. Das ganze soll schnell und einfach sein und damit ein ständiges „javac ba.class java bla“ in der Konsole ersparen.
Anmerkung: es geht bei „einfachen Java Anwendungen“ hauptsächlich erstmal um Konsolenprogramme, die in der Windows CMD oder der internet Console des Editors ausgeführt werden soll.
Notepad++ bietet für solche Zwecke die Erweiterung „NppExec“. Sollte die Erweiterung nicht installiert sein ist das schnell über Erweiterungen -> Plugin Manager -> Show Plugin Manager -> NppExec -> Install erledigt. NppExec führt beliebige Befehlszeilen per Tastenkombi aus, speichert diese in Profilen usw. Ihr könnt F6 drücken oder per Erweiterungen -> NppExec -> Ausführen das Pupup öffnen, in das ihr eure Befehlszeilen eintragen könnt.
2 Möglichkeiten stehen zur Verfügung:
Ausführung innerhalb von Notepad++ in der eigenen Konsole: F6 Code: Quelle
Das Dokument wird gespeichert, der komplette Pfad wird an den Compiler übergeben, kompiliert und danach mit der java.exe ausgeführt. Achtung: Damit das funktioniert muss der Java SDK /bin/ Ordner in der Path Umgebungsvariable des Betriebssystems eingetragen sein. Das passiert normalerweise bei der Installation der SDK in Windows automatisch. Ich fand aber auch schon viele Rechner (u.A. 2 von meinen) wo das nicht so war. Testet es, indem ihr aus einem beliebigen Ordner heraus folgende cmd Befehle abfeuert: Sollte gehen; if not, do this (Neustart oder Ab- und Anmelden danach).
Führt nun den oben stehenden F6 Code aus. Wenn alles funktioniert und in der Konsole des Editors euer Programm erscheint ist alles super.
Wenn auch nach dem Setzen der Umgebungsvariablen mit Neustart noch folgendes Problem in der Konsole auftritt:
javac "T:\Dropbox\Programmierung\Java\TextGUI.java"
CreateProcess() failed with error code 2:
Das System kann die angegebene Datei nicht finden.
… dann geht’s euch wie mir. Ich hab keine Ahnung warum Notepad++ bei mir die javac nicht findet. Auch ein einfaches javac -version geht nicht. Die normale Windows CMD kann javac aus jedem Ordner heraus finden. Sowohl 32bit als auch 64bit SDK ist installiert, beide Pfade stehen in der Path.
Keine Ahnung, egal, Workaround:
Erstellt eine Batch Datei (ich nenne sie „executor.bat“) irgendwo, folgender Inhalt:
if not [%1]==[] javac %1
if not [%2]==[] if not [%3]==[] start cmd.exe /c java -classpath %2 %3
Die Batch kann mit 1 oder 3 Parametern aufgerufen werden. Bei nur 1 Parameter wird die Java Datei nur kompiliert. Bei 3 Parametern wird sie von der Windows CMD ausgeführt (brauchen wir nur zur externalen Ausführung, siehe unten).
Jetzt müsste sich kurz ein Windows CMD Fenster öffnen und direkt wieder schließen. Denn wie wir wissen schließt sich ein Java Konsolenprogramm (wie auch die Windows Konsole) wenn alle Befehle abgearbeitet sind. Also lassen wir es am Ende pausieren. Dazu nutzen wir eine Nutzereingabe, die das Konsolenfenster so lange aufhält bis dieser eine Taste drückt.
Ihr müsst zusätzlich java.io.IOException importieren, eurer main Funktion die throws IOException Erweiterung geben und an das Ende 2 Zeilen hängen. Like that:
import java.io.IOException;
public class TextGUI {
public static void main(String[] args) throws IOException {
System.out.println("1234 1234 1234 1234\b9999");
System.out.println("1234 1234 1234 1234\r9999");
System.out.println("Press Enter to continue...");
System.in.read();
}
}
Okay, warum denn jetzt 2 verschiedene Wege? Reicht nicht die interne Konsole oder die externe CMD? Vielleicht ist es jemanden aufgefallen: die Ausgaben unterscheiden sich trotz selbem Code voneinander. Die interne Konsole der Editoren (Notepad++ wie auch andere Programme wie Eclipse) behandeln ASCII Steuerzeichen (\b \r \t \n) nämlich anders als die Windows CMD. Wer das wirklich verstehen will muss wohl sowas hier lesen.
Jedenfalls kann es helfen beide Wege zu testen bevor man ein solches Konsolenprogramm freigibt.
Der MSOCache Ordner ist vielen bekannt. Er fasst zwischen 1 und 1,5GB, liegt in der Root der Partition auf der Office installiert wurde und scheint auf den ersten Blick keinen Zweck zu erfüllen. Auf den zweiten Blick enthält der Ordner alle wichtigen Daten für eine Reperatur oder Feature-Erweiterung der bestehenden Office Installation. Man sollte ihn also wenn möglich nicht löschen. Trotzdem kann er, in Zeiten kleiner SSDs, wichtigen Speicherplatz belegen.
Bei Office 2003 gab es das LISTool. Es ermöglichte die Verschiebung oder gar Deaktivierung des MSOCaches. Problem solved.
Für Office 2010 gibt es ein solches Tool jedoch nicht. Hier ist Handarbeit nöig:
Ordner verschieben, z.B. von P:\MSOCache nach T:\MSOCache (muss nicht in der Root bleiben)
mit einem Registry Replace Tool (jv16 PowerTools Trial) die komplette Registry nach dem alten Pfad durchsuchen und alle Funde mit dem neuen Pfad ersetzen
Problem: Nach der Anmeldung wird kein Benutzerprofilordner angelegt, statt dessen bewegt man sich in C:\Users\Public oder C:\Users\TEMP während man eingeloggt ist. Nach dem Logout werden diese temporären Daten gelöscht. Dadurch werden z.B. nie benutzerspezifische Einstellungen gespeichert.
Lösung: Ab in die Registry: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\[S-ID] Durchsucht alle SIDs und schaut jeweils auf den „ProfileImagePath“. Löscht alle Schlüssel des Benutzernamens, der Probleme macht.
Dann, neustarten! (wichtig!)
Danach müsste der Login normal funktionieren und ein Profilordner erstellt worden sein.
„Prozesspriorität“. Dieser Begriff ist für mich seit Anbeginn meiner Windows Zeit ein Rätsel. Im Taskmanager kann man diese Priorität einstellen. Jedoch, was macht sie genau? Macht die Einstellung überhaupt etwas?
Ich habe mir einen kleinen Test erlaubt. In Photoshop habe ich 3 Tests laufen lassen, jeweils mit Photoshop mit „Echtzeit“- und „Niedrig“-Priorität, jeweils 3 Messungen gemacht und einen Durchschnitt der Dauer berechnet. Neben den Photoshop Tests liefen Medien im KMPlayer und WinRAR entpackte ein riesiges Archiv, um Photoshop die Möglichkeit zu geben mit einer hohen Priorität tatsächlich andere Prozesse „wegzustoßen“.
Details: Photoshop -> ich erstelle ein leeres 400cm x 400cm 16bit Bild, ungefähre Größe: 735MB.
Test
Echtzeit
Niedrig
Test 1: Bild füllen mit weißer Farbe
2,4s
2,5s
Test 2: Schwarz-Weiß-Verlauf von oben nach unten
2,6s
2,8s
Test 3: Schwarfzeichnungsfilter -> Konturen scharfzeichnen
8,7s
8,8s
Was macht diese Einstellung nun? Weiß es jemand? Oder ist es vielleicht wie die Defragmentierung bei WinXP/Win7; früher musste man defragmentieren, Windows 7 macht es von allein.
Mozilla bietet für beide Produkte keine .msi und die Dokumentationen sind recht dürftig, eine Verteilung der Software habe ich daher lange vor mir hergeschoben. Es ist aber einfach und zusätzlich zur aktuellsten Version kann man auch gleich Standardeinstellungen für alle Benutzer verteilen.
Ich möchte direkt die Seite verlinken, die mir die wichtigsten Fakten für eine erfolgreiche Verteilung vermittelt hat: Techblog mockbox.net liefert im Artikel Install and Configure Firefox 8 silently die Batchgrundlage und Tipps kurz und knapp. Vielen Dank.
Zubereitung: Alle Zutaten in einen Ordner, der von allen Clients erreichbar ist (Netzlaufwerk)!
Nun die Batch Datei öffnen und wir schauen mal rein:
Code anzeigenDen Code könnt ihr bequem mit den Links/Rechts Pfeiltasten horizontal bewegen.
@echo on
Color 9f
setlocal
REM *******************************************
REM Title: Firefox Silent Installer
REM Author: Hannes Schurig
REM Created: 08.12.2011
REM Changed: 14.12.2011
REM Version: 1.1
REM Quelle: http://mockbox.net/configmgr-sccm/174-install-and-configure-firefox-silently.html
REM *******************************************
REM _______________________________________________________________
REM WICHTIG! Hier die aktuelle zu verteilende Version eingeben.
REM Die Installerdatei muss so benannt sein: Firefox[Version].exe
set newversion=10.0.2
REM _______________________________________________________________
set wd=\\server\pfad\Firefox
set log=\\server\pfad\Firefox\log.txt
set instversion=0
REM Clientfilter: nur die Computer aus der allowedPCs.txt dürfen installieren
::for /f %%f in (%wd%\allowed.txt) do if "%computername%"=="%%f" goto install
::goto end
REM Clientfilter: die Computer aus der deniedPCs.txt dürfen nicht installieren
for /f %%f in (%wd%\denied.txt) do if "%computername%"=="%%f" goto end
:install
title Firefox Installation wird überprüft...
echo Firefox Installation wird überprüft...
REM prüfe ob eine 32bit Version von Firefox Version schon installiert ist
for /f "tokens=1,2,3 delims= " %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox" /v "CurrentVersion"^|findstr "CurrentVersion"') do set instversion=%%c
REM falls keine 32bit Version von Firefox gefunden wurde, prüfe 64bit
if "%instversion%"=="0" for /f "tokens=1,2,3 delims= " %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Mozilla\Mozilla Firefox" /v "CurrentVersion"^|findstr "CurrentVersion"') do set instversion=%%c
if %instversion% GEQ %newversion% echo %date% %time% - %computername% hat bereits diese oder eine neuere Version installiert. >> %log% & goto end
echo %date% %time% - %computername% startet die Firefox Installation...
echo %date% %time% - %computername% startet die Firefox Installation... >> %log%
title Firefox wird installiert...
echo Firefox wird installiert...
REM Format des Installers: Firefox[Version].exe - "Firefox10.0.2.exe"
"%wd%\Firefox%newversion%.exe" -ms
REM 32bit Einstellungsdateien kopieren
if exist "%programfiles%\Mozilla Firefox\" copy /Y "%wd%\override.ini" "%programfiles%\Mozilla Firefox\"
if exist "%programfiles%\Mozilla Firefox\" copy /Y "%wd%\mozilla.cfg" "%programfiles%\Mozilla Firefox\"
if exist "%programfiles%\Mozilla Firefox\" copy /Y "%wd%\local-settings.js" "%programfiles%\Mozilla Firefox\defaults\pref"
REM 64bit Einstellungsdateien kopieren
if exist "%ProgramFiles(x86)%\Mozilla Firefox\" copy /Y "%wd%\override.ini" "%ProgramFiles(x86)%\Mozilla Firefox\"
if exist "%ProgramFiles(x86)%\Mozilla Firefox\" copy /Y "%wd%\mozilla.cfg" "%ProgramFiles(x86)%\Mozilla Firefox\"
if exist "%ProgramFiles(x86)%\Mozilla Firefox\" copy /Y "%wd%\local-settings.js" "%ProgramFiles(x86)%\Mozilla Firefox\defaults\pref"
REM Desktop Icon löschen - Windows XP - deaktiviert
::if exist "%allusersprofile%\Desktop\Mozilla Firefox.lnk" del "%allusersprofile%\Desktop\Mozilla Firefox.lnk" /S
REM Desktop Icon löschen - Windows 7 - deaktiviert
::if exist "C:\Users\Public\Desktop\Mozilla Firefox.lnk" del "C:\Users\Public\Desktop\Mozilla Firefox.lnk"
echo %date% %time% - %computername% hat die Installation abgeschlossen...
echo %date% %time% - %computername% hat die Installation abgeschlossen... >> %log%
:end
endlocal
Updates:
08.03. GEQ statt == Überprüfung der Versionen, Initialisierung der instversion mit 0 statt 999
27.03. 64bit Überprüfung ergänzt
Batch anpassen: Zeile 17: die gewünschte Version muss hier stehen, in der „korrekten“ Form, wie sie auch in der Registry zu finden ist (siehe Zeile 36) Zeile 20+21: Pfade anpassen Zeile 24-29: Clientfilter, ggf. entfernen wenn nicht gewünscht Zeile 62+65: Löschen des Desktop Icons ist deaktiviert (Icon bleibt also), ggf. die Kommentarzeichen entfernen
Die mozilla.cfg enthält gewünschte Einstellungen, die auf der about:config Seite von Firefox zu finden sind. Beispiel:
Code anzeigenDen Code könnt ihr bequem mit den Links/Rechts Pfeiltasten horizontal bewegen.
//Firefox Default Settings
// Startseite
pref("browser.startup.homepage","http://www.iqb.hu-berlin.de");
// Standard Browser Check deaktivieren
pref("browser.shell.checkDefaultBrowser", false);
// Update Check deaktivieren
pref("app.update.enabled", false);
// stops the 'know your rights' button from displaying on first run
pref("browser.rights.3.shown", true);
// stops the request to send performance data from displaying
pref("toolkit.telemetry.prompted", true);
// Disable blinking text:
pref("browser.blink_allowed", false);
// Disable JS windows popping up without direct action from the user
// (as lots of porn and spam sites do):
pref("dom.disable_open_during_load", true);
// Syntax highlighting in View Source.
pref("view_source.syntax_highlight", true);
Die override.ini und die local-settings.js müsst ihr nicht anpassen. Ihr könntet die mozilla.cfg umbenennen und das in der local-settings.js anpassen aber naja, wozu? 😉
Genug angepasst, das sollte reichen!
Funktionsweise: Per Clientfilter kann man steuern, welche Computer die Installation übernehmen sollen. Einer der beiden Clientfilter kann aktiv sein. Der 2. Clientfilter blockiert genannte PCs; ist die denied.txt also leer werden alle PCs bedient. Das ist vermutlich gewünscht. Ist die Installation für den PC erlaubt prüft der Installer zuerst, welche Firefox Version installiert ist. Dies wird aus der Registry ausgelesen. Ist nicht die gewünschte Version (Zeile 17) installiert geht es weiter zur eigentlichen Installation. Mit dem -ms Parameter wird Firefox ohne Oberfläche silent mit Standardparametern installiert. Es ist auch möglich die Installation mit einer .ini Datei anzupassen. Danach werden die 3 Einstellungsdateien kopiert und ggf. das Desktop Icon gelöscht. Alle Einstellungen der mozilla.cfg werden bei jedem Firefox Start gesetzt und sind damit erzwungen solange die .cfg Datei im Verzeichnis bleibt.
Batch in die Startscripts der Gruppenrichtlinie und fertig!
Virenchecks. Gehört auf einem lokalen PC zum Must Have. Warum nicht auch die eigenen Webseiten auf Sicherheitslücken prüfen? URLVoid ist ein Dienst, der beliebige Domains nach angreifbaren Sicherheitslücken scannt und am Ende einen Report ausgibt. Achtung: der Scan kann bis zu 10 Minuten dauern, nicht schließen. Alle meine Projekte sind clean, puh. 23 Sicherheitslücken sind jetzt aber auch nicht soo viele. 😉
URLVoid Find Parasites scannt eine Domain nach allen Links, Iframes oder Ressourcen, die verwendet werden. Mit einem Häkchen werden nur externe Ressourcen gesucht. Somit bekommt man schnell eine Übersicht bekommen, wohin Anfragen beim Aufruf der Seite gehen. Sind unbekannte Seiten oder Ressourcen darunter sollte man sich das näher ansehen.
Von diesem Anbieter gibt es auch eine Website-Worth Maschine namens Ohstats. Hat mich Sicherheit nichts mehr zu tun aber ich mag sowas ja. 🙂 Wieviel ist meine Seite wert? Die meisten Analysen dieser Art sind total schwachsinnig, erkennen total falsche Werte usw. Die Analyse von Ohstats ist jedoch nicht schlecht. Die Zugriffszahlen sind zwar leicht zu hoch aber kommen nah ran. Wenn der Wert stimmt habe ich in den letzten 2 Jahren hier eine gute Investition zusammengebastelt. 😉