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

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

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

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

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

不知道会有多困难。

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

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