2012-01-16 9 views
2

私は数日間のソリューションを探していましたが、私はInterop.OutlookのMSDNを見てきました。私は必要なものを見つけたと思いますが、適切に実装することはできません。PSTのインベントリリモートコンピュータはOutlookに接続されていますか?

私がVBAで見たような何かに基づいて思いついたコードはここにあります。

class Program 
{ 
    Stores allstores = new Stores(); 
    Store store; 

    static void Main(string[] args) 
    { 
     foreach (var store in allstores) 
     { 
      MessageBox.Show(store.FilePath); 
     } 

    } 
} 

`

これは本質的にコンピュータのリストを循環する必要がある、と在庫のために、彼らの見通し(一部2003、いくつかの2007)にこのコードを実行するすべてのPSTの各Outlookプロファイルで接続。私はこれにもっとコードがあると確信していますが、私はこの部分をまったく動作させることができません。 Outlookデータファイルのインベントリに関する情報が不足しているようですが、そのほとんどはデータファイル自体ではなく、メールボックスからの電子メールの読み取りです。

誰かが私が見落としていることに少しでも光を当てることができれば、大変感謝しています。

EDIT:

私は実際に今のコードの作業作品を作ってきましたが、しかし私は、互換性に問題があります。プログラムはOffice 2010/2007で設計されたとおりに動作しますが、2003バージョンにアクセスするとクラッシュします。私は、Microsoft Office Object 11.0を使用する必要があると思いますが、Microsoft Office Object 12.0のみがリストされています - 11.0リファレンスを取得する方法はありますか?

+0

それは取得する必要があります明確にするために、PSTの接続されたファイルパス。 – TwistedMexi

答えて

0

Thisは、かなり徹底したオブジェクトモデルの比較開発ガイドです。

+0

ありがとうございます、私は実際にすべての今働いている。問題は "Store"は2003年に存在しないため、StoreIDから読み込んで変換する必要があります。 – TwistedMexi

0

実際にOutlookプロファイルにログオンする理由はありません(認証プロンプトが必要な場合があります)。すべての情報は既にレジストリのプロファイルセクションにあります。正確な場所はOutlookのバージョンに依存し、プロファイルセクションのGUIDはランダムに生成されるため、文書化されたプロファイル管理API(IProfAdminなど)が使用できますが、残念ながら拡張MAPIであり、C++またはDelphiが必要です。

Redemptionを使用すると、オプションである場合は、それが実際にログインせずに使用すると、すべてのローカルプロファイルからすべてのPSTファイルの場所を抽出できるようになる(任意の言語でアクセス可能)ProfManライブラリが含ま:

'Print the path to all the PST files in all profiles 
    PR_PST_PATH = &H6700001E 
    set Profiles=CreateObject("ProfMan.Profiles") 
    for i = 1 to Profiles.Count 
     set Profile = Profiles.Item(i) 
     set Services = Profile.Services 
     Debug.Print "------ Profile: " & Profile.Name & " ------" 
     for j = 1 to Services.Count 
     set Service = Services.Item(j) 
     If (Service.ServiceName = "MSPST MS") or (Service.ServiceName = "MSUPST MS") Then 
      'there should be only one provider for this service 
      'but we should really loop through all the providers 
      Debug.Print Service.Providers.Item(1).ProfSect.Item(PR_PST_PATH) 
     End If 
     next 
    next 
関連する問題