我開發VSTO加載的Word,Excel等 ,我需要得到有關當前登錄的Office應用程序的用戶信息。 我至少需要一個電子郵件地址。獲取有關的LiveID(Office 365的)信息帳戶登錄Office應用程序在VSTO外接程序
我發現這些屬性Globals.ThisAddIn.Application.UserName
,.UserInitials
和.UserAddress
。但它不是LiveID
帳戶。它關於辦公室用戶設置。
我怎樣才能所需的信息?
我開發VSTO加載的Word,Excel等 ,我需要得到有關當前登錄的Office應用程序的用戶信息。 我至少需要一個電子郵件地址。獲取有關的LiveID(Office 365的)信息帳戶登錄Office應用程序在VSTO外接程序
我發現這些屬性Globals.ThisAddIn.Application.UserName
,.UserInitials
和.UserAddress
。但它不是LiveID
帳戶。它關於辦公室用戶設置。
我怎樣才能所需的信息?
我只找到一個方法來檢索該信息 - 讀取註冊表...... 有關鍵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
值。你可以在ThisAddIn_Startup
方法ThisAddIn.cs
文件還記得Globals.ThisAddIn.Application.Version
Office版本。