Quantcast
Channel: IT-Stack.de
Viewing all 241 articles
Browse latest View live

Windows Update Fehler 80072EE2 / 800B0001 – WSUS (Client) Fehler behoben

$
0
0

Allgemeines

Anfang des Jahres habe ich mich schon einmal mit dem Windows Update Fehler 80072EE2 beschäftigen müssen. Dieser trat nur an einem Client des Unternehmens auf, alle anderen Clients arbeiteten einwandfrei mit dem WSUS zusammen. Den Fehler konnte ich damals nicht lösen und musste den PC letztendlich neu installieren.
Seit dem Umzug des WSUS Dienstes auf einen neuen Server kam dieser Fehler nun aber bei jedem Client. Der Fehler 80072EE2 hat also definitiv etwas mit einem fehlerhaft installierten oder konfigurierten WSUS Server zu tun.

Vorbereitung

Bevor ihr den WSUS Server bearbeitet, solltet ihr nochmal mit dem WSUS Check Script oder ähnlichen Tools an eurem Test-Client prüfen, ob alle Einstellungen richtig gesetzt sind.
Falls ja, sollte in eurer Registry unter HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate der Wert von “WUServer” bzw. “WUStatusServer” auf euren WSUS Server gesetzt sein, also “http://servername“. Ändert diese beiden Werte mal und hängt den Port 8530 an: “http://servername:8530″.
Anschließend könnt ihr direkt eine neue Update Suche starten und bekommt vermutlich einen anderen Fehler, evtl. den Fehler 800B0001. Auch dieser Fehler weist darauf hin, dass der WSUS Server noch nicht fertig installiert ist.

Lösung

In meinem Fall war die Lösung unerwartet einfach:

  1. Update/Fix KB2720211 (Info) auf dem WSUS Server installieren
  2. Stoppen des WWW Dienstes (services.msc -> “WWW-Publishingdienst” oder CMD -> “net stop w3svc“)
  3. Stoppen des Update Dienstes (services.msc -> “Update Services” oder CMD -> “net stop wsusservice“)
  4. Zurücksetzen des IIS Dienstes (CMD -> “iisreset”)
  5. Starten des Update Dienstes (services.msc -> “Update Services” oder CMD -> “net start wsusservice“)
  6. (Starten des WWW Dienstes – müsste aber bereits vom IIS Reset gestartet worden sein (services.msc -> “WWW-Publishingdienst” oder CMD -> “net start w3svc“))

Nach der Ausführung der Neustart-Befehle sollte der WSUS Server wieder laufen und relativ schnell die ersten Clientanmeldungen bekommen (je nach Anzahl der Clients im Netzwerk). Ein Serverneustart erspart euch die Befehle und ist auch empfohlen, aber nicht zwingend notwendig.

Quellen: via, via, via, via, via, via


Große Datenbanken in MySQL importieren mit BigDump

$
0
0

Der Import von Datenbankdateien oder Dumps in eine MySQL Datenbank ist nicht unbedingt problematisch.

mysql.exe -u USERNAME -p PASSWORD DATABASENAME < MYDATABASE.sql

Ohne Shell Zugriff muss das anders laufen.
MySQL wird eigentlich immer mit einer Adminoberfläche installiert, in den meisten Fällen phpMyAdmin. phpMyAdmin ist aber oftmals an verschiedenste Limitierungen gebunden und generell gibt es viele Gründe, warum ein Datenbankimport scheitern kann: PHP Dateigrößen-Limit, phpMyAdmin Dateigrößen-Limit, Timeouts vom Server oder vom Client, sowas.
große datenbanken importieren bigdump phpmyadmin limit Große Datenbanken in MySQL importieren mit BigDump
8MB Maximum? Nicht besonders viel.

Per FTP Zugriff, je nachdem wie eingeschränkt der Zugriffsbereich ist, können diese Probleme aber umgangen werden.
Server Vollzugriff:
Entweder könnt ihr auf die php.ini des Servers zugreifen und dort ein paar Einschränkungen lockern um den Import anschließend über die phpMyAdmin Oberfläche erneut probieren:

php_value upload_max_filesize 120M //file size
php_value post_max_size 120M
php_value max_execution_time 200
php_value max_input_time 200

Eingeschränkter Zugriff (shared hoster):
Häufig ist der Zugriff jedoch auf den html/public Bereich beschränkt, hier geht ihr folgendermaßen vor:
Wenn ihr von dem Hoster bereits eine leere Datenbank und einen User bekommen habt, was in den meisten Fällen so passiert, überspringt ihr den folgenden Satz einfach. Falls nicht erstellt ihr euch über die phpMyAdmin Oberfläche eine neue leere Datenbank und einen Datenbanknutzer, der auf diese Datenbank Vollzugriff/All Privileges hat.
Anschließend zieht ihr euch das nützliche Tool BigDump. Das ist im Endeffekt nur eine .php Datei.
Die öffnet ihr mit einem Editor und füllt die paar Zeilen aus: Server (bei shared so gut wie immer localhost), Datenbankname, Username, Userpasswort und der Dateiname der zu importierenden Datei. Die Kodierung ist meistens utf8 bei SQL Exports, passt das falls nötig auch noch an.
große datenbanken importieren bigdump config Große Datenbanken in MySQL importieren mit BigDump

Dann müsst ihr diese Datei zusammen mit dem Datenbankbackup auf den Server laden, am besten einfach in das Root html Verzeichnis. Im Anschluss die .php Datei im Browser aufrufen und mit "Start Import" geht's los. Eine 30MB SQL Datei wurde bei mir in etwa 1 Sekunde importiert.
große datenbanken importieren bigdump process start 210x56 Große Datenbanken in MySQL importieren mit BigDumpgroße datenbanken importieren bigdump process finished 210x127 Große Datenbanken in MySQL importieren mit BigDump

Erledigt. Nicht vergessen danach die 2 Dateien wieder vom Server zu löschen.

Es gibt bestimmt noch andere Tools, die diesen Job erledigen. Solltet ihr jedoch Probleme mit diesen Workarounds haben, fragt doch vielleicht einfach mal euren Hoster, ob er nicht den Import übernehmen kann. Vorher die Backup Datei auf den Server laden, die meisten Hoster sind da hilfsbereit und machen das sogar kostenlos.

Quellen:via, via

Windows Explorer: gespeicherte FTP Passwörter/Accounts löschen

$
0
0

windows explorer delete saved ftp password credentials userdata Windows Explorer: gespeicherte FTP Passwörter/Accounts löschen
FTP Accounts/Passwörter des Windows Explorers löschen:
Registry (regedit.exe) starten und nach
HKEY_CURRENT_USER/Software/Microsoft/FTP/Accounts/[server]/[account]
ausschau halten.
Für ein Passwort Reset (zum Beispiel wenn “Passwort speichern” aktiv aber neues Passwort) den “Password” Datensatz in [account] löschen.
Um den kompletten Account mit allen Daten zu löschen entweder [server] komplett oder [account] löschen.

Windows 7 + Office 2007 Lizenzkey per Script auslesen

$
0
0

Ich habe heute ein Script zusammengebastelt, welches den Windows 7 und den Office 2007 Lizenz-Key des Computers ausliest und ihn in eine Textdatei speichert. Die Textdatei entspricht dem Computernamen zur einfachen Zuordnung von PC und Key. Das Script läuft komplett selbstständig, kann also z.B per Gruppenrichtlinie automatisch ausgeführt werden.
Code-Grundlage ist dieser Forum Post.rums.mydigitallife.info/threads/7520-How-to-decrypt-the-Pkey-that-found-in-the-registry-!?p=97357&viewfull=1#post97357″>dieser Forum Post. Diesen Code habe ich jedoch bereinigt, gekürzt und um die Erkennung von Office 2007 erweitert. Das Script erkennt außerdem, ob das System mit 32bit oder 64bit läuft und passt die Erkennung dementsprechend an.

Hier der Code:

Dim WshNetwork
Set WshNetwork = CreateObject("WScript.Network")
cName = WshNetwork.ComputerName
Set WshShell = CreateObject("WScript.Shell")
' detect processor architecture, returns 32 or 64
pa = GetObject("winmgmts:root\cimv2:Win32_Processor='cpu0'").AddressWidth
logpath = "\\server\path\to\log\"

' ----------- Windows 7 Key -----------
wkey = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\"
wdigitalId = WshShell.RegRead(wkey & "DigitalProductId")
wProductName = "Product Name : " & WshShell.RegRead(wkey & "ProductName") & vbNewLine 
wProductId   = "Product Id   : " & WshShell.RegRead(wkey & "ProductId") & vbNewLine 
wProductKey  = "Install Key  : " & Converted(wdigitalId)

wProductId = wProductName & wProductId & wProductKey
' ----------- Windows 7 END -----------

' ----------- Office 2007 Key -----------
'32bit or 64bit?
If pa = "32" Then
	okey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\ Registration\{90120000-0011-0000-0000-0000000FF1CE}\DigitalProductID\"
Else
	okey = "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\12.0\Registration\{91120000-00CA-0000-0000-0000000FF1CE}\"
End if

odigitalId = WshShell.RegRead(okey & "DigitalProductID")
oProductName = "Product Name : " & WshShell.RegRead(okey & "ProductName") & vbNewLine 
oProductId   = "Product Id   : " & WshShell.RegRead(okey & "ProductId") & vbNewLine 
oProductKey  = "Install Key  : " & Converted(odigitalId)

oProductId = oProductName & oProductId & oProductKey
' ----------- Office 2007 END -----------

Save()

Function Converted(id)
    Const OFFSET = 52
    i = 28
    Chars = "BCDFGHJKMPQRTVWXY2346789"
    Do
        Cur = 0
        x = 14
        Do
            Cur = Cur * 256
            Cur = id(x + OFFSET) + Cur
            id(x + OFFSET) = (Cur \ 24) And 255
            Cur = Cur Mod 24
            x = x -1
        Loop While x >= 0
        i = i - 1
        Converted = Mid(Chars, Cur + 1, 1) & Converted
        If (((29 - i) Mod 6) = 0) And (i <> -1) Then
            i = i -1
            Converted = "-" & Converted
        End If
    Loop While i >= 0
End Function

