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

时间:2012-01-19 09:23:59

标签: c# shortcuts

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

        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);
        }

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

2 个答案:

答案 0 :(得分:0)

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

不知道会有多困难。

答案 1 :(得分:-3)

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

选项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尚未经过全面测试,但应该可以使用!