java7-java8u25-upgrade-silent-deployment-msiJava 8 ist mittlerweile bei Update 25 angekommen und ein Upgrade von 7u67 auf 8u25 ist sicher eine gute Idee. Also wollte ich mein bestehendes Verteilungsscript für Java im Unternehmen auf die neue Version umstellen. Das war jedoch nicht so einfach und die Verteilung musste umgebaut werden. Demnach hier das Update der Verteilung.

exe Installer

Die .exe Installer, die auf der Java Homepage zur Verfügung stehen, funktionieren gut für die Verteilung:

start /w %wd%\%version%-64.exe /s WEB_JAVA=1 REBOOT=REALLYSUPPRESS /norestart REBOOT=SUPPRESS

MSI Installer

Sollte eine Verteilung über MSI gewünscht werden, geht das natürlich auch. Dazu einfach den .exe Installer per Doppelklick starten und die MSI aus dem Ordner AppData\LocalLow\Sun\Java\[Version] ziehen.
java-8-update-cmd-ordner-msi

Das MSI Paket muss jedoch erst angepasst werden, es werden sonst verschiedene 16XX msiexec Fehlercodes zurückgeliefert.
Hier sind zwei Seiten, mit denen ich gearbeitet habe: diese Seite und diese Seite.
Da sollten keine Fragen offen bleiben.

Den fertigen Installer kann man jetzt mit folgender Zeile verscripten:

msiexec /i %wd%\%version%-32.msi /qn INSTALL_SILENT=1 WEB_ANALYTICS=0 EULA=0 REBOOT=0

Die aktuellen Parameter für die 8er Version findet ihr hier.

Alte Versionen aufräumen

Neu in meinem Script ist die Deinstallation alter Versionen. Dies ist mit 3 Methoden machbar: über WMIC (Windows Management Instrumentation Commandline), einen generellen

msiexec /x{GUID}

Befehl oder mit der Installations-MSI.

WMIC:

Über den WMIC-Befehl

wmic product where "[filter product]" call uninstall" können Programme gezielt deinstalliert werden. Folgender Code deinstalliert Java-Produkte:
[crayon-5851b00cbfa96616214862 lang="shell" ]
wmic product where "name like 'Java %%'" call uninstall /nointeractive
wmic product where "name like 'Java%%'" call uninstall /nointeractive
wmic product where "name like 'Java(tm) %%'" call uninstall /nointeractive
wmic product where "name like 'J2SE Runtime Environment%%'" call uninstall /nointeractive

Mittlerweile setze ich ausschließlich auf die WMIC Variante, da diese zuverlässig und einfacher zu warten ist als die anderen Methoden.

GUID:

msiexec /x{26A24AE4-039D-4CA4-87B4-2F83217055FF} /qn /norestart

Wobei die GUID dieses Format hat:
[/crayon]

{26A24AE4-039D-4CA4-87B4-2F8YY1XXXXFF}

wobei YY die Prozessorbits sind (32/64) und XXXX die Versionsnummer: 7065 für 7u65 oder 8011 für 8u11.

Die GUIDs aller 7er und 8er Versionen, inklusive Batchbefehle, findet ihr auf dieser IT-Ninja Seite (ganz unten).
Hier wäre die aufgeräumte Variante:

Code anzeigenDen Code könnt ihr bequem mit den Links/Rechts Pfeiltasten horizontal bewegen.

REM 7er Versionen
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83217067FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86417067FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83217065FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86417065FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83217060FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86417060FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83217055FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86417055FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83217051FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86417051FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83217045FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86417045FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83217040FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86417040FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83217025FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86417025FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83217021FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86417021FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83217017FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86417017FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83217015FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86417015FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83217013FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86417013FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83217011FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86417011FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83217010FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86417010FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83217009FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86417009FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83217007FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86417007FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86417006FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83217006FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86417005FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83217005FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86417004FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83217004FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86417003FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83217003FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86417002FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83217002FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86417001FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83217001FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86417000FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83217000FF}

