代码之家  ›  专栏  ›  技术社区  ›  Ben

WMI查询不更新

  •  1
  • Ben  · 技术社区  · 6 年前

    我正在使用WPF应用程序开发一个测试工具。 其中一个按钮将运行此流:

    1. 安装安装驱动程序的exe。
    2. 正在运行WMI查询以查看是否安装了驱动程序。
    3. 卸载驱动程序。
    4. 运行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);
        }
    }
    
    0 回复  |  直到 6 年前