Получить рабочий стол для всех администраторов в C # - PullRequest
4 голосов
/ 19 января 2012

Мне нужно создать ярлыки рабочего стола для моего приложения для всех администраторов в системе. Я использую следующий код для получения списка пользователей.

        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 голосов
/ 19 января 2012

Вы захотите вызвать функцию SHGetFolderLocation (http://msdn.microsoft.com/en-us/library/bb762180.aspx), которая позволяет вам передать маркер доступа, представляющий интересующего вас пользователя.

Не знаю, насколько это будет сложно.

0 голосов
/ 19 января 2012

Существует несколько опций, которые вы можете использовать, в зависимости от того, как вы хотите это сделать.

Опция 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 не был полностью протестирован, но должен работать!

...