gpt4 book ai didi

c# - 从 Visual Studio 扩展访问当前的 Microsoft 帐户

转载 作者:太空狗 更新时间:2023-10-30 00:50:33 24 4
gpt4 key购买 nike

我正在编写一个 VS 扩展,它需要与服务器通信并识别用户,我想如果可能的话,因为这个扩展将是唯一连接到服务器的客户端,使用 Visual Studio 的内置支持Microsoft 帐户比实现我自己的帐户管理基础架构更有意义。

起初,由于 Visual Studio 开发人员可以使用各种有用的 API,人们可能认为获取当前用户的信息很容易。但是,实际上似乎没有任何明显的 API 可用于访问帐户;我检查了 here并且没有列出任何相关服务(“配置文件”服务仅允许您读取/写入为当前用户存储的设置)。

有谁知道从 Visual Studio 扩展访问 Microsoft 帐户的(相对)简单的方法?

编辑

我尝试了 Hadi Brais 的建议,起初它似乎有效(我成功检索了信息);然而,每次 Visual Studio 都会在大约 30 秒后崩溃。我注释掉了与注册表交互的行,并将它们替换为变量的静态值,然后崩溃停止了。显然,访问 Visual Studio 的注册表项导致它崩溃。我什至尝试了 using 语句和其他保护措施,但是似乎没有办法从扩展中安全地访问 Visual Studio 注册表项。那么有没有人知道任何官方 API 可以用来检索此信息而不会使 Visual Studio 崩溃?

最佳答案

对于 Visual Studio 2015(版本 14.0),这是获取有关当前在 Visual Studio 中登录的用户的信息的方法。您需要添加 using Microsoft.Win32;

private static string GetUserEmailAddressVS14()
{
// It's a good practice to request explicit permission from
// the user that you want to use his email address and any
// other information. This enables the user to be in control
// of his/her privacy.

// Assuming permission is granted, we obtain the email address.

const string SubKey = "Software\\Microsoft\\VSCommon\\ConnectedUser\\IdeUser\\Cache";
const string EmailAddressKeyName = "EmailAddress";
const string UserNameKeyName = "DisplayName";

RegistryKey root = Registry.CurrentUser;
RegistryKey sk = root.OpenSubKey(SubKey);
if (sk == null)
{
// The user is currently not signed in.
return null;
}
else
{
// Get user email address.
return (string)sk.GetValue(EmailAddressKeyName);

// You can also get user name like this.
// return (string)sk.GetValue(UserNameKeyName);
}
}

关于c# - 从 Visual Studio 扩展访问当前的 Microsoft 帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31353014/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com