[Outlook] profile在註冊表裏的祕密。

This article will also be published in english: http://www.cnblogs.com/LarryAtCNBlog/p/3944901.html

 

身爲IT有時候要從user的outlook profile中抓取一些信息,如PST的名字,存放位置什麼的。此爲前提。

用outlook的com object寫一些命令或腳本當然可以很輕鬆做得到,但是執行效率略低是一方面,對com object的使用又是另一方面。

而且com object只能從本地端user登陸過後來執行,因爲user的outlook profile是存放於HKEY_CURRENT_USER這個鍵當中,其他用戶自然也就無法加載該user的profile然後用com object接口讀到相應的信息。

實際上這種需求直接分析註冊表是最爲簡單,從後臺也可以偷摸做。對註冊表做一些遍歷或者是分析,因此從效率上來說應該是更加快速的。

outlook的profile在注表中的位置如下,

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles

當然,打開之後其實是相當不友好的,如下圖,

觀察一下就能發現,都是16進制 - 0到9 a-f,其實它們是給MAPI方便調用的,對用戶或者說非這方面專家來說是很不友好的。

但是,它們中某些數據的確能夠抓到我們最開始提及的PST文件的信息,我們需要的就是分析這些16進制的字符串,

經過一些總結後,這些16進制鍵中,部分是隨機生成,部分是固定通用的,根據一些分析下面的幾個鍵應該是通用的,後面也括包括了它們的作用,這裏本人水平有限,沒有研讀MSDN的資料(又不搞這方面開發,讀個球球呀),於是淺顯地自己實際試驗了一下,得出以下結果。

f86ed2903a4a11cfb57e524153480001    刪掉後無異常,也未自動生成
9207f3e0a3b11019908b08002b2a56c2    providers
9375CFF0413111d3B88A00104B2A6676    Signature
8503020000000000c000000000000046    不可刪除,需要有value 0102300b,否則報錯,具體作用不明
5acf76a3665511cea39a00aa004acafa    刪掉後無異常,也未自動生成
3517490d76624c419a828607e2a54604    刪掉後無異常,會自動生成
13dbb0c8aa05101a9bb000aa002fc45a    和outlook anywhere有關
0a0d020000000000c000000000000046    outlook最近使用的一些配置
{D9734F19-8CFB-411D-BC59-833E334FCB5E}    刪掉後無異常,會自動生成

PST文件的路徑呢,其實就在providers所在的鍵值中,如下圖,PST和其它的mailbox等,都存在一個01023d00的value中。

這個value打開之後,它的data全都是16進制的單字節,下面是一些特性,

1. 每兩行爲一組,可以剛好分爲一組或多組,也就是說,總的字結數,肯定是16的倍數。

2. 每兩行合併成一個16進制字符串,該字符串其實就是profile的一個subkey。

3. 每個從第2步合成的字符串上來說,都是一個provider,說白了就是我們在outlook上看到的mailboxes或者是掛載的PST,如下圖,

像我這種有節操的運維,當然公司的一些信息我要打碼,能看明白就行了,

上面說了3點,其實用一張圖能更明白表達我想說的是什麼(咦!~感覺前面3點白說了),

一看就懂了,是吧,下面我們打開F67F21B*****這個key來看一下里面的內容,其中有一個叫001f3001的value,它的data如圖,說明了這個provider是一個PST文件,那它的路徑在哪呢?在001f6700這個value裏放着,請看下圖,

providers的value裏,包括了很多mailbox或者掛載的PST,還有public folder之類一般看不到的folder,一切都是按上面PST的方法一樣,能夠讀出來。

現在有個問題,其它的一些value代表了什麼?又是怎麼知道01023d00這個value存着providers的?其它還有很多key是幹嘛用的?

關於這幾個問題,我自認水平糙,智商不高加上先天缺陷,無法一一解答,貼一個MSDN鏈好了。

http://msdn.microsoft.com/en-us/library/bb415650.aspx

還有另一個在網上找到的站點,信息已經過時,而且是德文(Google翻譯告訴我的),但依然有一定參考價值,

http://www.msxfaq.de/clients/mapireg.htm

那捕獲PST的腳本有麼?遺憾,沒有,因爲是某BBS裏有人提到過怎麼從註冊表裏找PST的問題,我才研究了一下,本身我沒有該需求,也就沒有編寫任何的script。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章