Function Save()
  Set file = CreateObject("Scripting.FileSystemObject").CreateTextFile(logpath & cname,2,0)
  file.Writeline(FormatDateTime(Date, vbLongDate) & vbNewLine)
  file.Writeline(wProductId & vbNewLine) 'Windows 7
  file.Writeline(oProductId & vbNewLine) 'Office 2007
  file.close
End Function

Ergebnis:
windows 7 office 2007 key reading decrypting script Windows 7 + Office 2007 Lizenzkey per Script auslesen

Den Logpath in Zeile 7 müsst ihr anpassen. Ihr könnt diese Zeile auch komplett entfernen und die Zeile 61 anpassen (“logpath &” entfernen), dann wird die Logdatei immer im selben Ordner mit der .vbs erstellt. Dann ist das Script allerdings nicht mehr GPO tauglich. Für GPO Verteilung via Computer-Startscript müsst ihr den Pfad im Script explizit angeben.

Hinweis: Die Erkennung des Windows Keys funktioniert bei der Enterprise Version voraussichtlich nicht. Bei Windows Server 2008 R2 (Standard) funktioniert es.
Es ist etwas erschreckend wie schlecht die Keys geschützt waren. Ich weiß nicht, ob sich diese Methode auch für andere Versionen von Windows oder Office verwenden ließe. Vielleicht ist hier ein ITler mit WinXP, Office 2k3 o.Ä. und schaut mal in der Registry nach.

3 Wege die Windows Indizierung zurückzusetzen: von Hand / Registry / Script

$
0
0

Die Windows Indizierung verbessert die Windows Suche und ergänzt sie um Dateien, Dateiinhalte und sogar E-Mails, Kalendereinträge und andere Daten, falls Microsoft Produkte wie Outlook genutzt werden.
Sollte es bei der Suche (sowohl in Windows als auch in Outlook) zu Problemen kommen, hilft das Zurücksetzen der Windows Suche bzw. das Neuerstellen des Suchkatalogs.

Händisch:
Dies geht relativ einfach über Start -> Indizierungsoptionen -> Erweitert -> Neu erstellen.
Dadurch wird der Suchkatalog gelöscht und alle gespeicherten Orte neu indiziert.

Für Administratoren ist es aber viel wichtiger, diese Aktion verteilen zu können. Dafür gibt es eine Registry Lösung, die bewirkt, dass die komplette Windows Suche zurückgesetzt wird. Hierbei werden alle Orte gelöscht, Einstellungen zurückgesetzt und der Katalog neu erstellt.

Registry:
Der Schlüssel HKLM\SOFTWARE\Microsoft\Windows Search enthält das Wertepaar “SetupCompletedSuccessfully”, welches für gewöhnlich auf “1″ gestellt ist. Den Wert auf 0 zu setzen kommt einem Reset des Dienstes gleich.

Am besten eignet sich hierfür ein Script:

@echo off
color 9f
setlocal
set wd=\\server\folder
set regEL=9

if exist %wd%\complete\%computername% goto end

REM stop windows search service
net stop wsearch

REM reset search settings/catalog by resetting reg key
reg add "HKLM\SOFTWARE\Microsoft\Windows Search" /f /v "SetupCompletedSuccessfully" /t REG_DWORD /d "0"
set regEL=%errorlevel%

REM start windows search service
net start wsearch

echo %date% %time:~0,8% - %computername% reset windows search, errorlevel: %regEL% >> %wd%\reset-windows-search.log
md %wd%\complete\%computername%

:end
endlocal

MST Änderungen einer MSI mit Orca anzeigen

$
0
0

Viele komplexere Windows Installationen werden von .msi Installern durchgeführt. Diese MSI Datenpakete sind oftmals datenbankähnliche Datenstrukturen, die Informationen und Dateien für eine Installation bereithalten. Der Vorteil dieser Installer ist, dass sie sich, im Gegensatz zu .exe Dateien, einsehen und anpassen lassen. Änderungen an MSI Daten können direkt in der MSI, oder als extra Datei in Form einer .mst Datei, abgespeichert werden. So kann eine Grundinstallation in verschiedenen Formen, also eine .msi mit verschiedenen .mst Anpassungen, ausgeliefert werden.

Mit dem kleinen (retired) Microsoft Tool Orca (Parameter) lassen sich nicht nur .msi Dateien anpassen, sondern auch bestehende .mst Dateien anwenden und analysieren.

orca msi editor standard 460x281 MST Änderungen einer MSI mit Orca anzeigen

Über den Menüpunkt Transform kann man nun neue Änderungsdateien erstellen und speichern oder bestehende laden. Das ist besonders praktisch wenn man eine .mst nicht selber erstellt hat und nachsehen möchte, was konkret verändert wurde.
Beispiel: Adobe Produkte, wie z.B. der Reader oder Acrobat Professional, werden für gewöhnlich vor der Verteilung im Unternehmen mit dem Tool “Adobe Customization Wizard” angepasst. Dieses Tool erstellt mit den gewünschten Anpassungen (Sprache, Pfad, Serial usw.) eine fertige .mst Datei, mit der man die Verteilung starten kann. Mit Orca kann man nun vorher diese .mst Datei laden und nachsehen, ob soweit alles stimmt.

orca msi editor mst transform file view 460x281 MST Änderungen einer MSI mit Orca anzeigen

Im Fenstertitel sind die verknüpften .msi und .mst Dateien vermerkt, in der Oberfläche sind angepasste, hinzugefügte und entfernte Daten grün markiert. Nützlich, was?

Ich komme später nochmal darauf zurück, in welchen Fällen das besonders sinnvoll sein kann icon wink MST Änderungen einer MSI mit Orca anzeigen

Adobe Reader Deployment via Startscript im AD – inklusive Anpassung, Cleaning, Logging, MSI Tipps & mehr

$
0
0

Ziel ist es, die aktuellste Version Adobe Reader auf allen Computern eines AD Netzwerks zu verteilen. Es handelt sich um die Version 11.0.04.63, die speziell angepasst (deutsche Sprache, keine EULA, paar Features deaktiviert) installiert werden soll. Da ich bei diesem Prozess auf verschiedenste Fehler und Probleme stieß, werde ich die Verteilung hier detailliert erläutern.

Seit 2010/2011 gibt es ja den Hintergrundupdater in Adobe Produkten. Eigentlich gehören Verteilungen dieser Art also der Geschichte an. Jedoch kann es trotzdem notwendig werden, wenn erstmal eine Basis geschaffen werden muss, weil beispielsweise kein einheitlicher Standard des Produkts installiert ist. Einige haben Version X, andere Version Y, einige PCs haben die Software nicht einmal installiert. In diesem Fall ist ein komplettes Rollup inklusive Cleaning, also Deinstallation aller Versionen vor der Verteilung, sinnvoll und empfehlenswert.

Wie üblich gibt es mehrere Herangehensweisen, bei Adobe habe ich im Laufe der Jahre folgende Methode als sicherste empfunden:
Installer laden -> AIP lokal erstellen -> Patches slipstreamen -> mit Customization Wizard anpassen -> mit Orca optimieren -> Verteilen,
wobei der Verteilen-Punkt je nach Produkt und Situation natürlich zwischen Script oder GPO Installation unterschieden wird.
Das hier sagt Adobe zu den “Best Practices”.

Schritt 1: Installer laden

Adobe bietet für ihre Produkte teilsweise 2 verschiedene Downloadseiten an. Die typisch einfache Seite und die Seite für Administratoren, hier am Beispiel vom Reader (bei Acrobat ist das ebenfalls so).
adobe reader scriptbased deployment mst changes cleaning logging installer Adobe Reader Deployment via Startscript im AD   inklusive Anpassung, Cleaning, Logging, MSI Tipps & mehrIhr braucht natürlich das komplette Paket: 11.0.0 Basis plus aktuellstes Update, am besten in der MUI Variante.
Für die Pro’s auch ohne viel Schickschnack via FTP.

Schritt 2: AIP erstellen

Falls die Grundversion (z.B. 11.0.0) eine .zip Datei war, entpackt diese. Geht per CMD in diesen Ordner und führt den Befehl
msiexec /a "AcroRead.msi"
Der Installer startet, installiert am besten lokal, C:/Reader11/ oder so. AIP fertig!

Schritt 3: Patches integrieren

Geht per CMD in den Ordner des Updates und führt den Befehl aus:
msiexec /a "C:/Reader11/AcroRead.msi" /p "AdbeRdrUpd11004_MUI.msp"
(ihr müsst natürlich Pfade und Dateinamen entsprechend anpassen…)
Der grafische Installer für den Patch erscheint, durchklicken, fertig. Verfahrt so mit allen Patches, wenn ihr mehrere habt. Für gewöhnlich lässt sich aber das aktuellste Update auf die Basisversion anwenden, mehr dazu steht auf der Detailseite des Updates bei den “Installation Instructions” (“This update requires that Adobe Reader 11.0 MUI or later is installed on your system.”).
adobe reader scriptbased deployment mst changes cleaning logging update slipstream 460x120 Adobe Reader Deployment via Startscript im AD   inklusive Anpassung, Cleaning, Logging, MSI Tipps & mehr

Schritt 4: mit dem Customization Wizard anpassen

Wie bei Acrobat kann man auch den Reader mit dem Adobe Customization Wizard anpassen:
adobe reader scriptbased deployment mst changes cleaning logging customization wizard 460x399 Adobe Reader Deployment via Startscript im AD   inklusive Anpassung, Cleaning, Logging, MSI Tipps & mehr
EULA deaktivieren, Sprache wählen, Deinstallation alter Versionen aktivieren, paar Online Features deaktivieren, Shortcuts anpassen, tobt euch aus und speichert das Ergebnis als MST Anpassungsdatei ab.

Fertig, ihr habt jetzt eine geupdatete AIP Installation, C:/Reader11. Die könnt ihr auf das Netzlaufwerk schieben. Dazu die gerade erstellte MST. Beides zusammen könnt ihr nun Verteilen. Entweder via GPO Softwareinstallation oder per Script. Letzteres bevorzuge ich aus Gründen der Funktionalität.
Kommen wir also zum letzten Schritt.

Schritt 5: Verteilung via Script

