我正在使用WPF应用程序开发一个测试工具。
其中一个按钮将运行此流:
-
安装安装驱动程序的exe。
-
正在运行WMI查询以查看是否安装了驱动程序。
-
卸载驱动程序。
-
运行WMI查询以查看驱动程序是否已卸载。
问题是,在运行一个查询之后,结果似乎缓存在应用程序中的某个地方,并且没有更新,因此该函数返回驱动程序仍然安装,即使我看到驱动程序没有安装(手动签入设备管理器,甚至在应用程序中断点时使用powershell手动运行查询)。
有没有办法清除缓存或刷新结果?
谢谢。
这是使用WMI查询检查驱动程序的函数:
private void CheckIfDeviceInstalled(string driver, bool shouldBeInstalled)
{
main_wtl.writeToConsoleAndLog("Searching for " + driver + " driver...", ConsoleColor.White);
SelectQuery query = new SelectQuery("Win32_pnpsigneddriver");
query.Condition = "DeviceName = '"+driver+"'";
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
var drivers = searcher.Get();
if (shouldBeInstalled)
{
if (drivers.Count > 0)
main_wtl.writeToConsoleAndLog(driver + " Driver exists.", ConsoleColor.Green);
else
main_wtl.writeToConsoleAndLog(driver + " Driver could not be found.", ConsoleColor.Red);
}
else
{
if (drivers.Count > 0)
main_wtl.writeToConsoleAndLog(driver + " Driver exists.", ConsoleColor.Red);
else
main_wtl.writeToConsoleAndLog(driver + " Driver could not be found.", ConsoleColor.Green);
}
}