我正在尝试使用WMI检测屏幕保护程序是否在远程PC上运行。远程PC是Windows 7,但它也适用于W8 / W10。
到目前为止,我正在测试在远程PC上手动设置屏幕保护程序(通过控制面板)并依赖包含 SCREEN_SAVER_NAME.SCR 的WMI Win32_Process
:
ConnectionOptions options = new ConnectionOptions();
options.Username = "Username";
options.Password = "password";
ManagementScope scope =
new ManagementScope(
"\\\\10.1.1.1\\root\\cimv2", options);
scope.Connect();
while (true)
{
ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_Process");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
ManagementObjectCollection queryCollection = searcher.Get();
foreach (var item in queryCollection)
{
if ((string)item["Description"] == "PhotoScreensaver.scr")
{
Console.WriteLine("screensaver running");
}
}
}
通过远程PC上的控制面板设置屏幕保护程序时,此功能正常。
但是,在通过组策略设置屏幕保护程序时,WMI Win32_Process
不再列出.SCR文件,我的软件显然无法按预期工作。
知道如何检测使用GPO设置的运行屏幕保护程序吗?