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

标签 c# registry credentials

标题有点长,但我会尽力解释: 我正在尝试从一台机器(连接到域)连接到另一台机器,该机器也连接到域但丢失了 kerberos 的 supportedencryptiontypes。 小路: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\kerberos\parameters

基本上,当此值更改时,作为域管理员的我将无法管理或访问这台计算机,就好像这台计算机不再位于域中一样。 但是当我将这个值改回正确的值时(当我在本地与本地管理员用户连接时)我获得了完全的管理权限,看起来一切都很好,又很花花公子。

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

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

当然会在需要时发布此代码。

最佳答案

我在 SO: https://stackoverflow.com/a/1197430/4547223 找到了一个很好的类(class)

我成功地用这个类编写了一个快速示例:

...
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);
                }
            }
        }

    }
}

关于c# - 使用域上的(远程计算机的)本地凭据访问远程注册表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28739477/

相关文章:

c# - .NET Regex 等效于 Python Regex (?P=previousmatchname)

c# - 使用数据中的参数调用 C# 方法

c# - 由于 SecurityException 无法读取事件日志

windows - 使用Golang创建注册表项

c# - 如何在 XP 和 7 之间使用不同的浏览器或 CredentialCache.DefaultCredentials 代理

c# - HTTP客户端。在自动发现的代理上进行身份验证的默认凭据

java - 在企业应用程序 (EAI) 中将用户凭据存储在何处?

c# - 为什么 AutogenerateBindingRedirects 不适用于 Visual Studio 2017 中的 Web.config

c# - Sharepoint OLE DB - 无法插入记录? "Field not updateable"错误

windows-7 - 应用程序应如何使用 ForegroundLockTimeout 注册表值?