C# Win32\u产品安装位置(错误)
在C#中,我试图从Win32#产品的实例中获取一些属性,但我似乎有一个错误,即“对象引用未设置为对象的实例” 代码如下:C# Win32\u产品安装位置(错误),c#,wmi,C#,Wmi,在C#中,我试图从Win32#产品的实例中获取一些属性,但我似乎有一个错误,即“对象引用未设置为对象的实例” 代码如下: class Package { public string productName; public string installDate; public string installLocation; } class InstalledPackages { public static List<Package> get() {
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["InstallDate2"].ToString();
如果我要的是InstallDate,它就行了
(我使用的是Windows 7 Ultimate x64)
InstallLocation
根据运行情况,该软件包的null
gwmi -Class Win32_Product -Property Name,InstallLocation,InstallDate | ft Name,InstallLocation,InstallDate
在PowerShell中,在许多情况下,InstallLocation
似乎为空。用null检查替换问题行应该可以解决问题
gwmi -Class Win32_Product -Property Name,InstallLocation,InstallDate | ft Name,InstallLocation,InstallDate