Первым делом пришло в голову получить SID необходимого мне пользователя с помощью WMI. Оказалось это сделать можно, но запрос выполняется долго, т.к. в нашем домене порядка 3 тысяч машин, а пользователей ещё больше. Поэтому было решено искать другие решения данной задачи. И оно было незамедлительно найдено на каком-то буржуйском сайте. Точнее там я нашёл намёк куда копать. В итоге получил такое решение:
using System; using System.Security.Principal; using Microsoft.Win32; namespace WMISample { public class MyWMIQuery { static string GetAccountSid(string DomainUserAccount) { NTAccount f = new NTAccount(DomainUserAccount); SecurityIdentifier s = (SecurityIdentifier)f.Translate(typeof(SecurityIdentifier)); String sidString = s.ToString(); return sidString; } public static void Main() { string comp = "RemoteCompName"; string sid = GetAccountSid("DomainUserAccount"); Console.WriteLine("SID пользователя " + sid); RegistryKey key = RegistryKey.OpenRemoteBaseKey(RegistryHive.Users, comp) .OpenSubKey(sid + @"\Environment", true); key.SetValue("SAP", "1504"); } } }В общем, ничего сложного, как оказалось))
Комментариев нет:
Отправить комментарий
Уважаемый комментатор, пишите грамотно.
С благодарностью, автор блога.