2011-02-08 40 views
2

我的應用程序在Windows Server 2008下作爲服務運行。我正在尋找一種檢測活動控制檯會話的方法。這可以是控制檯或作爲管理會話啓動的RDP會話(「mstsc/admin」)。以編程方式檢測Windows Server 2008上的控制檯(管理)會話?

控制檯會話被稱爲「控制檯」,但我失去了RDP會話。 在Windows 2003下,這很容易,因爲控制檯會話總是以id 0運行。自Vista以來,這一切都發生了變化,所以我正在尋找另一種方法來查明。

我已經檢查過WTSxxx Win32 API,但還沒有找到我要找的。

任何人都可以幫忙嗎?

+0

你們是不是要確定何時有人登錄到箱子裏嗎? – 2011-02-08 16:52:06

+0

這不會起作用。谷歌「會話0隔離」可以更詳細地瞭解自Vista/Server2008以來服務無法與其他會話交互的原因。 – 2011-02-08 16:56:44

+0

@John:是的,我想知道什麼時候有人登錄框,但只有當它是一個管理(控制檯)會話。我不想檢測到標準的RDP會話。 – Tinus 2011-02-09 10:28:31

回答

0

一個選項是你的服務CanHandleSessionChangeEvent設置爲true然後執行OnSessionChange(SessionChangeDescription changeDescription)然後如果ChangeDescription.Reason == SessionChangeReason.ConsoleConnect你有人連接到控制檯。

protected override void OnSessionChange(SessionChangeDescription changeDescription) 
{ 
    if(changeDescription.Reason == SessionChangeReason.ConsoleConnect) 
    { 
     //use changeDescription.SessionId to find if the logged in user 
     // to that session is an administrator. 
    } 
} 
相關問題