Archive for the ‘MAPI’ Category

Thunderbird als Standard-E-Mail-Programm

14 Mai 2019

Bei einem aktuellen Thunderbird 60.6.1 unter Windows 7 wurde bei jedem Start nachgefragt, ob Thunderbird sich als Standard-E-Mail-Programm registrieren soll. Unabhängig was man auswählte, er war sowieso das Standard-E-Mailprogramm. Ein Aufruf aus einer anderen Anwendung funktionierte per SimpleMAPI also zuverlässig. Blöd war halt die Meldung. Aber gut. Die einfachste Lösung war einfach in den Thunderbirdeinstellungen das Häkchen für die Überprüfung wegzunehmen. Alles andere funktionierte trotzdem.

Links zum Thema:

https://bugzilla.mozilla.org/show_bug.cgi?id=1509918
https://support.mozilla.org/en-US/kb/make-thunderbird-default-mail-client
http://kb.mozillazine.org/Default_mail_client#Windows

Werbeanzeigen

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.