SetWindowPlacement不移动某些窗口

我正在编写一个Windows 10 C#程序来保存和恢复打开的窗口的位置和大小(无论是显示还是最小化)。 以下循环几乎可以在所有的窗口上运行,但不能用于资源监视器或计算机pipe理窗口:

foreach (KeyValuePair<HWND, InfoWindow> entry in openWindows) { IntPtr hWnd = entry.Key; Rectangle rect = entry.Value.Rect; WINDOWPLACEMENT wpl = new WINDOWPLACEMENT(); if (!GetWindowPlacement(hWnd, ref wpl)) continue; wpl.rcNormalPosition = rect; SetWindowPlacement(hWnd, ref wpl); } 

SetWindowPlacement函数似乎对资源监视器或计算机pipe理窗口的位置或大小没有影响。 我也尝试过使用SetWindowPos ,它对这些窗口也没有任何影响(但在我尝试的所有其他窗口上工作)。

为什么这些特定的窗口行为有所不同? 有什么替代方法来移动这些窗口?

谢谢,乔纳森和汉斯。 这是问题所在。 如果我运行我的代码提升,它适用于所有的窗口。