добавление ключа другим пользователям в реестре программным путем с использованием учетной записи администратора - PullRequest
4 голосов
/ 06 февраля 2012

Как добавить новый ключ в реестр других пользователей, используя c # (или c / c ++ или другой язык)

вот сценарий: Клиентский ПК: учетная запись «Администратор» (залогинен)

«Пользователь A» и «Пользователь B» могут входить в систему на клиентском ПК только через домен «myDomain» (они уже вошли в систему один раз и имеют собственную папку в пользователе на клиентском ПК)

, поэтому я запустите этот код, чтобы создать новый ключ с помощью администратора

Registry.CurrentUser.CreateSubKey (@ "SOFTWARE \ MyProgram \ DefaultConfig");

но проблема в том, что этот ключ создан только для учетной записи «Администратор»

Я хочу создать этот ключ для «Пользователя A» и «Пользователя B», при этом используя учетную запись «Администратор»

«Пользователь A» и «Пользователь B» не отображаются в HKEY_USERS

И если на одном компьютере больше пользователей, я хочу добавить к ним этот раздел реестра и возможно ли зациклить код, который добавляет ключ для всех пользователей? Цикл чтения и записи?

1 Ответ

3 голосов
/ 06 февраля 2012

Ключи для всех пользователей хранятся в корневом ключе HKEY_USERS. Под этим корневым ключом есть ключ для каждого пользователя, который имеет SID в качестве имени ключа.

Вам необходимо получить SID нужного пользователя, а затем получить доступ к этому корневому ключу:

// Gets the SID of the desired user
NTAccount f = new NTAccount(userName);
SecurityIdentifier s = (SecurityIdentifier)f.Translate(typeof(SecurityIdentifier));
string sid = s.ToString();

// Now you can access to the HKEY_USERS root key
string path = @"SOFTWARE\Console\DefaultConfig";
Registry.Users.CreateSubKey(string.Format("{0}\\{1}", sid, path));

Но, честно говоря, я не уверен, что это очень хорошая идея. Не могли бы вы вместо этого использовать Registry.LocalMachine, что относится ко всем пользователям?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...