我继承了一段陈旧的代码(老旧,我的意思是有很多未记录的错误修复,而不是 WTF-y),并且有一部分给我带来了一些麻烦。以下是它连接到远程注册表以获取添加/删除程序键的方式:
try
{
remoteKey = RegistryKey.OpenRemoteBaseKey(
RegistryHive.LocalMachine, addr.Value).OpenSubKey(
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall");
return 1;
}
catch (IOException e)
{
IOException myexception = e;
//Console.WriteLine("{0}: {1}: {2}",
// e.GetType().Name, e.Message, addr.Value);
return 2;
}
catch (UnauthorizedAccessException e)
{
UnauthorizedAccessException myexception = e;
//Console.WriteLine("{0}: {1}: {2}",
// e.GetType().Name, e.Message, addr.Value);
return 3;
}
catch (System.Security.SecurityException e)
{
System.Security.SecurityException myexception = e;
//Console.WriteLine("{0}: {1}: {2}",
// e.GetType().Name, e.Message, addr.Value);
return 4;
}
现在,我有两个问题:
我知道为什么 IOException - 如果它是非 Windows 机器,它会抛出它。UnauthorizedAccessException 和 SecurityException 之间的区别我不太清楚。有人有什么想法吗?
这整段代码是在任何人认为您可能不会对所有事情都使用本地登录之前设计的。无论如何,我无法弄清楚您如何进行身份验证以远程连接到注册表,并且此代码看起来仅在一种情况下使用,即无法从 WMI 获取此信息。
任何一个帮助都会很棒。