C# 获取所有管理员的桌面路径

发布于 2024-12-28 05:06:21 字数 468 浏览 2 评论 0原文

我需要为系统中的所有管理员创建应用程序的桌面快捷方式。 我正在使用以下代码来获取用户列表。

        var identifier = new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null);
        GroupPrincipal group = GroupPrincipal.FindByIdentity(new PrincipalContext(ContextType.Machine), identifier.Value);

        foreach (Principal principal in group.Members)
        {
            Console.WriteLine(principal.Name);
        }

我需要以某种方式获取每个用户的桌面路径。你能给我建议解决方案吗?非常感谢。

I need to create desktop shortcuts to my app for all administratos in the system.
I'm using the following code to get user list.

        var identifier = new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null);
        GroupPrincipal group = GroupPrincipal.FindByIdentity(new PrincipalContext(ContextType.Machine), identifier.Value);

        foreach (Principal principal in group.Members)
        {
            Console.WriteLine(principal.Name);
        }

I need somehow to get desktop path for each user. Could you suggest me solution? Many thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

三生池水覆流年 2025-01-04 05:06:21

您需要调用 SHGetFolderLocation 函数 (http://msdn.microsoft.com/en-us/library/bb762180.aspx),该函数允许您传入代表您感兴趣的用户的访问令牌

。想象一下这会有多困难。

You'll want to pinvoke the SHGetFolderLocation function (http://msdn.microsoft.com/en-us/library/bb762180.aspx) which allows you to pass in an access token that represents the user you're interested in.

No idea how difficult that will be though.

终止放荡 2025-01-04 05:06:21

您可以选择一些选项,具体取决于您想要的方式。

选项 A:

硬编码,但适用于默认系统设置

var userDirectory = Path.Combine("C:\\Users\\", principal.Name, "\\Desktop");

选项 B:

查找当前用户,然后将其交换出来

var currentUser = Environment.GetFolderPath(Environment.SpecialFolder.Desktop));
var newUser = currentUser.Replace("MyUser", principal.Name);

现在,选项 B 尚未经过充分测试,但应该可以工作!

There are a few options that you can go with, depending on how you want to do it.

Option A:

Hard coded, but it works for default system setups

var userDirectory = Path.Combine("C:\\Users\\", principal.Name, "\\Desktop");

Option B:

Find for the current user, then swap it out

var currentUser = Environment.GetFolderPath(Environment.SpecialFolder.Desktop));
var newUser = currentUser.Replace("MyUser", principal.Name);

Now, option B hasn't been fully tested, but should work!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文