Hier wird es nochmal spannend.
Das Installer-Script
- hat einen Clientfilter, kann also einzelne Rechner zulassen oder ignorieren
- räumt alte Reader Installationen auf (Version 9 und 10) – siehe Acrobat & Reader Cleaner Tools
- besitzt umfangreiche Logging-Möglichkeiten
- reagiert auf die Fehlercodes 1618 (Installer Prozess wird gerade verwendet), 1602 (Installation vom Nutzer abgebrochen) und 1603 (Installationsfehler) mit einem Retry nach 5 Minuten

Stand: 15.01.2014 (Reader 11.0.06), working

@echo off & Color 9f & setlocal
set wd=\\lea\Deployment\Software\Reader
set log=%wd%\reader-log.txt
set readerEL=999
set retry=0
set forcecleanup=yes
REM ******************
set version=11.0.06
REM ******************

REM Clientfilter: nur die Computer aus der allowedPCs.txt dürfen installieren
::for /f %%f in (%wd%\allowedPCs.txt) do if "%computername%"=="%%f" goto start
::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

:start
if not exist %wd%\deploy\%version%\complete md %wd%\deploy\%version%\complete
if exist %wd%\deploy\%version%\complete\%computername% goto end

if "%forcecleanup%"=="yes" goto cleanup
goto install

:cleanup
echo %date% %time:~0,8% - %computername% deinstalliert alle Reader Versionen... >> %log%
REM uninstall all reader versions
start /w %wd%\cleaner\reader-cleaner-9.exe /silent /product=1
start /w %wd%\cleaner\reader-cleaner-10-above.exe /silent /product=1
echo %date% %time:~0,8% - %computername% hat alle Reader Versionen deinstalliert... >> %log%
goto install

:install
echo %date% %time:~0,8% - %computername% startet die Installation... >> %log%
start /w msiexec /i "%wd%\deploy\%version%\AcroRead.msi" /qn TRANSFORMS="%wd%\deploy\%version%\AcroRead-deu.mst"
set readerEL=%errorlevel%

if %readerEL%==1618 goto retry REM msiexec process in use, installation already in progress
if %readerEL%==1602 goto retry REM user canceled installation
if %readerEL%==1603 goto retry REM fatal error, some use it for "already installed" (eg. java)
echo %date% %time:~0,8% - %computername% hat die Installation abgeschlossen, Errorlevel: %readerEL%... >> %log%
if %readerEL%==0 md %wd%\deploy\%version%\complete\%computername%
goto end

:retry
if %retry%==1 goto retryfailed
echo %date% %time:~0,8% - %computername% hat die Installation abgeschlossen, Errorlevel: %readerEL%, retry in 5min... >> %log%
set retry=1
ping localhost -n 300 > nul
goto install

:retryfailed
echo %date% %time:~0,8% - %computername% hat die Installation abgeschlossen, Errorlevel: %readerEL%, retry failed, end >> %log%
goto end

:end
endlocal

Damit das Script funktioniert, braucht ihr allerdings eine spezielle Ordnerstruktur. Ich skizziere sie mal eben schriftlich, ggf. mit Dateien:
Reader\cleaner\reader-cleaner-10-above.exe (Cleanup Tools, umbenannt)
Reader\cleaner\reader-cleaner-9.exe (Cleanup Tools, umbenannt)
Reader\deploy\[version](die in der Batch als Variable gesetzt wird)\[Dateien: AIP,.mst,usw]
Reader\deploy\[version]\complete\

Wenn ihr also in der Batch beispielsweise die Version 11.0.04.63 verteilen wollt, tragt die Version in Zeile 11 so ein und der Ordner lautet:
Reader\deploy\11.0.04.63\
adobe reader scriptbased deployment mst changes cleaning logging deploy dir Adobe Reader Deployment via Startscript im AD   inklusive Anpassung, Cleaning, Logging, MSI Tipps & mehr

Hier ein Beispielausschnitt der Logdatei:
adobe reader scriptbased deployment mst changes cleaning logging logfile 460x170 Adobe Reader Deployment via Startscript im AD   inklusive Anpassung, Cleaning, Logging, MSI Tipps & mehr

Probleme mit der Sprache?

acrobat multilanguage tests Adobe Reader Deployment via Startscript im AD   inklusive Anpassung, Cleaning, Logging, MSI Tipps & mehrIst das Produkt trotz Anpassung nicht auf Deutsch? Das Problem hatte ich auch und habe einige Stunden mit verschiedensten Tests an der MST, der setup.ini und den MSI Parametern verbracht. So richtig klar wurde mir das alles nicht, ich habe nun aber einige Anpassungstipps, die das Sprachproblem beheben sollten. Lest vorher nochmal die paar Infos des Admin Guides zu den Sprachen, das erleichtert das Verständnis der folgenden Punkte.

Also, MSI in Orca laden, über Transform -> “Apply Transform” die angepasste MST des Customization Wizards laden und ab in die Property Tabelle.
(Das ginge übrigens auch über den Customization Wizard -> Direct Editor)
Schaut hier nach folgenden Schlüsseln und passt diese ggf. an, um die deutsche Sprache einzustellen:

Property alter Wert neuer Wert
ProductLanguage 1033 1031
ISLANGFLAG en_US de_DE
ProductCode {AC76BA86-7AD7-FFFF-7B44-AB0000000001} {AC76BA86-7AD7-1031-7B44-AB0000000001}

(zum Product Code lest bitte den Admin Guide)
Speichert diese Anpassungen über Transform -> Generate Transform am besten in einer seperaten MST.

Editiert dann die setup.ini vorsichthalber, sodass sie nur noch die deutsche Sprache und die neue Transorm enthält:
adobe reader scriptbased deployment mst changes cleaning logging setup ini 210x209 Adobe Reader Deployment via Startscript im AD   inklusive Anpassung, Cleaning, Logging, MSI Tipps & mehr
[Product]
msi=AcroRead.msi
Languages=1031
1031=German (Germany)
CmdLine=TRANSFORMS="AcroRead-deu.mst"

Installiert dann den Reader entsprechend dem oben gezeigten Script, dann sollte die Installation die Anpassungen der MST beinhalten und auf deutsch sein.

Kürzer, schneller, härter

Die richtigen Pro’s werden bei den ersten Schritten den Kopf schütteln, “das geht ja alles viel einfacher, schneller, in weniger Schritten” usw.
Ja, man kann die Anpassungen, AIP und Patches mit viel weniger Schritten abarbeiten. Der Admin Guide hat an vielen Stellen diese komplizierteren Schritte beschrieben.
2 Beispiele:
Gleich am Anfang nach dem Download per Customization Wizard die Version angepasst und dann direkt diesen Befehl genutzt:

msiexec /i AcroRead.msi PATCH="AdbeRdrUpd11001.msp; AdbeRdrSecUpd11002.msp" TRANSFORMS="AcroRead.mst"

Damit wird der angepasste Reader installiert und daraufhin mit den Patches versehen. Mehrere Patches lassen sich wie gezeigt aneinanderreihen, die Pfade sollte man lieber noch ergänzen; habe ich der Übersicht wegen weggelassen.
Oder: alternativ kann man ohne Anpassung auch die wichtigsten Eigenschaften direkt bei der Installation mit den Property-Parametern setzen:

msiexec /i AcroRead.msi PATCH="AdbeRdrUpd11004_MUI.msp" LANG_LIST=de_DE SUPPRESSLANGSELECTION=1 REMOVE_PREVIOUS=YES EULA_ACCEPT=YES SYNCHRONIZER=NO

Die CMD Möglichkeiten beim Erstellen des AIP und der Installation sind vielfältig, aber benötigen auch weit mehr Expertise.
Außerdem machen sie die Fehlersuche viel komplizierter, sollte es während eines 1-Liner zu einem Fehler kommen.
Ich war deswegen immer der Freund von ausführlichen Schritt-für-Schritt Herangehensweisen. Entscheidet selbst.

Clientfilter – Scriptausführungen für einzelne Computer erlauben/verbieten

$
0
0

Um einzelne Computer für die Ausführung eines bestimmten Scripts ein- bzw. auszuschließen, verwende ich seit Langem in fast allen produktiven Scripts einen – von mir so benannten – “Clientfilter“. In einem alten Beitrag hatte ich die zugrunde liegende Technik bereits erklärt, möchte das jetzt nochmal ein wenig ausführlicher, in 2 verschiedenen Ausführungen, zeigen.

Das Prinzip müsste klar sein: eine Textdatei enthält einen oder mehrere Computernamen, 1 pro Zeile. Der Clientfilter vergleicht den Computernamen des ausführenden Computers mit jeder Zeile der Textdatei und reagiert entsprechend.

Zwei typische Anwendungen baue ich immer in die Scripte mit ein:

Fall 1: nur bestimmte Computer dürfen ausführen

In einem Unternehmen mit XXX Computern möchte ich ein neues Script vorerst testen. Dazu soll dieses Script erst einmal nur von 1 oder 2 Computern gestartet werden können. Ich konfiguriere also folgenden Clientfilter:

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

:nextstep
...
:end
...

Das Script prüft also an dieser Stelle, ob der ausführende Computer(name) in der allowedPCs.txt Datei im %wd% Verzeichnis vorhanden ist. Wenn ja, geht es zur Sprungmarke nextstep, wenn nicht, zu end. Somit erlaube ich das Script nur für einzelne aus einer Gruppe von vielen Rechnern.

Fall 2: nur bestimmte Computer dürfen nicht ausführen

Nun habe ich das Script also getestet und möchte es auf XXX Computer installieren. Dabei möchte ich aber einzelne Rechner ausschließen. Hierfür ist folgender Clientfilter gedacht:

set wd=\\server\working\dir
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
goto nextstep

:nextstep
...
:end
...

Das Script wird also von allen Computern ausgeführt, deren Name nicht in der deniedPCs.txt steht. Ist die deniedPCs.txt leer, so wird das Script von allen Computern ausgeführt.

Beides baue ich in meine Scripte ein und kommentiere den gerade nicht benötigten Bereich aus.
clientfilter script execution check standard 460x114 Clientfilter   Scriptausführungen für einzelne Computer erlauben/verbieten

