Win32_Product安装位置(错误)

问题描述 投票:0回答:3

在C#中,我试图从Win32_Product的实例中获取一些属性,但是我似乎遇到一个错误,提示“对象引用未设置为对象的实例。”

这里是代码:

class Package {
 public string productName;
 public string installDate;
 public string installLocation;
}

class InstalledPackages
{
    public static List<Package> get()
    {
        List<Package> packages = new List<Package>();
        string query = "SELECT * FROM Win32_Product";
        ManagementScope oMs = new ManagementScope();
        ObjectQuery oQuery = new ObjectQuery(query);
        ManagementObjectSearcher oSearcher = new ManagementObjectSearcher(oMs, oQuery);
        ManagementObjectCollection installedPackages = oSearcher.Get();
        foreach (ManagementObject package in installedPackages)
        {
            Package p = new Package();
            p.productName = package["Name"].ToString();
            p.installLocation = package["InstallLocation"].ToString();
            p.installDate = package["InstallDate"].ToString();
            packages.Add(p);
        }
        return packages;
    }
}

该异常出现在到达时

p.installLocation = package["InstallLocation"].ToString();

此外,如果我尝试这样做,我会得到一个

p.installLocation = package["InstallDate2"].ToString();

如果我要求安装日期,则可以使用。

(我正在使用Windows 7 Ultimate x64)

c# wmi
3个回答
1
投票

基于跑步

gwmi -Class Win32_Product -Property Name,InstallLocation,InstallDate | ft Name,InstallLocation,InstallDate

在PowerShell中,在许多情况下InstallLocation似乎为空。用null检查替换问题行应该可以解决问题。


1
投票

该程序包的[InstallLocationnull


0
投票

为什么某些软件的InstallationPath为空?很抱歉在这里评论。我试图搜索此文件,但找不到。

© www.soinside.com 2019 - 2024. All rights reserved.