Laden...

Outlook User auslesen, wenn User keine Adminrechte hat

Erstellt von Krumnix vor 3 Jahren Letzter Beitrag vor 3 Jahren 987 Views
K
Krumnix Themenstarter:in
129 Beiträge seit 2018
vor 3 Jahren
Outlook User auslesen, wenn User keine Adminrechte hat

Hallo zusammen.

Mit folgendem Code kann ich die User-Daten aus Outlook auslesen, um diese später zu verwenden.


try
            {
                // Check whether there is an Outlook process running.
                if (Process.GetProcessesByName("OUTLOOK").Count() > 0)
                {
                    // If so, use the GetActiveObject method to obtain the process and cast it to an Application object.
                    application = Marshal.GetActiveObject("Outlook.Application") as Outlook.Application;
                }
                else
                {
                    // If not, create a new instance of Outlook and sign in to the default profile.
                    application = new Outlook.Application();
                    Outlook.NameSpace nameSpace = application.GetNamespace("MAPI");
                    nameSpace.Logon("", "", Missing.Value, Missing.Value);
                    nameSpace = null;
                }

                Outlook.Accounts accounts = application.Session.Accounts;

                // Concatenate a message with information about all accounts.
                // StringBuilder builder = new StringBuilder();

                // Loop over all accounts and print detail account information.
                // All properties of the Account object are read-only.
                foreach (Outlook.Account account in accounts)
                {
                    // The UserName property provides an account-based context to determine identity.
                    string[] OutlookName = account.UserName.Split('.');

                    AppVariable.ActiveUsername = OutlookName[0].ToUpper() + " " + OutlookName[1].ToUpper();

                    // The SmtpAddress property provides the SMTP address for the account.
                    AppVariable.ActiveEMailAddress = account.SmtpAddress;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

Wenn der User aber auf seinem PC keine Admin-Rechte hat, funktioniert dies nicht mehr.
Hat jemand einen Tipp, wie ich das auch ohne Adminrechte zum Laufen bekommen, bzw. wo liegt der "Fehler"?!

Vielen Dank

16.835 Beiträge seit 2008
vor 3 Jahren

Was ist denn das Ziel und wieso verwendest Du nicht die Exchange / O 365 API?
Lokal hast Du eben als normaler Benutzer nicht die Rechte.

In einer O 365 Welt würde man das über einen Webservice und die Microsoft Graph API machen.

K
Krumnix Themenstarter:in
129 Beiträge seit 2018
vor 3 Jahren

Ziel ist es die Email und den Name des angemeldeten Benutzer zu erfahren, um beim Erstellen von Produktfreigaben im Logfile dies abzulegen.

Der Windows Benutzer ist eine IT Nummer ohne Bezug. Unter Outlook erhalte ich halt diese Infos.
Es ist aber so, dass diese Erstellung auch erfolgen soll, wenn der Nutzer nicht online ist. Daher wäre eine "offline" Lösung gewünscht.

Und für mich ist es nicht logisch dass eine Anfrage an Outlook nur mit Adminrechten funktioniert.

Wie erhalte ich nun die Infos vom Nutzer?
Bin für jeden Tipp dankbar.

16.835 Beiträge seit 2008
vor 3 Jahren

Naja, wenn ihr Produktfreigaben über E-Mails macht, dann ist das Problem eher der grundlegenden Art des Prozesses 😃
Das ist arg angestaubt, so ca. 1990. Seit dutzenden Jahren unterstützen die verschiedensten SCM Tools Produktfreigaben.

Das Problem ist, dass Outlook die lokalen Informationen über die Mail Schnittstelle von Windows bekommt.
Da haste ohne Adminrechte halt einfach kein Zugriff.

Ich würde Dir empfehlen den Prozess gerade zu ziehen - aber ja, vermutlich ist das ein politisches Thema 😃

K
Krumnix Themenstarter:in
129 Beiträge seit 2018
vor 3 Jahren

Ja, bei 15.000 Mitarbeitern und 9.000 in der Entwicklung ist ein 20 Jahre alte Vorgehensweise noch "frisch" 😃