以编程方式使用pipe理员帐户向registry中的其他用户添encryption钥

如何在使用c#(或c / c ++或其他语言)的其他用户的registry中添加新密钥

这里是这种情况:客户端PC:“pipe理员”帐户(login)

“用户A”和“用户B”只能通过域“myDomain”login到客户端PC上(他们已经login了一次,并且在客户端PC上有自己的文件夹)

所以我将运行这个代码来使用pipe理员来创build一个新的密钥

Registry.CurrentUser.CreateSubKey(@ “SOFTWARE \ myProgram \ DefaultConfig”);

但问题是,这个键只是为“pipe理员”帐户创build的

我还想使用“pipe理员”帐户为“用户A”和“用户B”创build此密钥

“用户A”和“用户B”都不会出现在HKEY_USERS中

如果在同一台PC上有更多的用户,我想将这个registry键添加到他们也有可能循环一个代码,为所有用户添加一个键? 读写循环?

所有用户的密钥都存储在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而是适用于所有用户?