REM 8er Versionen (Update: 17.03.2016, Uninstall bis Update 71, aktuell ist 73)
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83218071F0}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86418071FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83218066F0}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86418066FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83218065F0}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86418065FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83218060F0}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86418060FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83218051F0}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86418051FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83218045F0}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86418045FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83218040F0}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86418040FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83218031F0}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86418031FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83218020F0}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86418020FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83218011FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86418011FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83218005FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86418005FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F83218000FF}
msiexec.exe /qn /norestart /X{26A24AE4-039D-4CA4-87B4-2F86418000FF}
REM ... usw

MSI:

Die MSIs erhaltet ihr aus dem AppData\LocalLow\Sun\Java\[Version] Ordner.
java-8-update-cmd-ordner
Damit dann:

msiexec /x "%wd%\uninstall\jre1.7.0_67\jre1.7.0_67.msi" /qn /norestart

Alternative Deinstallationen / Uninstaller

Man kann aus der Registry auf jeden Fall die aktuellste Version auslesen, HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment.
Problem: hier steht nur die aktuellste Version drin. Ich habe beispielsweise 7u71 und 8u25 installiert, da drin ist nur die 8er gelistet. Ist also schonmal riskant damit zu arbeiten.
Alternativ könnte man im Windows Uninstall Key (HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall) nach Java Versionsnummern suchen, hier wird es erklärt. Aber auch hier müsste man alle Versionsnummern durchprobieren und auf Funde reagieren.
Es gibt bereits ein Script, das mit dieser Uninstall Key Methode sucht und deinstalliert. Ist zwar vbs, aber egal. Hier auf IT-Ninja gleich das erste.
Außerdem gibt es auch weitere Java Uninstaller/Cleanup Tools wie z.B. JavaRA (mehr dazu).
Die Möglichkeiten sind also vielseitig.

Noch ein paar grundlegende Hinweise zur Installation und Deinstallation von Java per MSI auf dieser aktuellen Hilfeseite oder aus der (veralteten) Java Hilfe.

Deployment Script

Die neue Variable

cleanup

ermöglicht das Überspringen der Deinstallation der alten Java-Versionen.

cleanup=1

räumt dagegen alle Versionen (auch die aktuell installierte) einmal auf und installiert frisch. Das Cleanup ist standardmäßig deaktiviert.
Update: 16.08.2016: Version 8u101 getestet und läuft.
Info: Das im Skript verwendete Programm VersionCompare ist eine Eigenprogrammierung und hier als Download verfügbar.

Code anzeigenDen Code könnt ihr bequem mit den Links/Rechts Pfeiltasten horizontal bewegen.

@echo on && color 9f && setlocal
set wd=\\lea\Deployment\Software\Java
set tools=\\lea\Deployment\Sonstiges\tools
set cleanup=0
set versionEL=9
set javaEL32=9
set javaEL64=9
set javaregEL32=9
set javaregEL64=9
set retry=0
set instversion=0
set uninst=x
set pa=%processor_architecture%
REM:: ### HIER VERSION NACH UPDATE ANPASSEN ###
set main=8
set update=101
REM:: ############
set version=%main%u%update%
set alllog=%wd%\java-all.log

REM:: Clientfilter: nur die Computer aus der allowedPCs.txt dürfen installieren
REM::for /f %%f in (%wd%\allowedPCs.txt) do if "%computername%"=="%%f" goto check
REM::goto end

REM:: Clientfilter: die Computer aus der deniedPCs.txt dürfen nicht installieren
for /f %%f in (%wd%\deniedPCs.txt) do if "%computername%"=="%%f" goto end

:check
REM:: alte Kontrollen: Registry, Programmordner
REM:: 1) for /f "tokens=1,2,3 delims= " %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment" /v "Java7FamilyVersion"^|findstr "Java7FamilyVersion"') do set instversion=%%c
REM::    if not "%instversion%"=="1.%main%.0_%update%" goto cleanup
REM:: 2) if not exist "%programfiles%\Java\jre1.%main%.0_%update%" goto install
REM:: Aktuelle Kontrolle: Version aus java -version entnehmen und mit VersionCompare vergleichen
for /f "tokens=3" %%g in ('java -version 2^>^&1 ^| findstr /i "version"') do set instversion=%%g
if "%instversion%" == "0" goto check2
if "%instversion%" == "" goto check2
set instversion=%instversion:~1,-1%
for /f "delims=._ tokens=1-4" %%v in ("%instversion%") do (
	set instmain=%%w
	set instupdate=%%y
)
goto compare

