3 Stimmen

Inventarisierung entfernter Computer für PSTs, die mit Outlook verbunden sind?

Ich suche schon seit ein paar Tagen nach einer Lösung. Ich habe mir das MSDN für Interop.Outlook angesehen und denke, ich habe gefunden, was ich brauche, aber ich kann es nicht richtig implementieren.

Hier ist der Code, den ich mir ausgedacht habe, basierend auf etwas Ähnlichem, das ich in VBA gesehen habe.

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

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

    }
}

`

Dies muss im Wesentlichen durch eine Liste von Computern Zyklus, und führen Sie diesen Code auf ihre Outlook (einige 2003, einige 2007), um alle verbundenen PSTs in jedem Outlook-Profil zu inventarisieren. Ich bin sicher, es gibt mehr Code zu diesem, aber ich kann nicht bekommen, diesen Teil überhaupt zu arbeiten. Es scheint einen Mangel an Informationen über die Inventarisierung von Outlook-Datendateien zu geben, das meiste davon ist das Lesen von E-Mails aus den Postfächern und nicht die Datendatei selbst.

Wenn mir jemand sagen könnte, was ich übersehe, wäre ich Ihnen sehr dankbar.

EDIT:

Ich habe jetzt tatsächlich ein funktionierendes Stück Code gemacht, aber ich habe ein Problem mit der Kompatibilität. Das Programm funktioniert wie vorgesehen in Office 2010/2007, stürzt aber beim Zugriff auf eine 2003-Version ab. Ich vermute, dass ich das Microsoft Office Object 11.0 verwenden muss, aber ich habe nur Microsoft Office Object 12.0 aufgelistet - gibt es eine Möglichkeit, die 11.0-Referenz zu erhalten?

0 Stimmen

Zur Verdeutlichung muss der verbundene Dateipfad der PST abgerufen werden.

0voto

Abdul Hfuda Punkte 1463

Diese kann von Nutzen sein, ziemlich gründlicher Objektmodellvergleich und Entwicklungsleitfaden.

0voto

Dmitry Streblechenko Punkte 52188

Es gibt keinen Grund, sich bei irgendwelchen Outlook-Profilen anzumelden (was eine Authentifizierungsaufforderung erfordern könnte). Alle Informationen befinden sich bereits im Profilabschnitt in der Registrierung. Der genaue Speicherort ist Outlook-versionsspezifisch, und die Profilabschnitt-Guids werden zufällig generiert, so dass die dokumentierte Profilverwaltungs-API ( IProfAdmin usw.) ist der richtige Weg, aber leider ist es Extended MAPI und erfordert C++ oder Delphi.

Ab Outlook 2007 stellt das Outlook-Objektmodell Folgendes zur Verfügung Namespace.Stores Sammlung und Store.FilePath Eigenschaft, so dass Sie eine Schleife durch alle Geschäfte ziehen und die FilePath für jeden Speicher (stellen Sie sicher, dass Sie OST-Dateien herausfiltern).

Beachten Sie, dass es mehrere Outlook-Profile geben kann (siehe Systemsteuerung | Mail | Profile anzeigen), aber Outlook kann immer nur mit einem Profil arbeiten. Um ein anderes Profil zu verwenden, müssen Sie Outlook schließen.

Bei Verwendung von Erlösung ist eine Option (ich bin ihr Autor), sie enthält ProfMan Bibliothek (in jeder Sprache zugänglich), mit der Sie alle PST-Dateispeicherorte aus allen lokalen Profilen extrahieren können, ohne sich tatsächlich anzumelden:

        '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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X