【问题标题】:How to retrieve executable program path remotely如何远程检索可执行程序路径
【发布时间】:2012-07-09 19:37:28
【问题描述】:

我正在编写一个程序,它需要获取注册表中所有程序的安装日期和版本信息。我能够获得所有程序的列表,但我不知道如何访问有关程序本身的任何信息。如果我能够确定文件所在的文件路径,我将能够访问此信息。我碰巧知道我感兴趣的程序都位于C:\\Program Files (x86)\ 文件夹中,但它们位于我无法指定的子文件夹中。关于如何获取我正在检索的文件的文件路径的任何想法?

这是我的代码:

public List<BSAApp> getInstalledApps( string computerName )
        {
            List<BSAApp> appList = new List<BSAApp>();

            ManagementScope ms = new ManagementScope();
            ms.Path.Server = computerName;
            ms.Path.NamespacePath = "root\\cimv2";
            ms.Options.EnablePrivileges = true;
            ms.Connect();

            ManagementClass mc = new ManagementClass( "StdRegProv" );
            mc.Scope = ms;

            ManagementBaseObject mbo;
            mbo = mc.GetMethodParameters( "EnumKey" );

            mbo.SetPropertyValue( "sSubKeyName", "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths" );

            string[] subkeys = (string[])mc.InvokeMethod( "EnumKey", mbo, null ).Properties["sNames"].Value;

            if( subkeys != null )
            {
                foreach( string strKey in subkeys )
                {
                    string path = ?????
                    FileVersionInfo info = FileVersionInfo.GetVersionInfo( path );
                    appList.Add( new BSAApp( strKey, info.ProductVersion ) );                    
                }
            }

            return appList;
        }

【问题讨论】:

  • 您是否尝试过使用WMI服务查询已安装的程序和日期?
  • 并非所有程序都安装了 MIS,所以这是一个问题。

标签: c# .net wmi


【解决方案1】:
ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT * FROM  Win32_Product");
foreach(ManagementObject mo in mos.Get())
{
  Console.WriteLine(mo["Name"]);
  Console.WriteLine(mo["InstallState"]);
}

Get installed applications in a system

但正如那个帖子中提到的,它有其自身的缺点。

【讨论】:

  • 是的,我正在搜索的程序中有一半没有安装 MIS,所以在那里找不到。
  • 嘿,你是怎么做到的?或者,您还有这个问题吗?
  • 我能够使用上面的方法检索到一些需要的程序,并且不得不使用我的问题中的方法来解决其他程序的名称。
猜你喜欢
  • 2012-03-17
  • 1970-01-01
  • 2012-07-21
  • 1970-01-01
  • 1970-01-01
  • 2012-03-26
  • 2023-03-10
  • 2012-07-31
  • 1970-01-01
相关资源
最近更新 更多