:check2
REM:: workaround if java -version check doesn't work
echo %date% %time:~0,8% - %computername% kann die Version nicht durch java -version bestimmen >> %alllog% 
for /f "tokens=1-3" %%i in ('%tools%\sigcheck %ProgramData%\Oracle\Java\javapath\java.exe') do ( if "%%i %%j"=="File version:" set instversion=%%k )
if "%instversion%" == "0" set cleanup=1 & goto cleanup
if "%instversion%" == "" set cleanup=1 & goto cleanup
set instversion=%instversion: =%
set instversion=%instversion:~0,6%
for /f "delims=. tokens=1-4" %%v in ("%instversion%") do (
	set instmain=%%v
	set instupdate=%%x
)
goto compare

:compare
echo %date% %time:~0,8% - %computername% hat %instmain%.%instupdate% (%instversion%) installiert >> %alllog% 
REM:: compare installed and desired versions now
%tools%\VersionCompare.exe "%instmain%.%instupdate%" "%main%.%update%"
set versionEL=%errorlevel%
if "%versionEL%"=="-1" goto cleanup
if "%versionEL%"=="0" echo %date% %time:~0,8% - %computername% hat bereits %instversion% installiert >> %alllog% & goto end
if "%versionEL%"=="1" echo %date% %time:~0,8% - %computername% hat bereits %instversion% (neuer) installiert >> %alllog% & goto end
goto end

:cleanup
if "%cleanup%"=="0" goto install
REM:: Deinstalliere 8er Versionen
taskkill /F /IM iexplorer.exe
taskkill /F /IM iexplore.exe
taskkill /F /IM firefox.exe
taskkill /F /IM chrome.exe
taskkill /F /IM jusched.exe
taskkill /F /IM jp2launcher.exe
taskkill /F /IM java.exe
taskkill /F /IM javaw.exe
taskkill /F /IM jqs.exe
wmic product where "name like 'Java %%'" call uninstall /nointeractive
wmic product where "name like 'Java%%'" call uninstall /nointeractive
wmic product where "name like 'Java(tm) %%'" call uninstall /nointeractive
wmic product where "name like 'J2SE Runtime Environment%%'" call uninstall /nointeractive
goto install

:install
if "%processor_architecture%"=="AMD64" goto inst64
REM:: .exe format: [version]u[update]-32/-64.exe, Beispiel: 7u45-32.exe, 7u45-64.exe
start /w %wd%\%version%-32.exe /s WEB_JAVA=1 SPONSORS=0 EULA=1 AUTO_UPDATE=0 INSTALL_SILENT=1 WEB_ANALYTICS=0
REM:: MSI INSTALLER CMD LINE: msiexec /i %wd%\%version%-32.msi /qn INSTALL_SILENT=1 WEB_ANALYTICS=0 EULA=0 REBOOT=0 SPONSORS=0
set javaEL32=%errorlevel%

:inst64
start /w %wd%\%version%-64.exe /s WEB_JAVA=1 SPONSORS=0 EULA=1 AUTO_UPDATE=0 INSTALL_SILENT=1 WEB_ANALYTICS=0
REM:: MSI INSTALLER CMD LINE: msiexec /i %wd%\%version%-64.msi /qn INSTALL_SILENT=1 WEB_ANALYTICS=0 EULA=0 REBOOT=0 SPONSORS=0
set javaEL64=%errorlevel%

REM:: 10 Sekunden Pause nach der Installation
ping localhost -n 10 >> nul

:verfication
REM:: existieren die Java Reg-Keys nach der Installation?
REM:: reg query "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment" /f "1.%main%.0_%update%" /k
REM:: set javaregEL32=%errorlevel%
REM:: reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment" /f "1.%main%.0_%update%" /k
REM:: set javaregEL64=%errorlevel%

echo %date% %time:~0,8% - %computername%: %version%, install-errorlevel: 32: %javaEL32%, 64: %javaEL64% >> %alllog%

