某些驱动程序在启动时加载时使用写入注册表的参数来配置自身。
我可以修改这些值然后重新启动,但我想知道是否可以强制重新加载驱动程序,使更改生效而无需重新启动。

具体来说,我说的是视频驱动程序(nvidia)。

我在某处读到,通过 pINvoke() [User32.ll]::ChangeDisplaySettings() 以 640x480x8bits 分辨率调用(它太低以至于现代驱动程序不支持)将强制 Windows 加载“标准 VGA驱动程序”,并以当前分辨率再次调用将再次加载 nvidia 驱动程序。

但这不起作用。至少在 Windows 7 中,即使低分辨率未显示为“支持”,系统也会将屏幕缩小到屏幕中央的一个小方块,显示低分辨率而不卸载 nvidia 驱动程序。

那么,是否有任何 .NET/Win32 API、要重新启动的服务或任何强制重新加载视频驱动程序的方法?

也许以编程方式禁用设备(就像您可以从设备管理器中执行的那样)并再次重新启用它?

任何想法?

非常感谢。

最佳答案

我终于做到了。遵循禁用/重新启用设备的想法实际上有效。

当然,问题是从设备管理器禁用您的视频卡设备不是一个好主意,因为您可能无法再次重新启用它。

以编程方式执行此操作,虽然看起来并不那么不安全。理论上,假设应用程序已成功禁用设备,重新启用它应该不会造成问题。

感谢 Justin Grant,我在 stackoverflow 中找到了 here 一个 奇妙的 类来完成此任务。

当重新启用视频设备时,视频驱动程序会重新加载自身。

希望它可以帮助某人。

10-08 08:28
查看更多