Первым делом пришло в голову получить 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");
}
}
}
В общем, ничего сложного, как оказалось))
Комментариев нет:
Отправить комментарий
Уважаемый комментатор, пишите грамотно.
С благодарностью, автор блога.