REM:: Error-Handling, Reaktion auf die 3 häufigsten msiexec Fehlercodes
if %javaEL32%==1618 goto retry REM:: msiexec process in use, installation already in progress
if %javaEL32%==1602 goto retry REM:: user canceled installation
if %javaEL32%==1603 goto retry REM:: fatal error, some use it for "already installed" (eg. java)
if %javaEL64%==1618 goto retry REM:: msiexec process in use, installation already in progress
if %javaEL64%==1602 goto retry REM:: user canceled installation
if %javaEL64%==1603 goto retry REM:: fatal error, some use it for "already installed" (eg. java)
goto end

:retry
if %retry%==1 goto retryfailed
echo %date% %time:~0,8% - %computername% hat nicht Errorlevel 00 erreicht, retry in 150Sek... >> %alllog%
set retry=1
REM:: 5 Minuten warten
ping localhost -n 150 > nul
goto install

:retryfailed
echo _!_ %date% %time:~0,8% - %computername% hat die Installation abgebrochen, RETRY FAILED! >> %alllog%
goto end

:end
endlocal
exit

Das funktioniert immernoch problemlos:
java7-java8u73-upgrade-silent-deployment-msi-log
(Errorcode 9 bei 32bit heißt, dass auf dem System keine 32bit Installation gefunden und diese übersprungen wurde)

Ein Leser berichtete mir von seinen Erfahrungen mit Kommentaren in Batch:
REM ist gut, :: ist BÖSE!

Seine Erklärung dazu:

Grund: die ‚::‘-Kommentare sind syntaktisch anscheinend nichts anderes als Sprungmarken (die eben nie angesprungen werden). Funktioniert ja auch immer schön, und man kann sogar (vermeintlich) diese Sprungmarken doppelt definieren, also mehrfach denselben „Kommentar“ schreiben.
Probleme macht das aber in for-Schleifen. Konkret schicke ich dir mal ein Beispiel, bei dem die Meldung „Das System kann das angegebene Laufwerk nicht finden.“ erscheint.
Das wird noch viel lustiger, wenn man ein längeres Skript in dieser for-Schleife hat. Ich habe schon drei verschiedene sinnlose Fehlermeldungen wegen dieser Sache erhalten. War nicht leicht herauszufinden, was die Ursache war. Umstellen auf REM hat alle Probleme auf einmal behoben.

Hier der Start-Code für den Test:

@echo off
for /f "tokens=*" %%a in (test.bat) do (
    ::test
    ::echo
    echo %%a
)

Diesen Code habe ich Stück für Stück verändert und mir die Resultate angesehen. Und diese waren, wie vom Leser berichtet, erstaunlich fehlerhaft:
batch-kommentare-rem-statt-doppelpunkt-test-cmd
Ausführungen:

  1. Start-Code wie oben mit ::test und ::echo
  2. nur ::echo
  3. nur ::test
  4. ohne ::test und ::echo
  5. ::test an verschiedenen Stellen zw. echo %%a und der schließenden Klammer
  6. ::test außerhalb der for Schleife
  7. ::test2 innerhalb der for Schleife
  8. ::test2 in ::test umbenannt
  9. ::test und eine leere Zeile davor
  10. ::echo hinzugefügt, ::test und ::echo innerhalb, Start-Code
  11. ::echo wieder entfernt, nur ::test

Also bei :: Kommentaren innerhalb der for Schleife kommt es unter Umständen zu Fehlern. Mal triggert ein :: Kommentar („test“ in diesem Fall) einen Fehler, mal nicht. Zukünftig werde ich alles mit REM auskommentieren.

Dieser Text ist die Kopie einer Rundmail an die Mitarbeiter auf Arbei. Es ist also mehr eine Handlungsempfehlung an Nicht-ITler. Ich denke aber die Tipps sind sehr grundlegend und könnten für viele ITler interessant sein, bzw. so gut wie fertig zum Rumschicken. Von daher:

Große Benutzerprofile und das Problem mit den Anmeldezeiten

Lange PC-Anmeldezeiten, Fehler bei der Profilsynchronisierung, gelöschte Dateien tauchen bei der nächsten Anmeldung wieder auf; (oftmals) typische Anzeichen eines zu großen Benutzerprofils.
benutzerprofile-im-unternehmen-rundmail-vorlage-windows8-anmeldung

