私は古いコードを継承しました(hoaryとは、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;
}
今、私は2つの問題を抱えています:
なぜIOExceptionが発生するのかはわかっています。Windows以外のマシンの場合は、それがスローされます。UnauthorizedAccessExceptionとSecurityExceptionの違いはあまり明確ではありません。誰かアイデアがありますか?
このコード全体は、ローカルログオンをすべてに使用するわけではないと誰もが考える前に設計されました。とにかく、レジストリにリモート接続するための認証をどのように行うかを理解できません。このコードは、WMIからこの情報を取得できない場合にのみ使用されるように見えます。
どちらかで助けがあれば素晴らしいでしょう。