clientfilter script execution check standard files Clientfilter   Scriptausführungen für einzelne Computer erlauben/verbietenSomit ist es für meine Verteilungen also normal, wenn neben dem Script auch immer diese beiden Textdateien allowedPCs.txt und deniedPCs.txt im Verzeichnis enthalten sind. In der allowedPCs.txt stehen meisten die Testrechner, die deniedPCs.txt ist meistens leer.


scriptbasiertes Java Deployment im AD – flexibel erweiterbar, Logging, Retry

$
0
0

Java, ein Grundpfeiler von Windows PCs, der schnell bröckelt und regelmäßig aktualisiert werden muss. Fast immer installiert und leider oftmals nicht auf dem neuesten Stand, wodurch sehr schnell sehr große Sicherheitslücken entstehen können; denn Java wird gerne von Exploits ausgenutzt.

Ein flexible, schnell konfigurierte und scriptbasierte Java Verteilung soll dieses Problem und den damit verbundenen Aufwand auf ein Minimum reduzieren.
Bei dieser wird ein Startscript im AD auf den Zielcomputern, die vom Clientfilter akzeptiert werden, Java sowohl in der 32bit als auch in der 64bit Version installieren.
Die Installation beider Bit-Varianten ist notwendig, da die meisten Browser immernoch ausschließlich als 32bit Fassung existieren. Ein 32bit Browser würde selbst auf einem 64bit System mit installiertem 64bit Java keine existierende Java Installation finden.

Der Aufbau

java deployment working dir neu scriptbasiertes Java Deployment im AD   flexibel erweiterbar, Logging, Retry
Bei einem neuen Java Update werden die beiden .exe Installer benötigt, diese müssen entsprechend dem Muster im Bild umbenannt werden. Abschließend müssen noch 2 Zeilen im Script angepasst werden. Das ist der komplette “Aufwand”, wenn ein neues Java Update veröffentlicht wird.

Das Script

Stand: 15.01.2014 (Java 7u51), working

@echo off && color 9f && setlocal
set wd=\\lea\Deployment\Software\Java
set javaEL32=9
set javaEL64=9
set javaregEL32=9
set javaregEL64=9
set retry=0
set instversion=0
set pa=%processor_architecture%
REM ### HIER VERSION NACH UPDATE ANPASSEN ###
set main=7
set update=51
REM ############
set version=%main%u%update%
set versionlog=%wd%\%version%\all-%version%.log
set alllog=%wd%\java-all.log

REM Clientfilter: nur die Computer aus der allowedPCs.txt dürfen installieren
::for /f %%f in (%wd%\allowedPCs.txt) do if "%computername%"=="%%f" goto check
::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
if not exist %wd%\%version% md %wd%\%version%
REM complete Ordner ersetzt durch Registry Versionskontrolle
::if exist %wd%\%version%\%computername% goto end

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
if not "%instversion%"=="1.%main%.0_%update%" goto install
echo %date% %time:~0,8% - %computername% hat bereits %instversion% installiert >> %alllog% 
echo %date% %time:~0,8% - %computername% hat bereits %instversion% installiert >> %versionlog% 
goto end

:install
echo %date% %time:~0,8% - %computername% installiert >> %versionlog%
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 REBOOT=REALLYSUPPRESS /norestart REBOOT=SUPPRESS 
set javaEL32=%errorlevel%
start /w %wd%\%version%-64.exe /s WEB_JAVA=1 REBOOT=REALLYSUPPRESS /norestart REBOOT=SUPPRESS 
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?
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment" /f "%update%" /k
set javaregEL32=%errorlevel%
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment" /f "%update%" /k
set javaregEL64=%errorlevel%

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

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)
if "%javaregEL32%%javaregEL64%"=="00" md %wd%\%version%\%computername%
goto end

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

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

:end
endlocal

Erläuterung:
Wichtig sind die Zeilen 10 und 11. Hier tragt ihr bitte die Java Version ein. Hauptversionsnummer, getrennt von der Updatenummer. Die .exe Installer dieser Version müssen folgendermaßen umbenannt werden: [Hauptversion]u[Update]-[bit].exe, also 7u40-32.exe und 7u40-64.exe für die aktuelle Java Version 7 Update 40.
Nach dem Clientfilter in Zeile 15-20 wird in Zeile 23 nach dem complete Ordner geschaut. Existiert dieser, wird das Script übersprungen.
In Zeile 25 wird ein Unterordner für das zu verteilnde Update erstellt, falls dieser noch nicht existiert. In diesem werden seperat eine Logdatei und complete Ordner erstellt. Eine Logdatei im Hauptverzeichnis enthält alle Installation aller Updates, die Logdatei im Unterverzeichnis des Updates enthält natürlich nur alle Installation dieser einen Update Version.
Dann werden beide Java Versionen in den Zeilen 31-34 installiert und die Errorlevel gespeichert.
Nach einer 10 Sekunden Pause (Zeile 36) wird anhand der Registry überprüft, ob die Java Installationen erfolgreich durchgelaufen sind. Alle Errorlevel werden in Zeile 44/45 zusammen mit einigen Informationen in beide Logdateien geschrieben.
Die Zeilen 47-65 realisieren einen Neuversuch der Installation, sollte bei der Installation einer der beiden Java Bit-Versionen einer der 3 häufigsten Fehlercodes 1618, 1602 oder 1603 aufgetreten sein. In diesem Fall wartet das Script 5 Minuten und unternimmt dann einen weiteren Versuch ab der Sprungmarke install. Sollte dieser erste Neuversuch ebenfalls scheitern, wird das mit Zeile 64 entsprechend auffällig in der Logdatei vermerkt.

Eigentlich ganz verständlich glaube ich. Bei Fragen, schreibt mir.

Systemsteuerung -> Mail (32bit) funktioniert nicht mehr oder ist nicht vorhanden

$
0
0

Das Systemsteuerungselement “Mail (32bit)” dient der einfachen Konfiguration der E-Mail Konten und Eigeschaften von Outlook. Diese Einstellungoberfläche ist teilweise sogar zwingend erforderlich, da z.B. systemsteuerung mail 32bit funktioniert nicht groß Systemsteuerung  > Mail (32bit) funktioniert nicht mehr oder ist nicht vorhandenneue E-Mail (Exchange) Konten nicht während des Betriebes von Outlook eingerichtet werden können. Umso ärgerlicher, wenn beim Klick auf das Element nichts passiert oder es in der Übersicht der Systemsteuerung nicht vorhanden ist.
 Systemsteuerung  > Mail (32bit) funktioniert nicht mehr oder ist nicht vorhanden

Es gibt ein paar Tipps, die helfen können, das wieder in den Griff zu bekommen:

Den Mail Dialog manuell öffnen:

Sucht im Installationordner von Office, beispielsweise c:\Program Files (x86)\Microsoft Office\Office12\, nach der Datei MLCFG32.CPL. Diese müsste existieren und beim Doppelklick das gewünschte Mailkonfigurationsfenster öffnen. Ihr könnt diesen Dialog jederzeit auf diesem Weg öffnen.

Eine neue Verknüpfung erstellen:

Egal, ob das Element “Mail (32bit)” nicht funktioniert oder gar nicht vorhanden ist, ihr könnt euch einfach selber eine Verknüpfung erstellen, diese macht dann genau das gleiche wie die Verknüpfung in der Systemsteuerung.
Erstellt eine neue Verknüpfung, beispielsweise auf dem Desktop oder in einem Ordner eurer Wahl, und tragt als Ziel die MLCFG32.CPL Datei aus eurem Office Installationsordner ein.
Dann könnt ihr noch in den Eigenschaften der Verknüpfung mit “Anderes Symbol…” eine passenderes Icon wählen.

systemsteuerung mail 32bit funktioniert nicht shotcut Systemsteuerung  > Mail (32bit) funktioniert nicht mehr oder ist nicht vorhanden

Systemsteuerungselement reparieren:

Am wahrscheinlichsten wird eine Office Reparatur das Problem beheben. Geht dazu in die Systemsteuerung zu euren installierten Programmen, Rechtsklick auf euer Office, “Ändern” und wählt Reparieren.
systemsteuerung mail 32bit funktioniert nicht outlook repair 460x50 Systemsteuerung  > Mail (32bit) funktioniert nicht mehr oder ist nicht vorhanden
Startet nach der Installation euren Rechner neu.

Sollte das Element immernoch nicht funktionieren, überprüft bitte folgenden Registry Key:

HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\Microsoft Outlook\shell\Properties\command

Dieser sollte auf die CPL Datei in eurem Office Verzeichnis hinweisen, mit ein paar Wörtern davor.
Der Inhalt sollte also in etwa so aussehen:

rundll32.exe shell32.dll,Control_RunDLL "C:\PROGRA~2\MICROS~1\Office12\MLCFG32.CPL"

Ihr könnt die Richtigkeit des Pfades überprüfen, in dem ihr diesen einfach kopiert und in Start -> Ausführen eintragt.
systemsteuerung mail 32bit funktioniert nicht test office path Systemsteuerung  > Mail (32bit) funktioniert nicht mehr oder ist nicht vorhanden
Dies sollte den gewünschten Dialog öffnen.

Windows Explorer – Computer oder Laufwerk statt Bibliotheken anzeigen

$
0
0

Eine Sache stört mich bei neu installierten Computern oft: die Windows Explorer Verknüpfung in der Taskleiste öffnet die Übersicht der – meiner Ansicht nach – völlig sinnlosen Bibliotheken.
windows explorer computer statt bibliotheken ansicht Windows Explorer   Computer oder Laufwerk statt Bibliotheken anzeigen

Ein simples Problem mit einer ebenso einfachen Lösung:
Rechtsklick auf die Explorer Verknüpfung -> Eigenschaften -> an das Ziel folgenden String anhängen:

/e,::{20d04fe0-3aea-1069-a2d8-08002b30309d}

windows explorer computer statt bibliotheken verknüpfung ziel 198x300 Windows Explorer   Computer oder Laufwerk statt Bibliotheken anzeigen windows explorer computer statt bibliotheken computer 210x99 Windows Explorer   Computer oder Laufwerk statt Bibliotheken anzeigen

Problem gelöst!

Für die Ansicht einer bestimmten Partition mit dem Explorer nutzt ihr eine Verknüpfung mit mit diesem Ziel:

%windir%\explorer.exe /e, /root, c:

windows explorer computer statt bibliotheken laufwerk c Windows Explorer   Computer oder Laufwerk statt Bibliotheken anzeigen

Mich persönlich stört es weniger, da ich sowieso den Total Commander anstelle des Windows Explorers nutze. Ein Tipp für alle IT-versierten Nutzer! Etwas Umgewöhnung ist nötig aber das Tool ist pure Power, wenn man es beherrscht.

E-Mail Adressen validieren und E-Mail Fehlermeldungen analysieren

$
0
0

Wer viel mit E-Mails zu tun hat, also nicht 10 am Tag sondern eher Dutzende oder Hunderte, wird immer öfter auf E-Mail Fehlermeldungen stoßen, die vom Mailserver zurückgeschickt werden. Oder vielleicht möchte man die Herkunft seltsamer E-Mail Adressen prüfen. Ich habe mal ein paar Dienste und Fälle zusammengetragen.

Wie erkenne ich E-Mail Fehler, wo sehe ich die Fehlermeldung?

Beispiel Szenario:
e mail adressen verifizieren fehler analysieren server error 140x163 E Mail Adressen validieren und E Mail Fehlermeldungen analysierenIch bekomme eine E-Mail von einer fremden Person und schicke eine Antwort darauf. Einen kurzen Moment später kommt eine neue E-Mail im Postfach an, eine Fehlermeldung vom “MAILER-DAEMON”. (“Daemon” sind in der IT für gewöhnlich Programme oder Dienste, die dauerhaft im Hintergrund aktiv sind und bestimmte Aufgaben ausführen.) Der Mailserver hat also eine automatische E-Mail geschickt, der Inhalt könnte beispielsweise so aussehen:
In dem Text sind eigentlich nur 3 Stellen interessant:
mail system at host mail.special-host.de – hier steht, nur so als zusätzliche Info, der Name meines eigenen E-Mail Servers.
message could not be delivered – tja, das dachte ich mir schon fast.
Und jetzt wird es spannend, die Fehlermeldung:
: host mx00.kundenserver.de[212.227.17.175] said: 550
: invalid address (in reply to RCPT TO command)

Diese Fehlermeldung möchte mir etwas sagen. Und bevor man direkt abwinkt, nach dem Motto “das verstehe ich eh nicht”, empfiehlt es sich doch diese Nachricht einfach mal zu lesen und zu übersetzen. Sie sind oftmals verständlich genug formuliert, um grobe Rückschlüsse ziehen zu können. Wie in diesem Beispiel, in dem “invalid address” vermuten lässt, dass an der E-Mail Adresse etwas nicht stimmt.

Es gibt aber viele andere Fehlermeldungen, manchmal weniger verständlich:

: host mail.*******.de[**.13.128.154] said: 550 5.7.1
: Recipient address rejected: Mail appeared to be SPAM
or forged. Ask your Mail/DNS-Administrator to correct HELO and DNS MX
settings or to get removed from DNSBLs

--

: host ****.*******.de[**.211.115.6] said: 553
Your IP is BLACKLISTED at UCEPROTECT-LEVEL 1 - See http://www.uceprotect.net/rblcheck.php?ipr=***.83.112.87

--

: delivery temporarily suspended: host
mx-eu.mail.****.net[**.125.69.79] refused to talk to me: 421 4.7.1
[TS03] All messages from ***.75.110.146 will be permanently deferred;
Retrying will NOT succeed. See http://postmaster.yahoo.com/421-ts03.html

--

: host *******.de[**.38.231.10] said: 554 5.7.1
: Relay access denied

Was tun bei Fehlern? Wo liegt das Problem?

e mail adressen verifizieren fehler analysieren host whois 140x172 E Mail Adressen validieren und E Mail Fehlermeldungen analysierenIn der Fehlermeldung steht eigentlich immer der Host, ob nun mit Name oder nur mit IP, der diese Fehlermeldung zurückgab. Also der Mailserver der Gegenseite. Über diesen lassen sich per WHOIS Abfrage weitere Informationen zursammentragen, hier im Beispiel von kundenserver.de:
Hier wird also schnell ersichtlich, dass der E-Mail Server der betroffenen Adresse zu 1und1 gehört. Manchmal kann das schon helfen Anbieter zu identifizieren, die unseriös oder gar nicht mehr existent sind.

Jetzt wo der Fehler bekannt ist, stellt sich die Frage: was kann ich tun?! Und liegt der Fehler an mir oder auf der anderen Seite?
Beide Fragen lassen sich oftmals leider nur durch Lesen und Verstehen der Fehlermeldung beantworten, da gibt es natürlich keine generelle Antwort.
Es kann sicher auch schonmal helfen, den Fehler weiter zu analysieren und sich mehr Informationen zu holen. Dazu habe ich mal 4 verschiedene E-Mail Validation Dienste gesucht und mir die Fehlermeldungen des oben gezeigten Falles angesehen und verglichen:

verify-email.org – kurz und knackig

e mail adressen verifizieren fehler analysieren verify email org 460x161 E Mail Adressen validieren und E Mail Fehlermeldungen analysieren
Die Seite verify-email.org erkennt den DNS MX Eintrag, den Mailserver und testet die eingegebene E-Mail Adresse via Helo-From-To Konversation mit dem SMTP. Das Ergebnis wird kurz und knackig ausgegeben und farblich hervorgehoben. Ein guter Start um die vom Mailer-Daemon erhaltene Fehlermeldung zu überprüfen. Vermutlich wird die Ausgabe aber die gleiche sein.

verifyemailaddress.org – kurz und knackig #2

e mail adressen verifizieren fehler analysieren verifyemailadress org E Mail Adressen validieren und E Mail Fehlermeldungen analysieren
verifyemailaddress.org liefert ein klein wenig mehr Informationen als verify-email.org, beispielsweise MX Prioritäten und SMTP Server Ping vor der Konversation. Dies kann helfen, falls der Fehler noch vor/während der Kommunikation mit dem Server auftritt.

email-unlimited.com – mehr Infos und EHLO Command

email-unlimited.com bietet noch mehr Informationen, da die Informationen des 250er Reply Codes angezeigt werden. Außerdem nutzt der Dienst den erweiterten EHLO Befehl zur Kommunikation, wodurch eventuell andere Ergebnisse erzielt werden können. Auf der Webseite gibt es übrigens auch eine Software namens EMail Verifier Lite, mit der ihr diesen Prozess für viele Adressen gleichzeitig anstoßen könnt. Lohnt sich, wenn man das oft oder in Massen machen muss.
e mail adressen verifizieren fehler analysieren desktop software 460x246 E Mail Adressen validieren und E Mail Fehlermeldungen analysieren

email-checker.com – eine andere Fehlermeldung

Den Dienst tools.emai-checker.com nehme ich in die Liste mit auf, da er interessante zusätzliche Features bietet (Suche nach dem Besitzer der E-Mail Adresse, geografische Lage des Mailservers und mehr) und weil es als einzige Seite eine andere Fehlermeldung hervorbrachte:
MailboxTemporarilyUnavailable – Grey listing is in operation.
e mail adressen verifizieren fehler analysieren tools email checker com 460x278 E Mail Adressen validieren und E Mail Fehlermeldungen analysieren
Das hat mein Interesse geweckt. Denn wie anfangs erwähnt, bekam ich eine E-Mail von einer Adresse, auf die ich antwortete. Der Fehler “invaled address” ist also schon komisch, schließlich bekam ich schon einmal etwas von der Adresse. Diese erste Mail kann natürlich von einem Fake/PHP-Mailer stammen, es kann aber natürlich auch sein, dass der Mailserver oder die Domain von irgendeiner Art Blacklisting betroffen ist.
Dieser Dienst ist leider auf 3 Anfragen pro Tag begrenzt. Sonst hätte ich jetzt noch ein paar weitere Tests damit gemacht.

Letztendlich bleibt die Interpretation des E-Mail Fehlers eure Aufgabe, ich hoffe aber euch ein paar Analyseansätze gezeigt zu haben.

Copyright Symbol und Umlaute in Batch Konsolen-Ausgabe darstellen

$
0
0

Es gibt bestimmte Zeichen, die im Zeichensatz der Schriftart der Windows Konsole nicht vorhanden sind. Beispielsweise das Copyright Zeichen ©.
Auch Umlaute sind so eine Sache, das habe ich aber damals schon in einem Beitrag aufgeklärt.

Nach ersten Recherchen meinerseite kurz gefasst: nur mit Fummelei ist das Copyright Symbol in der deutschen Konsole möglich. Die Darstellung des Symbols inklusive Umlaute ist aber vom System, von der Konsole, der Schriftart der Konsole und anderen Faktoren abhängig. Eine 100% zuverlässige Lösung gibt es nicht. Für gewöhnlich arbeitet man, wenn nötig, mit (C)opyright oder (C)Copyright stattdessen.

Aber ich hätte keinen Blog, wenn ich nicht bis zum Erbrechen recherchieren und testen würde, bis mir eine Lösung gut genug gefällt.

Ich habe mir die Windows Standards angesehen und 1, 2 Stunden rumprobiert.
Das Copyright Zeichen und Umlaute gleichzeitig sind möglich, jedoch nur mit ein wenig Fummelei.

Wer einfach nur schnell wissen will wie es geht kann hier das Video dazu sehen, der letzte Code unten im Artikel ist die finale Version. Alle ITler sollten zum eigenen Verständnis weiterlesen.

| Hier habe ich ein Video eingebunden. Klicke hier um es anzusehen. |

Wie funktioniert das alles und warum?

Basteln wir uns eine neue Batch im Notepad++, echo rein, schauen was passiert:

echo ©
pause

Simpel, oder? Funktioniert nicht, was ein Wunder.
copyright symbol in batch simple try 2 Copyright Symbol und Umlaute in Batch Konsolen Ausgabe darstellen

Codepages (mehr dazu) sagen der CMD, mit welchem Zeichensatz die Batch Ausgaben dargestellt werden sollen. Über einen Trick, in dem das ® Zeichen aus der Codepage 1252 abgespeichert wird, lässt sich das © Zeichen in der deutschen Konsole (850 ist die normale westeuropäische Codepage) darstellen:

chcp 1252
set c=©
chcp 850
echo %c%