Bitte überprüft regelmäßig die Größe eures Benutzerprofils: Im Explorer unter C:/Benutzer Rechtsklick auf euren Benutzernamen -> Eigenschaften. Dort seht ihr die Größe und die Anzahl der Dateien in eurem Benutzerprofil.
benutzerprofile-im-unternehmen-rundmail-vorlage-profileigenschaften

Empfehlenswert: bis 8GB und 20.000 Dateien, alles darüber sollte zum Aufräumen und zur Vorsicht aufrufen.

Anmeldezeit = 30 Sekunden pro 2GB Größe + 30 Sekunden pro 5000 Dateien
Das ist natürlich eine Schätzung und von einigen Faktoren abhängig.

Benutzerprofil reinigen

  • KEINE Cloud-Speicher-Dienste im Benutzerprofil ablegen – Dropbox, Drive, OneDrive usw. legen gerne als Standardordner der Daten das Benutzerprofil fest, das ist SCHLECHT im Unternehmen.
  • Benutzerprofil -> Downloads regelmäßig aufräumen
  • Benutzerprofil -> Desktop regelmäßig aufräumen
  • Regelmäßig die Browserdaten löschen:
    • Firefox -> Einstellungen -> Datenschutz -> „kürzlich angelegte Chronik“ -> [Alles] im Dropdown wählen und die Häkchen bei (mindestens!) „Besuchte Seiten & Download Chronik“, „Cache“, „Offline-Website-Daten“ aktivieren. Cookies, Aktive Logins und eingegeben Formulardaten können das Browsen u.U. erstmal wieder um einen kleinen Prozentsatz beschleunigen.
    • Chrome -> Weitere Tools -> Browserdaten löschen… -> „Gesamter Zeitraum“ im Dropdown wählen, und Häkchen bei (mindestens!) „Browserverlauf“, „Downloadverlauf“, „Bilder und Dateien im Cache“ aktivieren. „Cookies und andere Website- und Plug-in-Daten“ können ebenfalls etwas helfen.
    • Internet Explorer: Diesen Browser bitte NICHT nutzen! Nie. Weder privat noch im Unternehmen.
  • Daten, die ihr über längere Zeit braucht, aber nicht mit einem Projekt (also Gruppenlaufwerk) zu tun hat -> auf Z:/ verschieben. Dies ist euer privates Netzlaufwerk, auf das sonst niemand Zugriff hat. Dieses Laufwerk belastet eure Anmeldezeit nicht.
  • CCleaner

    Zusätzlich dazu mit CCleaner das System reinigen: Auf fast allen PCs sollte mittlerweile CCleaner standardmäßig installiert sein: Startmenü -> CCleaner suchen -> folgende Einstellungen setzen:

    benutzerprofile-im-unternehmen-rundmail-vorlage-ccleaner-windows benutzerprofile-im-unternehmen-rundmail-vorlage-ccleaner-anwendung

    Per Klick auf „Analysieren“ erhaltet ihr eine Schätzung der Daten, die gelöscht werden können. Mit „CCleaner starten“ startet ihr den Reinigungsprozess:
    benutzerprofile-im-unternehmen-rundmail-vorlage-ccleaner-resultat

    Treesize

    Analysiert euer Profil mit den kostenlosen Tool TreeSize Free: Download (im Dropdown bitte „TreeSize.zip (Ausführbar ohne Installation)“ auswählen). Das Tool hilft euch besonders große Ordner oder Dateien ausfindig zu machen:
    benutzerprofile-im-unternehmen-rundmail-vorlage-treesize-free-portable

    In früheren Posts habe ich bereits typische Probleme mit Batch und Umlauten, sowieso Umlauten und dem Copyrightsymbol behandelt. Die Artikel beschreiben aber nur die Darstellung von Umlauten und dem Copyrightsymbol. Probleme können jedoch auch bei der Verarbeitung von Daten mit Umlauten auftreten, beispielsweise beim Kopieren von Dateien mit Umlauten im Dateinamen.

    2 Beispielcodes, die nicht funktionieren:

    :: 1
    xcopy stundenpläne.xlsx /test/
    
    :: 2
    for /f "tokens=*" %%a in (files.txt) do (
      xcopy "%~dp0%%a" "%~dp0test\%%a*" /Y
    )
    

    batch-umlaute-im-dateinamen-falsche-methode

    Thomas, ein Leser, war so freundlich und schickte mir einen Code, der mit Umlauten in Dateinamen problemlos klarkommt.
    Dieser Code nutzt ebenfalls Codepage Tricks um mit Umlauten in Dateinamen umgehen zu können:

    :: Wechsele die Codepage, sonst kommen wir nicht im Umlauten in Dateinamen klar! (erst alte codepage speichern)
    for /f "tokens=2 delims=:." %%a in ('chcp') do set alteCP=%%a
    chcp 65001 >NUL
    
    :: Finde alle referenzierten Dateien und lege sie in den Zielordner
    for /f "tokens=*" %%a in (files.txt) do (
      :: Jetzt kopieren. Der Asterisk am Ende vermeidet, dass xcopy eine manuelle Eingabe erfordert.
      xcopy /Y "%~dp0%%a" "%~dp0test\%%a*"
    )
    
    :: Aufräumen.
    chcp %alteCP% >NUL
    

    Das einzig spezielle in dem Code ist der Stern im xcopy Befehl. Dieser verhindert, dass eine Eingabe vom Nutzer gefordert wird, wenn der Zielordner noch nicht existiert.

    Das Titelthema der (mittlerweile nicht mehr) aktuellen c’t: „Das verrät Ihr PC“. Auf der DVD enthalten ist sowohl die große Toolsammlung DART 2.0 als auch das bootbare Forensik Linux System DEFT. Das Paket aus beiden Produkten steht auch hier als Download bereit.
    Das habe ich mir mal angeschaut.

    DART 2.0 startet mit einem übersichtlichen Launcher, der Zugriff auf alle Tools gibt und diese kategorisch sortiert und listet. Alle Tools sind sofort startbar, entweder als Admin oder als aktueller User.
    dart-2.0-forensik-toolbox-launcher

    Aquire

    „Aquire“ enthält die Unterkategorien „Burn“, „Copy“ und „Image“. In diesen stecken verschiedenste Tools wie DeepBurner, ForensicCopy, TeraCopy, FastCopy, DumpIt, RamCapture, PZenDump und mehr. Diese überspringe ich jetzt mal, das ist weniger spannend.

    Data Recovery

    Das Menü „Data Recovery“ enthält die Tools Undelete-360, PhotoRec und TestDisk. Die letzten beiden Tools sind Kommandozeilenbasiert, die 64bit Version stürzte auf meinem PC ab und die 32bit hatte Probleme auf meine Partitionen zuzugreifen. Auch so ist das eine sehr dürftige Auswahl an den reich verfügbaren Recovery Freewares, die es so gibt.

    Forensics

    Das „Forensics“ Menü ist in die Kategorien „Browser“, „E-Mail“, „Encryption“, „File“, „Hashing“, „Instant Messaging“, „Peer to Peer“ und „Windows Forensics“ aufgeteilt.

    Browser:
    Mit fast 30 Tools lässt sich so ziemlich jedes Browser Detail analysieren. Vom Verlauf über Cookies, Cache bis hin zu den Favouriten lässt sich alles auslesen und anzeigen. (Hinweis: Passwort-Angelegenheiten kommen in einer extra Kategorie weiter unten)
    dart-2.0-forensik-toolbox-browser

    Encryption:
    Die vier enthaltenen Tools können sowohl verschlüsselte Dateien, Depots als auch ganze versteckte und verschlüsselte Partitionen erkennen und Informationen (Algorithmus, Größe, Signatur usw.) anzeigen. Da ich keine verschlüsselten Daten direkt auf meinem PC habe, kann ich hier auch nicht viel zeigen.
    dart-2.0-forensik-toolbox-encryption

    File:
    Fünf Tools analysieren Datei- und Ordnereigenschaften. Die Ordneranalyse-Tools sind ziemlich nutzlos, schaut lieber in das Menü „Incident Resp.“ -> „System Info“, dort findet ihr TreeSize Free, welches wesentlich besser Partitionen und Ordnerbäume untersucht und grafisch anzeigt.
    dart-2.0-forensik-toolbox-file

    Hashing:
    Enthält 4 Tools zum Erstellen, Vergleichen und Exportieren von Hashes.
    dart-2.0-forensik-toolbox-hashing

    Instant Messaging:
    Die 4 Tools analysieren die Spuren und Nachrichten von Skype, Windows Live Messenger, ICQ und Yahoo Messenger; wer auch immer letztere noch nutzen mag 😉 Da ich nur Skype habe und das praktisch nicht nutze, zeige ich hier nur die 2 Skype Tools. Diese listen alle Kontakte und ihre Nachrichten mit zusätzlichen Informationen auf. Erstaunlich, dass Skype immernoch nicht die Kommunikationsdaten schützt sondern sie in einer normalen, lesbaren Datenbank liegen lässt…
    dart-2.0-forensik-toolbox-messenging

    Windows Forensics:
    Diese Unterkategorie hat noch einmal 2 Unterkategorien: „Registry“ und „Printer Spooler“. Insgesamt befinden sich fast 50 Tools in dieser Kategorie. Diese analysieren die Registry, Druckjobs, Verknüpfungen, Prefetch Dateien, verschiedenste Logdateien des Systems (bei Abstürzen des Systems oder von Programmen), Datenstreams, Windows Aktionen (geöffnete Dateien, Programme) und vieles mehr. Komischerweise findet sich hier auch ein Programm namens MyLastSearch, welches die Suchanfragen der üblichen Browser listet. Dieses müsste eigentlich eher in die „Browser“ Kategorie.
    dart-2.0-forensik-toolbox-windows-forensics

    Peer to Peer:
    Die sechs Tools bieten verschiedene Funktionen um Daten der Programme Limewire, Frostwire, Gigatribe und eMule zu analysieren. Da ich keinerlei P2P Programme besitze, kann ich hier auch nichts zeigen.

    E-Mail:
    Die fünf enthaltenen Programme ermöglich das Auslesen und Reparieren von Mail-Client-Datenbanken (Outlook, Thunderbird, Windows Mail). Außerdem zeigen sie Anhänge und Statistiken dieser Datenbanken gesondert an. Da ich keinerlei E-Mail Programme installiert habe, kann ich das hier nicht weiter zeigen.

    Incident Response

    Das Menü bietet ein paar Tools für Antivirenmaßnahmen und Systemanalyse. Die Kategorien „Antivirus“ und „System Info“ bieten über 30 Tools daür.

    Antivirus:
    Standalone Antivirentools können sehr brauchbar sein, wenn man einen vermutlich verseuchten PC vor der Nase hat. Diesen sollte man dann im abgesicherten Modus ohne Netzwerktreiber starten, um keine Kommunikation der Viren nach Außen zu ermöglichen. Damit ist aber auch das Herunterladen und Aktualisieren von Antivirensoftware verbaut. Fertig installierte Antivirenprogramme lösen das erste Problem. Nach ersten Scans könnte man den PC auch mit Internet starten und danach die Tools aktuelle Definitionen laden lassen, um noch einmal alle Scans laufen zu lassen. Die 2 enthaltenen Programme ClamWin und aswMBR bieten diese Updatefunktionalitäten an.
    Die anderen Tools der Kategorie untersuchen Prozesse, Systemdateien, Booteinträge und weitere infizierbare Orte nach typischen Eigenschaften von Rootkits und Malware.

    dart-2.0-forensik-toolbox-antivirus-definitions dart-2.0-forensik-toolbox-antivirus-scan

    System Info:
    Mit der Unterkategorie „Running Processes“ helfen die Tools Prozesse, Partitionen, Systemeigenschaften, Hard- und Software zu analysieren.
    dart-2.0-forensik-toolbox-system-info

    Networking

    Wie der Name schon sagt finden sich hier Programme zum Analysieren, Mitschneiden und Manipulieren von Netzwerktraffic, Konfigurieren von Netzwerkverbindungen sowie das Untersuchen und auch Durchsuchen von Netzwerken.
    dart-2.0-forensik-toolbox-networking

    Password

    In diesem Menü sind die Passwort-Tools der Toolsammlungen Nirsoft (30 Tools) und SecurityXploded (20 Tools) enthalten, sowie Advanced Password Recovery und Phrozen Pwd Recovery. Es gibt viele Tools zum Auslesen der lokalen Passwörter, jedoch fehlen mir Tools für einige Softwareprodukte wie die Office Programme, Archivprogrammen und Ähnliche, die oft mit Passwörtern zu tun haben.
    dart-2.0-forensik-toolbox-password

    Visualize

    Die drei Kategorien „Graphics“, „Multimedia“ und „Office“ enthalten viele Tools wie XnView, Photo Studio, ExifDataView, Media Player Classic, VLC, InstalledCodec, SumatraPDF, Universal Viewer und ein paar Datenbankbetrachter. Besonders spannend ist das nicht.

    Utility

    Auch in dieser Kategorie gibt es viele wichtige aber nicht besonders spannende Tools: SearchMyFiles, 7-Zip, UniExtract, CamStudio Recorder, GSplit, Notepad++, TightVNC Viewer, Eraser, WipeDisk, USBWriteProtect.

    Fazit

    Wie immer bei Toolsammlungen muss man sich die einigen wenigen Tools, die wirklich gut funktionieren, gut zu bedienen sind und möglichst viel Zweck erfüllen, merken. Die Tools funktionierten teilweise ganz gut und lieferten viele Informationen, wirklich überrascht wurde ich jedoch von keinem Tool. Die meisten Informationen sind relativ basic und lassen sich – wenn auch mit wesentlich mehr Arbeit – auch aus den Programmen selbst oder mit Windows Boardmitteln auslesen.

    Dies ist ein Update der letzten Adobe Reader Deployment Artikel; also eher ein digitales Memo für mich.

    Vorbereitung des AIP

    Download der Basis 11.0.0 (MUI) und des letzten non-security Updates 11.0.09 (ebenfalls MUI) von hier.
    Erstellen des AIP der 11.0.0 Basis und direktes Patchen mit dem 11.0.09 Update:
    adobe-reader-deployment-preparation-admin-install-11.0.09

    Deployment Vorbereitung

    Mit dem Adobe Customization Wizard XI wird die MST mit einer MSP angepasst. Die Einstellungen werden teilweise in der grafischen Oberfläche gesetzt, teilweise mit dem „Direct Editor“ (letzter Menüpunkt im Wizard). Einstellungen sind:

    Propertyalter Wertneuer Wert
    ProductLanguage10331031
    ISLANGFLAGENUDEU
    ProductCode{AC76BA86-7AD7-FFFF-7B44-AB0000000001}{AC76BA86-7AD7-1031-7B44-AB0000000001}
    AgreeToLicenseNoYes
    ENABLE_CACHE_FILESYesNo
    EULA_ACCEPTNoYes
    RebootYesNoYesNo

    Deployment

    Die Kombination aus .msi, .mst und setup.ini sollte für eine 11.0.09 Installation auf Deutsch mit den gewünschten Anpassungen sorgen. Diese kann nun via GPO/Script verteilt werden.

    server-backup-bannerIch poste mal eben ein kleines Update meines Server Backup Scripts. Nichts spannendes, aber der Start des Scripts ist suboptimal.
    Dabei kann noch einiges schief gehen und ein Laufwerksbuchstaben zu verbinden ist für Scripts, die mit der Aufgabenplanung ausgeführt werden, besonders sinnlos.

    Vorher:

    if not exist Z: net use Z: \\server\*** /user:***
    

    Ziel ist das Verbinden des Backup Shares, ein Schreibtest und Logging aller Fehlercodes.
    Besser:

    set nas=\\serverip\Backup
    
    REM delete and reconnect backup share
    net use %nas% /delete
    echo %date% %time:~0,8% net use delete %errorlevel% >> %log%
    
    net use %nas% /u:user password
    echo %date% %time:~0,8% net use %errorlevel% >> %log%
    
    REM verify share write access
    md %nas%\writeaccesstest
    set tmpel=%errorlevel%
    echo %date% %time:~0,8% test %tmpel% >> %log%
    
    if %tmpel%==0 goto backup
    set err=backup destination write access error && goto err
    
    :backup
    rd %nas%\%backupdest%\writeaccesstest
    ...