Archive for Oktober 2015

Windows 10 geht im kleinsten Detail die Puste aus–oder warum werden meine Icons im Windows Explorer falsch dargestellt?

31 Oktober 2015

Wie erbärmlich ist das denn? Windows 10 liefert von Haus aus OneDrive mit aus. Die Sache an sich ist schon zweifelhaft aber jetzt kommt das Highlight. Um den Status der Dateien welche Offline, Online, gesynct werden usw. anzeigen zu können, werden zum Icon der Datei sogenannte Icon Overlays benutzt. OneDrive bringt schon fünf mit, vier sind von Windows generell für den Explorer reserviert. Sind also neun Overlay Icons. Dumm ist jetzt nur, dass bei Windows 10 aus unerfindlichen Gründen nur maximal 15(!) Icon Overlays vorgesehen sind. Wer jetzt Dropbox oder ähnliches installiert…

https://support.microsoft.com/en-us/kb/3106961

https://msdn.microsoft.com/en-us/library/windows/desktop/cc144123(v=vs.85).aspx

Advertisements

Wissenswertes zu Outlook-Signaturen

8 Oktober 2015

Wenn man Daten von anderen Rechnern übernehmen muss, ist es manchmal ganz hilfreich zu wissen, wo betreffende Daten auf einem System zu finden sind. Wie z. B. die Outlook-Signaturen für E-Mails.

Diese sind im Pfad %Userprofile%\AppData\Roaming\Microsoft\Signatures zu finden und zwar jeweils in drei verschiedenen Ausführungen, einmal als nur Text, einmal als RTF und einmal als HTML-Fassung.

Hier gibt es weitere Infos: https://support.microsoft.com/en-us/kb/2691977, allerdings scheinen die hier genannten Registryeinstellungen unterscheidliche Ansichten nach sich zu ziehen: https://social.technet.microsoft.com/Forums/office/en-US/f9fd782e-ecdb-41e1-b00a-0b4b2cfd7d32/outlook-signature-registry-settings?forum=outlook. Egal wichtig auf jeden Fall ist noch dieser Artikel https://ifnotisnull.wordpress.com/automated-outlook-signatures-vbscript/configuring-outlook-for-the-signatures-within-the-users-registry/, welcher beschreibt, wie man zum aktuellen MAPI-Profil kommt und wo man dort die Einstellung für die aktuelle Signatur findet.

Um diesem Artikel etwas mehr Inhalt zu geben, soll wie immer mittels Powershell, nun das aktuelle MAPI-Profil ermittelt und dort die aktuelle Signatur ausgelesen werden. Zunächst muss das aktuelle MAPI-Profil ermittelt werden:

$defProf = Get-ItemProperty ‚HKCU:\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles‘ -Name defaultprofile | select defaultprofile

$defProf.DefaultProfile
Outlook

Nun kann man damit die GUID 9375CFF0413111d3B88A00104B2A6676, welche für das Mailkonto unter MAPI steht, einsehen :

Get-Item "HKCU:\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\$($defProf.defaultProfile)\9375CFF0413111d3B88A00104B2A6676"

Name                           Property
—-                           ——–
9375CFF0413111d3B88A00104B2A66 {ED475418-B0D6-11D2-8C3B-00104B2A6676} : {4, 0, 0, 0}
76                             LastChangeVer                          : {65, 0, 0, 0…}
                               {ED475419-B0D6-11D2-8C3B-00104B2A6676} : {1, 0, 0, 0…}
                               {ED475420-B0D6-11D2-8C3B-00104B2A6676} : {4, 0, 0, 0}
                               NextAccountID                          : 5

Hierunter sind als Werte weitere GUIDs sowie Subkeys hinterlegt. Von den GUIDs ist ED475418-B0D6-11D2-8C3B-00104B2A6676 CLSID_OlkMail, was OutlookMail darstellen soll. Die Definition sowie die anderen Werte sind hier zu finden: https://msdn.microsoft.com/en-us/library/office/aa192896%28v=office.11%29.aspx?f=255&MSPPError=-2147217396.

Man liest diesen Wert nun aus und erhält z. B.:

$v=Get-ItemProperty "HKCU:\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\
Profiles\$($defProf.defaultProfile)\9375CFF0413111d3B88A00104B2A6676" -Name "{ED475418-B0D6-11D2-8C3B-00104B2A6676}"|select "{ED475418-B0D6-11D2-8C3B-00104B2A6676}"

$v.'{ED475418-B0D6-11D2-8C3B-00104B2A6676}‘
4
0
0
0

Die Ausgabe 4,0,0,0 steht in Registrierungseditor so: 04 00 00 00 und verweist auf den Subkey mit den eigentlichen Mailkontoeinstellungen. Wichtig, bevor man diesen Wert weiterverarbeitet muss die Endianess-Frage geklärt werden:

if ([System.BitConverter]::IsLittleEndian)
{
  [array]::Reverse($v.'{ED475418-B0D6-11D2-8C3B-00104B2A6676}‘)
}

$v.'{ED475418-B0D6-11D2-8C3B-00104B2A6676}‘
0
0
0
4

jetzt die Reihe noch in die korrekte Form bringen:

$account = $v.'{ED475418-B0D6-11D2-8C3B-00104B2A6676}‘ | foreach {$x=""} {$x+="{0:x2}" -f $_} {$x}

$account
00000004

Nun kommt man der Sache schon näher:

Get-ItemProperty "HKCU:\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\$($defProf.defaultProfile)\9375CFF0413111d3B88A00104B2A6676\$account"

clsid                   : {ED475414-B0D6-11D2-8C3B-00104B2A6676}
Mini UID                : 3522235559
Service UID             : {208, 16, 38, 222…}
Service Name            : {77, 0, 83, 0…}
MAPI Provider           : 5
Identity Eid            : {0, 0, 0, 0…}
XP Provider UID         : {18, 194, 184, 55…}
Account Name            : {77, 0, 72, 0…}
Delivery Store EntryID  : {0, 0, 0, 0…}
XP Status               : 1
Preferences UID         : {56, 105, 182, 137…}
Delivery Folder EntryID : {239, 0, 0, 0…}
New Signature           : {101, 0, 97, 0…}
Reply-Forward Signature : {101, 0, 97, 0…}
PSPath                  : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows
                          NT\CurrentVersion\Windows Messaging
                          Subsystem\Profiles\Outlook\9375CFF0413111d3B88A00104B2A6676\00000004
PSParentPath            : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows
                          NT\CurrentVersion\Windows Messaging
                          Subsystem\Profiles\Outlook\9375CFF0413111d3B88A00104B2A6676
PSChildName             : 00000004
PSDrive                 : HKCU
PSProvider              : Microsoft.PowerShell.Core\Registry

Prima fast am Ziel. Jetzt gilt es nur noch die Werte von “New Signature” und “Reply-Forward Signature” auszulesen.

$ns = Get-ItemProperty "HKCU:\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\$($defProf.defaultProfile)\9375CFF0413111d3B88A00104B2A6676\$account" -name "New signature" | select "New Signature"
$ns

New Signature
————-
{101, 0, 97, 0…}

[System.Text.Encoding]::Unicode.GetString($ns.’New Signature‘)
eaTest

Mit “Reply-Forward Signature” geht es genauso. Damit soll es für heute genug sein.