copyright symbol in batch codepage try 2 Copyright Symbol und Umlaute in Batch Konsolen Ausgabe darstellen
copyright symbol in batch codepage try 1 140x24 Copyright Symbol und Umlaute in Batch Konsolen Ausgabe darstellenErläuterung: Der selbe Hexadezimalcode, der in der Codepage 1252 also hinter ® steht, steht in der Codepage 850 hinter ©, was mit diesem Trick ausgenutzt wird.
Trick via

Das heißt, um jederzeit ein Copyright Symbol darstellen zu lassen genügt es die aktuelle Codepage zu wechseln, in der Codepage 1252 das Copyright Symbol in eine Variable zu speichern und wieder auf die deutsche Codepage zurückzuwechseln.
Dazu bietet sich folgender Code an:

for /f "tokens=2 delims=:." %%x in ('chcp') do set cp=%%x
chcp 1252
set c=©
chcp %cp%
echo %c%

copyright symbol in batch codepage try 3 460x193 Copyright Symbol und Umlaute in Batch Konsolen Ausgabe darstellen

Für die Umlaute müsst ihr nun meinen alten Trick anwenden und hinnehmen, dass im Code das Copyright Symbol durch ein anderes Symbol ersetzt wird. Aber mit %c% kann es weiterhin gesetzt werden.
copyright symbol in batch codepage final symbol und umlaute 460x164 Copyright Symbol und Umlaute in Batch Konsolen Ausgabe darstellen

Adobe Reader Deployment aktualisieren – Update (11.0.05) verteilen

$
0
0

Dieser Artikel soll nochmal als eine Kurzfassung meines kürzlich veröffentlichten Reader Deployment Guides, inklusive einer Anleitung für das Update der Verteilung auf Version 11.0.05, die kürzlich veröffentlicht wurde.

Die Schritte bleiben sehr ähnlich:

Schritt 1: Installer laden

Beachtet, dass das Update 11.0.04 als Grundlage braucht. Also holt euch 11.0.0, 11.0.04 und 11.0.05.
you know how…

Schritt 2: AIP lokal erstellen

msiexec /a AcroRead.msi
und einen lokalen Pfad angeben (z.B. “C:\Reader11.0.0mui”)

Schritt 3: Patchen

Erst 11.0.04 integrieren, dann 11.0.05:

X:\Software\Reader\installer>cd 11.0.04.63-mui
X:\Software\Reader\installer\11.0.04.63-mui>msiexec /a "C:\Reader11.0.0mui\AcroRead.msi" /p "AdbeRdrUpd11004_MUI.msp"
X:\Software\Reader\installer\11.0.04.63-mui>cd..
X:\Software\Reader\installer>cd 11.0.05-all
X:\Software\Reader\installer\11.0.05-all>msiexec /a "C:\Reader11.0.0mui\AcroRead.msi" /p "AdbeRdrSecUpd11005.msp"

adobe reader 11 0 05 update deployment install 460x163 Adobe Reader Deployment aktualisieren   Update (11.0.05) verteilen

Schritt 4: Customization Wizard

Mit dem Customization Wizard die .msi bearbeiten und speichern. Wenn dabei ein setup.ini Fehler kommt, einfach eine leere setup.ini im selben Ordner wie die Installation erstellen, der Wizard füllt die dann.
adobe reader 11 0 05 update deployment customization wizard 460x219 Adobe Reader Deployment aktualisieren   Update (11.0.05) verteilen

Schritt 5: MST Eigenschaften überprüfen

Wie schon im letzten Artikel erwähnt, kann es sein, dass trotz Customization Wizard Anpassung einige Einstellungen der MST nicht ganz stimmen und dadurch z.B. die Sprache nicht korrekt auf Deutsch gestellt wird.
Öffnet also die Installationsdatei .msi und ladet die angepasste .mst Datei mit Orca über Transform -> “Apply Transform” ein.
Überprüft in der Property Tabelle folgende Wertepaare:

Property alter Wert neuer Wert
ProductLanguage 1033 1031
ISLANGFLAG ENU DEU
ProductCode {AC76BA86-7AD7-FFFF-7B44-AB0000000001} {AC76BA86-7AD7-1031-7B44-AB0000000001}
AgreeToLicense No Yes
ENABLE_CACHE_FILES Yes No
EULA_ACCEPT No Yes
RebootYesNo Yes No

Schritt 6: Deployment

Nun könnt ihr dieses fertig geschnürte Paket in den deploy/[version] Ordner ablegen und das Verteilungsscript (siehe Deployment Artikel) anpassen, damit die neue Version verteilt wird. Dazu reicht es, die neue Version (muss dem Ordnernamen im deploy Ordner entsprechen) in Zeile 11 einzutragen.

Fertig!
Dieser Prozess, inklusive Tests auf einigen Rechnern, dauerte bei mir weniger als 30 Minuten. Ein Update ist also relativ schnell eingespielt.

Schriftarten im Netzwerk verteilen mit Batch, GPO, VBS

$
0
0

Im Windows Netzwerk Schriftarten zu verteilen war komplexer als gedacht. Daher möchte ich mal oberflächlich die möglichen Verteilungsmethoden erläutern und meine Empfehlung geben.
Ziel ist die Verteilung (also Installation zur Verwendung) von Schriftarten in Windows Netzwerken über Gruppenrichtlinien.

Dafür gibt es verschiedene Methoden: Batch, GPO, VBS.

Batch

REM alle Schriftarten aus dem fonts Unterordner in den Fonts Systemordner kopieren
xcopy fonts\*.* "%windir%\Fonts\" /v /c /l /y /i
REM jede Schriftart einzeln in der Registry anmelden
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /v "OpenSans-Bold (True Type)" /t REG_SZ /d "OpenSans-Bold.ttf" /f
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /v "OpenSans-BoldItalic (True Type)" /t REG_SZ /d "OpenSans-BoldItalic.ttf" /f
...

Der Registry Befehl muss für jede gewünschte Schriftart ausgeführt werden.

GPO

Wie schon GPO Meister Heitbrink erklärt hat:
In der Gruppenrichtlinie unter Computerkonfiguration\Einstellungen\Windows-Einstellungen\Dateien folgende Einstellung für jede Schriftart erstellen:
schriftarten über das netzwerk verteilen mit batch gpo vbs register font file gpo Schriftarten im Netzwerk verteilen mit Batch, GPO, VBS
In der Quelle bitte den korrekten \\server\pfad\ angeben. Dadurch werden die Schriften in den Windows Ordner kopiert.

Nun noch in Computerkonfiguration\Einstellungen\Windows-Einstellungen\Registry folgende Einstellungen, ebenfalls einmal pro Schriftart:
schriftarten über das netzwerk verteilen mit batch gpo vbs copy font file gpo Schriftarten im Netzwerk verteilen mit Batch, GPO, VBS
Den Registry Pfad so übernehmen wie auf dem Bild, “Name” enthält den Anzeigenamen innerhalb von Programmen, bei der Fontdatei kein Pfad mehr davor packen, nur der Dateiname.

Nachteil

Beide Lösungen sind nicht sehr aufwändig, 2 Batch Befehle bzw. 2 GPO Einstellungen, simpel. Viel eher hat es den Nachteil, dass man bei einer größeren Menge an Schriftarten dann doch recht viel zu tun hat. 20 Schriftarten? Das bedeutet viel rumgetippe.
Besser ist in diesem Fall folgende Lösung:

VBS

Dieses VBS installiert alle Fontdateien, die sich im selben Ordner befinden.

' gebastelt mit Hilfe von:
' http://superuser.com/questions/201896/how-do-i-install-a-font-from-the-windows-command-prompt
' http://forum.chip.de/c-visual-basic-net/vbs-if-file-exists-then-starts-program-1550358.html

Set ofso = CreateObject("Scripting.FileSystemObject")
Set shell = CreateObject("WScript.Shell")
SourceFolder = ofso.GetParentFolderName(Wscript.ScriptFullName)

Const FONTS = &H14&

Set objShell  = CreateObject("Shell.Application")
Set oSource   = objShell.Namespace(SourceFolder)
Set oWinFonts = objShell.Namespace(FONTS)
sFontFolder   = shell.ExpandEnvironmentStrings("%windir%") & "\Fonts\"

' Lame VBscript needs 4 f*ing lines instead of "if (/\.ttf$/i) " ...
Set rxTTF = New RegExp
rxTTF.IgnoreCase = True
rxTTF.Pattern = "\.ttf$"

FOR EACH FontFile IN oSource.Items()
    IF rxTTF.Test(FontFile.Path) THEN
		IF NOT ofso.FileExists(sFontFolder & FontFile) THEN
			oWinFonts.CopyHere FontFile.Path
		END IF
    END IF
NEXT

Die Einbindung in das Netzwerk könnte direkt als Startscript erfolgen. Wenn man jedoch einen leichten Überblick haben möchte, welche Computer die Schriften schon installiert haben, empfiehlt sich dieses Script:

@echo on & color 9f & setlocal
set wd=\\server\Deployment\Sonstiges\fonts
set log=%wd%\fonts.log

echo %date% %time:~0,8% - %computername% startet die Fontinstallation >> %log%

start /wait "" cmd /c cscript //nologo "%wd%\fonts\install-all-fonts.vbs"

REM eine Schriftart als Test überprüfen
if exist "%windir%\fonts\OpenSans-SemiboldItalic.ttf" echo %date% %time:~0,8% - %computername% hat die Schriften installiert >> %log%

:end
endlocal

Das Script loggt Start und Ende der Schriftinstallation und prüft die erfolgreiche Installation mit 1 beliebigen Schriftart.

Ein Neustart muss aber auch bei dieser Methode sein.


Skype Deployment via Startscript im AD

$
0
0

Thema heute: Skype Deployment im Active Directory via GPO Startscript.

Ziemlich straight forward eigentlich:

Schritt 1: Download

Es gibt immer die aktuellste MSI unter dieser statischen URL.

Schritt 2: AIP erstellen

Damit könnt ihr dann direkt mit folgendem CMD Befehl in einem temporären Ordner ein AIP erstellen:

msiexec /a SkypeSetup.msi TARGETDIR=c:\skype\6.10

Schritt 3: MST erstellen

