使用域(远程计算机上)的本地凭据访问远程注册表

时间:2015-02-26 10:06:24

标签: c# registry credentials

标题有点长但我会尝试解释: 我试图从一台机器(连接到一个域)连接到另一台机器,该机器也连接到一个域但丢失了supportedencryptiontypes kerberos。 路径: HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \ CurrentVersion \政策\系统\ Kerberos的\参数

基本上,当此值发生变化时,域管理员无法管理此计算机或访问它,就好像此计算机不再位于域中一样。 但是,当我将此值更改为正确的值时(当我与本地管理员用户本地连接时),我获得了完整的管理权限,而且似乎一切都很好并再次花钱。

所以基本上我试图做的是远程更改此值,这意味着使用它自己的本地管理员凭据连接到计算机的注册表并更改值。

我没有发布任何代码ATM因为我没有,除了使用当前登录的用户凭证远程访问注册表的正常方式。

如果需要,

会发布此代码。

1 个答案:

答案 0 :(得分:3)

我在SO:https://stackoverflow.com/a/1197430/4547223

找到了一个很好的课程

我在这堂课上写了一个快速的样本:

...
using Microsoft.Win32;
using System.Net;
...

string hostName = 192.168.1.1;

using (new NetworkConnection(@"\\" + hostName + @"\admin$", new NetworkCredential(@"ad\administrator", "TopSecret")))
{
    using (RegistryKey remoteHklm = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, hostName))
    {
        using (RegistryKey serviceKey = remoteHklm.OpenSubKey("System\\CurrentControlSet\\Services", true))
        {
            if (serviceKey != null)
            {
                foreach (string key in serviceKey.GetSubKeyNames())
                {
                    Console.WriteLine(key);
                }
            }
        }

    }
}