的Visual C++ 2008OpenInputDesktop(),以確定安全/登錄桌面
如何建立當前的交互式用戶是否是在任的鎖定桌面(windows鍵L)或關機屏幕(Vista或7)在退出時等待程序關閉。
HDESK hd = OpenInputDesktop(0,false,READ_CONTROL);
這適用於默認桌面上的用戶應用程序,但在鎖定或關閉桌面時出現錯誤代碼5,因爲我知道用戶無權打開安全桌面對象。
從在SYSTEM帳戶下運行的服務調用此函數會返回錯誤1(無效函數)。我相信服務在任何情況下都會出現錯誤的會話(會話0),並且無法確定任何其他會話的交互式桌面。
我有一個應用程序在當前交互式用戶下運行,而且系統服務正在運行,因此可以從兩者中執行代碼。
我是否應該嘗試枚舉所有會話,Window工作站和桌面?
即使那麼我如何確定當前的交互式桌面,如果我只能從會話0中的SYSTEM服務調用OpenInputDesktop?
也許答案是以某種方式監視用戶切換桌面的時間?那可能嗎? – Peter350 2010-11-23 21:03:43