Ihr könnt eure eigene MST erstellen (MSI mit Orca öffnet, Transform -> New Transform) oder meine MST hier herunterladen. Meine MST enthält die folgenden Änderungen:
Property -> ProductLanguage: 1031
Property -> ProductLanguageCode: de
Registry -> “Software\Microsoft\Windows\CurrentVersion\Run” gelöscht
Shortcut -> “SkypeDesktopShortcut” gelöscht

Mehr Hinweise zur MSI, MST und den Parametern hier, hier und hier.

Schritt 4: Skript

Nachdem ihr die fertigen AIP Daten auf ein Netzlaufwerk geschoben habt, kann es eigentlich auch schon losgehen mit der Skriptverteilung.
Ein Skript überprüft die Version der installierten Skype Version und patcht dann auf die neue Version falls nötig.
Hier also das install Script:
Stand: 15.01.2014 (Skype 6.11.32.102), working

@echo on && color 9f && setlocal
set wd=\\lea\Deployment\Software\Skype
set log=%wd%\skype.log
set tools=\\lea\Deployment\Sonstiges\tools
set skypedir=none
set skypeEL=999
set instversion=0.0
set versionEL=9
set regEL=999
set exepath=none
set retry=0
REM ######## EDIT THIS ####
set newversion=6.11.32.102
REM #######################

REM insert all sysinternals eula accepts
start /wait "" cmd /c \\lea\Deployment\Sonstiges\sysinternals\sysinternalseulaaccept.bat

REM Clientfilter: nur die Computer aus der allowedPCs.txt dürfen installieren
::for /f %%f in (%wd%\allowedPCs.txt) do if "%computername%"=="%%f" goto check
::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
if exist "c:\Program Files\Skype\Phone\skype.exe" set exepath="c:\Program Files\Skype\Phone\skype.exe"
if exist "c:\Program Files (x86)\Skype\Phone\skype.exe" set exepath="c:\Program Files (x86)\Skype\Phone\skype.exe"
if %exepath%==none goto install
goto checkversion

:checkversion
for /f "tokens=1-3" %%i in ('%tools%\sigcheck %exepath%') do ( if "%%i %%j"=="File version:" set instversion=%%k )
%tools%\VersionCompare.exe %instversion% %newversion%
set versionEL=%errorlevel%
if "%versionEL%"=="-1" goto install
if "%versionEL%"=="0" echo %date% %time:~0,8% - %computername% hat bereits %instversion% installiert >> %log% & goto end
if "%versionEL%"=="1" echo %date% %time:~0,8% - %computername% hat bereits %instversion% (neuer) installiert >> %log% & goto end

:install
echo %date% %time:~0,8% - %computername% installiert... >> %log%
msiexec.exe /i %wd%\deploy\%newversion%\SkypeSetup.msi /qn /norestart TRANSFORMS=%wd%\deploy\%newversion%\DE-norun-nodesktopshortcut.mst FEATURE_IEPLUGIN=0 FEATURE_FFPLUGIN=0
set skypeEL=%errorlevel%
if %skypeEL%==1618 goto retry REM msiexec process in use, installation already in progress (eg. windows updates running)
if %skypeEL%==1602 goto retry REM user canceled installation (eg. taskkill)
if %skypeEL%==1603 goto retry REM fatal error, some use it for "already installed" (eg. java)
if %skypeEL%==1638 goto uninstall REM another product is already installed, denies an update
echo %date% %time:~0,8% - %computername% hat Version %newversion% mit EL %skypeEL% abgeschlossen >> %log%
if %processor_architecture%==x86 goto reg32
if %processor_architecture%==AMD64 goto reg64
goto end

:retry
if %retry%==1 goto retryfailed
echo %date% %time:~0,8% - %computername% hatte den Fehler %skypeEL%, retry in 5min... >> %log%
set retry=1
REM 5 Minuten warten
ping localhost -n 300 > nul
goto install

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

:uninstall
if %retry%==1 goto retryfailed
echo %date% %time:~0,8% - %computername% deinstalliert Version %instversion% aufgrund EL 1638 Fehler... >> %log%
msiexec /x {1845470B-EB14-4ABC-835B-E36C693DC07D} /qn /norestart
echo %date% %time:~0,8% - %computername% - %instversion% deinstalliert, retry... >> %log%
set retry=1
goto install

:reg32
%COMSPEC% /C reg add "HKLM\Software\Policies\Skype\Phone" /v "DisableVersionCheck" /d "1" /t REG_DWORD /f
set regEL=%errorlevel%
%COMSPEC% /C reg add "HKLM\Software\Policies\Skype\Phone" /v "DisableSupernode" /d "1" /t REG_DWORD /f
set regEL=%regEL%%errorlevel%
echo %date% %time:~0,8% - %computername% hat die (32bit) Reg Keys mit EL %regEL% importiert >> %log%
goto end

:reg64
%COMSPEC% /C reg add "HKLM\Software\Wow6432Node\Policies\Skype\Phone" /v "DisableVersionCheck" /d "1" /t REG_DWORD /f
set regEL=%errorlevel%
%COMSPEC% /C reg add "HKLM\Software\Wow6432Node\Policies\Skype\Phone" /v "DisableSupernode" /d "1" /t REG_DWORD /f
set regEL=%regEL%%errorlevel%
echo %date% %time:~0,8% - %computername% hat die (64bit) Reg Keys mit EL %regEL% importiert >> %log%
goto end

:end
endlocal

Hm ja, wurschtelt euch durch, hier die Key-Features kurz gefasst:
- Sysinternals EULA Accept (siehe unten)
- Clientfilter
- Versionsüberprüfung anhand der .exe (32bit/64bit angepasst) mit Sigcheck statt per Registry. Ich bin mir noch unsicher ob ich in Zukunft auf die .exe oder Registry setze
skype script deployment version 460x115 Skype Deployment via Startscript im AD
- Versionsvergleich mit versioncompare.exe
- Installation per MSI mit einer MST Anpassung für: Allusers, kein Desktop Shortcut, kein Autorun, deutsche Sprache.
- Fehlermanagement für typische Fehler: 1618, 1602 und 1603 mit 5 Minuten warten Retry und 1638 mit Uninstall und Retry. Der Uninstall Product Code müsste für Skype 5.9 und aufwärts stimmen
- Registry Key Imports für no-Autoupdate und “DisableSupernode”, was auch immer das ist, sieht man aber sehr häufig, 32bit/64bit angepasst
- alles wird gut in einer Logdatei festgehalten (siehe unten)

Die in Zeile 17 verwendete sysinternalseulaaccept.bat gebe ich euch auch noch. Sie bewirkt, dass die Sysinternals Tools benutzt werden können, ohne, dass das “EULA akzeptieren” Popup erscheint. Denn ich glaube, dass die Tools sich per Kommandozeile nicht verwenden lassen, solange man nicht diese EULA einmal händisch akzeptiert hat. Nach dem Ausführen dieser Batch Datei sollte das keine Probleme mehr machen.

REM  Thanks: Peter Hahndorf
REM  URL: http://peter.hahndorf.eu/blog/2010/03/07/WorkAroundSysinternalsLicensePopups.aspx

reg.exe ADD "HKCU\Software\Sysinternals\AccessChk" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\AccessEnum" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\AdExplorer" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\AdInsight" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\AdRestore" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Autologon" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Autoruns" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\BgInfo" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\BlueScreen" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\CacheSet" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\ClockRes" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Contig" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Coreinfo" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Ctrl2cap" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\DebugView" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Desktops" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Disk Usage" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Disk2vhd" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\DiskExt" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Diskmon" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\DiskView" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\EFSDump" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Handle" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Hex2dec" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Junction" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\LDMDump" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\ListDLLs" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\LiveKd" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\LoadOrder" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\LogonSessions" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\MoveFile" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\NTFSInfo" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PageDefrag" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PendMoves" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PipeList" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PortMon" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\ProcDump" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Process Explorer" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Process Monitor" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\ProcFeatures" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PsExec" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PsFile" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PsGetSid" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PsInfo" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PsKill" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PsList" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PsLoggedOn" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PsLogList" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PsPasswd" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PsService" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PsShutdown" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PsSuspend" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PsTools" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\RAMMap" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\RegDelNull" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\RegJump" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\RootkitRevealer" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\SDelete" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\ShareEnum" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\ShellRunas" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Sigcheck" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Streams" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Strings" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Sync" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\TCPView" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\VMMap" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\VolumeId" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Whois" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\WinObj" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\ZoomIt" /v EulaAccepted /t REG_DWORD /d 1 /f
exit

Sie muss eigentlich nur einmal pro PC ausgeführt werden, danach sind die Reg Keys ja drin. Jedoch dauert die Ausführung eh nur 1-2 Sekunden, eine Überprüfung würde da kaum Sinn machen.

Hier ein Auszug aus der Logdatei:
skype script deployment log 460x274 Skype Deployment via Startscript im AD
Hier sieht man gut die verschiedenen Abläufe:

  • Rechner 60, 42 und 28 deinstallieren zuerst eine alte Version, bei der die Installation der neuen Version mit Fehlercode 1638 abbrach. Nach der Deinstallation erfolgt die Neuinstallation problemfrei.
  • Rechner 9 und 54 haben bereits diese oder eine neuere Version installiert.
  • Und der Rechner 36 hatte eine ältere Version installiert, die ohne Deinstallation erfolgreich aktualisiert werden konnte.

Somit wurden bisher alle Computer letztendlich mit Errorlevel 0 erfolgreich bedient.

Download

Ich habe mal alle nötigen Dateien zu einem Download zusammengefasst:
skype script deployment download Skype Deployment via Startscript im AD
download b Skype Deployment via Startscript im AD
skype [.zip]

KMPlayer 3.7 mit umstrittenem Pandora TV Service

$
0
0

