多台服务器的GAC比较工具?

有没有人知道一个工具,它允许我生成我的Web场中所有服务器上安装到.NET GAC的程序集的报告? (30-40台服务器) 或者,是否有人通过WMI,远程注册表查询或其他技术以编程方式访问信息的某种方式有指针或链接?     
已邀请:
感谢Kragen,暗示在Explorer的GAC视图的单板下面,存在我可以使用System.IO命名空间查询的文件。幸运的是我可以访问每个服务器。 对于单个程序集,我只需要在许多服务器上查询GAC中存在的版本。虽然远非一个完整的报告应用程序,但这个片段很好地满足了我的目的:
private static void QueryServerGAC(string IP)
{
    string rootPath = String.Format(@"\{0}C$WINDOWSAssembly", IP);
    DirectoryInfo root = new DirectoryInfo(rootPath);

    foreach (DirectoryInfo gacDir in root.GetDirectories("GAC*")) // GAC, GAC_32, GAC_MSIL
    {
        foreach (DirectoryInfo assemDir in gacDir.GetDirectories("MyAssemblyName"))
        {
            foreach (DirectoryInfo versionDir in assemDir.GetDirectories())
            {
                string assemVersion = versionDir.Name.Substring(0, versionDir.Name.IndexOf('_'));
                foreach (FileInfo fi in versionDir.GetFiles("*.dll"))
                {
                    FileVersionInfo vi = FileVersionInfo.GetVersionInfo(fi.FullName);
                    Console.WriteLine("{0}t{1}t{2}t{3}", IP, fi.Name, assemVersion, vi.FileVersion);
                }
            }
        }
    }
}
可以为每个感兴趣的服务器IP调用一次,并将IP,DLL名称,程序集版本和FileVersion打印到控制台。 随意使用此代码并根据您自己的目的进行修改。     
您可以禁用默认GAC视图以将其转换为注册表中的普通资源管理器视图,只需将以下值设置为1:
HKEY_LOCAL_MACHINESoftwareMicrosoftFusion
(来源http://sqlmusings.wordpress.com/2007/11/17/how-to-disable-gac-view/) 然后,您可以使用一些文件夹比较工具,或者只计算出文件夹名称中存在的程序集。 仅供参考 - 这只是关闭了资源管理器视图,但是与文件系统的其他交互点(例如C#中的File对象或命令提示符)已经看到了这个视图,所以可能没有必要在所有的上面设置这个注册表项。你的服务器。     

要回复问题请先登录注册