2016-12-02 7 views
0

Я разрабатываю надстройку VSTO для Word, Excel и т. Д. И мне нужно получить информацию о пользователе, который в настоящее время вошел в приложение Office. Мне нужен хотя бы адрес электронной почты.Получить информацию о учетной записи LiveId (Office 365), зарегистрированной в приложении Office в VSTO AddIn

enter image description here

Я нашел эти свойства Globals.ThisAddIn.Application.UserName, .UserInitials и .UserAddress. Но это не о учетной записи LiveID. Речь идет о настройках пользователя в офисе.

Как я могу получить требуемую информацию?

ответ

0

я нашел только один способ получить эту информацию - читать реестр ... Есть ключ HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Common\Identity\Identities\ если это офис 2016. Есть подключе как xxxxx_LiveId где xxxxx матчи на ProviderId значение.

Вы можете прочитать значение не менее EmailAddress из этого подраздела.

Так что я написал некоторые C# код для получения электронной почты зарегистрированного пользователя LiveID:

string GetUserEmailFromOffice365() 
{ 
    string Version = "16.0"; //TODO get from AddIn 
    string identitySubKey = [email protected]"Software\Microsoft\Office\{Version}\Common\Identity\Identities"; 

    using (var key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(identitySubKey)) 
    { 
     if (key != null && key.SubKeyCount > 0) 
      { 
       foreach (var subkeyName in key.GetSubKeyNames()) 
       { 
        using (var subkey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey([email protected]"{identitySubKey}\{subkeyName}")) 
        { 
         object value = null; 
         try 
         { 
          value = subkey.GetValue("EmailAddress"); 
         } 
         catch (Exception ex) 
         { 
          Debug.WriteLine(ex); 
         } 
         if (value != null && value is string) 
         { 
          return value as string; 
         } 
        } 
       } 
      } 
    } 
    return null; 
} 

из задних не следует жёстко Version значение. Вы можете получить и вспомнить офисную версию от Globals.ThisAddIn.Application.Version в ThisAddIn.cs файл в ThisAddIn_Startup метод.