Die aktuelle Version von KMPlayer, Version 3.7, bringt neue Funktionen, leider aber auch neue Schwierigkeiten. Während der Installation wird, relativ unscheinbar, ein Feature namens Pandora TV installiert. Es steht in der Feature-Liste ganz unten.
kmp player 3.7 pandora service installation1 KMPlayer 3.7 mit umstrittenem Pandora TV Service
Pandora TV ist ein Video-Hoster wie Youtube, der vor allem in Korea einen großen Marktanteil hält. Von Pandora gibt es sowohl Software als auch Plugins, die sich leider sehr tief in das System eingraben. KMPlayer scheint ein Kooperation eingegangen zu sein und installiert nun auch Pandora TV Dienste im Rahmen seiner KMP+ Dienste, die direkt an mehreren Stellen im System abgelegt werden.
Ab diesem Moment fängt bei mir der Malwarebytes Anti-Malware Scanner an, ausgehende Verbindungen von einer kmpservice.exe zu der IP 111.111.111.111 zu blockieren; im 60 Sekunden Takt! Außerdem kursieren Gerüchte, dass KMPlayer oder Pandora anhand dieser ständigen Abfragen das Verhalten des Nutzers protokollieren.

Wer ähnliche Probleme hat bzw. wie ich dieses Feature während der Installation weder entdeckt noch deaktiviert hat, hat nun 2 Möglichkeiten:

1. Deinstallation von KMPlayer
Während des Updates von KMPlayer 3.6 auf 3.7 durch den Auto-Updater musste ich 4 oder 5 Adware/Toolbar Installationen abwenden, die standardmäßig mitinstalliert werden. Das ist schon ziemlich heftig. Die dicke Kooperation mit Pandora TV macht mich ebenfalls stutzig.
In einem Bereich wie Video Player Freeware ist das alles Grund genug nach Alternativen zu suchen. Es gibt relativ viele Freeware Player, einige davon bekannter, einige weniger. Daher mal die Frage an meine Leser: Welche Video Player Software nutzt ihr? Habt ihr verschiedene Player für verschiedene Zwecke oder diesen einen perfekten multifunktionalen Player?

2. Deaktivierung und Deinstallation von Pandora
Wer das KMP+ Feature sowie die Pandora Dienste im KMPlayer nicht nutzt, kann diese Dinge deaktivieren bzw. deinstallieren. Dadurch wird der KMPlayer als solches nicht verändert, er funktioniert danach immernoch.

Zuerst empfehle ich die Deaktivierung des Pandora Dienstes. Dies geht ganz normal über die services.msc Dienste Übersicht:
kmp player 3.7 pandora service beenden 460x296 KMPlayer 3.7 mit umstrittenem Pandora TV Service
Anschließend sollte Pandora TV komplett deinstalliert werden. Das Programm erscheint natürlich nicht in der Programme Übersicht von Windows und hat keine Startmenüeinträge, also muss die Deinstallation manuell über die unins000.exe im Ordner
c:\Program Files (x86)\PANDORA.TV\PanService\
bzw.
c:\Program Files\PANDORA.TV\PanService\
gestartet werden.
In diesem Ordner liegen auch die ganzen KMPlayer Dateien, die das Programm zum Dienst befördern: KMPServiceStarter.exe, KMPService.exe, KMPProcess.exe, KMPElevateExecutor.exe. Das klingt schon alles ganz schön heftig dafür, dass der vom Nutzer eingegebene Installationspfad ganz woanders ist.
Nach der Deinstallation sollte Pandora auch aus der Dienste Liste verschwunden sein.
Das müsste reichen um KMPlayer etwas sicherer zu nutzen.

Private/Geheime Informationen einmalig im Internet teilen mit OneTimeSecret.com

$
0
0

Datenschutz und Verschlüsselung sind große Themen zurzeit, seit der NSA Story wichtiger als je zuvor. In Zeiten von Whatsapp und Facebook wird trotzdem fröhlich weiter offen kommuniziert. Oftmals werden auch private, geheime oder sicherheitskritische Informationen in diesen Netzwerken verschickt, beispielsweise Bankdaten, Zugänge oder Passwörter.

Was nun aber tun, wenn man eine geheime Information schnell und einmalig an eine andere Person schicken muss?

OneTimeSecret.com! Diese Seite bietet einen unschätzbaren Service an, super einfach zu benutzen.
Informationen eingeben (bis zu 25.000 Zeichen sind möglich), ggf. ein Zugangsschlüssel (“Passphrase”)eingeben, Link generieren lassen.
onetimesecret.com generate secret 460x297 Private/Geheime Informationen einmalig im Internet teilen mit OneTimeSecret.com
Ist der Link erst einmal generiert kann die Information nicht mehr verändert werden. Mit Passphrases verschlüsselte Informationen werden nicht einmal mehr angezeigt.
onetimesecret.com generated secret page 460x250 Private/Geheime Informationen einmalig im Internet teilen mit OneTimeSecret.com
Tipp: speichert euch den Link dieser Seite. später könnt ihr auf dieser Seite erfahren, wann das Geheimnis abgerufen wurde.

Die Information kann nur ein einziges Mal über den generierten Link abgerufen werden. Danach wird sie direkt unwiderruflich gelöscht. Für Geheimnisse, die mit einer Passphrase verschlüsselt wurden, muss der Empfänger des Links natürlich auch die Passphrase erhalten.
onetimesecret.com view secret reply Private/Geheime Informationen einmalig im Internet teilen mit OneTimeSecret.com

Wie gesagt kann der Ersteller des Geheimnisses mit dem gespeicherten Link nach dem Erstellen seines Links jederzeit abfragen, ob seine Information abgerufen wurde.
onetimesecret.com generated secret recieved Private/Geheime Informationen einmalig im Internet teilen mit OneTimeSecret.com

Ich finde die Seite echt super praktisch und ebenso einfach zu benutzen. Ich werde sie bestimmt noch oft gebrauchen. Meine Empfehlung: niemals sensible Informationen in den heutigen Netzwerken oder Kommunikationswegen verteilen. Ein wenig paranoid könnte man eigentlich schon behaupten: Alles ist einsehbar icon wink Private/Geheime Informationen einmalig im Internet teilen mit OneTimeSecret.com

Batch – Registry-Werte mit und ohne Leerzeichen auslesen

$
0
0

Registry Werte aus der Registry auslesen ist ein alter Hut, no problem. Auch ganze Pfade aus der Registry lesen stellt grundsätzlich kein Problem dar. Schwierig wird es jedoch, wenn der auszulesende Pfad Leerzeichen enthält. Und seit Windows Vista enthalten ja fast alle Pfade ein Leerzeichen: C:\Program Files\…

Dieser Post dient der Zusammenfassung der wichtigsten Batch Registry Abfragen.

Einfache Werte und Pfade ohne Leerzeichen

@echo on & Color 9f & setlocal
REM einfache Werte
set ff=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 ff=%%c
echo %ff%

REM einfache Pfade
set spath=0
for /f "tokens=1,2,3 delims= " %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Ghisler\Total Commander" /v "IniFileName"^|findstr "IniFileName"') do set spath=%%c
echo %spath%

Also eine festgelegte Anzahl an Tokens, Leerzeichen als Delimiter, der dritte Token ist der Registry Wert. Token 1 und 2 sind der Name des Registry Werts und der Wert-Typ.

Werte oder Pfade mit Leerzeichen

REM Werte mit Leerzeichen
set value=0
for /f "usebackq skip=2 tokens=1,2*" %%a in (`reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\FileZilla Client" /v "Startmenu"`) do set value=%%c
echo %value%

REM Pfade mit mehreren Leerzeichen
set path1=0
set path2=0
REM Möglichkeit 1: mit Option usebackq, /ve (liest den (Standard) Wert aus)
for /f "usebackq skip=2 tokens=1,2*" %%a in (`reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\FileZilla Client" /ve`) do set path1=%%c
echo %path1%
REM Möglichkeit 2: ohne Option usebackq
for /f "tokens=2*" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\FileZilla Client" /ve') do set path2=%%b
echo %path2%

Für Werte oder Pfade mit Leerzeichen müssen 3 Dinge beachtet werden:
1. Die Delimiter entfallen.
2. Tokens empfangen mit * mehrere durch Leerzeichen getrennte Werte und packen sie in den letzten Token zusammen; den wir dann abfragen.
3. Bei der Methode 1 mit usebackq müsst ihr unbedingt auf die Anführungszeichen achten! Der komplette Inhalt in den Klammern wird mit einem “backquote”, also `, eingeschlossen. Das ` ist kein ” und kein ‘ und kein ´ usw, achtet darauf! Alle anderen Angaben kommen wie gewohnt in doppelte Anführungszeichen. Bei der Methode ohne usebackq kommt der Klammerinhalt in normale einfache Anführungszeichen ‘.

Das Ergebnis aller obrigen Code-Schnipsel:
registry werte mit batch auslesen mit leerzeichen usebackq Batch   Registry Werte mit und ohne Leerzeichen auslesen

Windows Offline-Dateien deaktivieren per Skript im AD

$
0
0

Die Offlinedateien von Windows 7 werden ebenso selten genutzt wie sie das Netzwerk belasten können, wenn sie aktiviert sind.

Manuell kann man die Funktion folgendermaßen deaktivieren:
Start -> “Offlinedateien verwalten” suchen -> Offlinedateien deaktivieren
oder
Start -> Systemsteuerung -> Synchronisierungscenter -> Offlinedateien verwalten (links im Menü unten) -> deaktivieren

disable windows 7 offlinefiles sync offlinedateien 460x245 Windows Offline Dateien deaktivieren per Skript im AD

Im Unternehmen kann es durchaus sinnvoll sein, die Offlinedateien per Gruppenrichtlinie oder per Skript zu deaktivieren.
Und für die Verteilung im Windows AD Netzwerk habe ich natürlich wieder ein Skript vorbereitet:

@echo off & Color 9f & setlocal

set log=\\server\pfad\disable-offline-files.log
set preconfig=99

sc stop CscService
sc config CscService start= DISABLED

:check
for /f "tokens=1,2,3 delims= " %%a in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\CSC" /v Start^|findstr "Start"') do set preconfig=%%c
echo %date% %time:~0,8% - %computername% Offline-Files: %preconfig% >> %log%
if "%preconfig%"=="0x1" goto disable
goto end

:disable
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\CSC" /v Start /t REG_DWORD /d 4 /f
echo %date% %time:~0,8% - %computername% Offline-Files deaktiviert, errorlevel %errorlevel% >> %log%

:end
endlocal
pause

Auszug aus der Logdatei:
disable windows 7 offlinefiles sync offlinedateien log 460x109 Windows Offline Dateien deaktivieren per Skript im AD

Viewing all 241 articles
Browse latest View live


Latest Images