2011-06-27 68 views
0

有什麼,提供系統空閒?我們想用C#來獲取所有會話系統的空閒時間,把機器如果沒有人使用本機X分鐘註銷。檢查系統空閒和使系統進入註銷狀態5分鐘後(如果沒有人使用)

這個任何想法.....

+0

你想運行自動註銷Windows終端服務器上,或者像桌面會話的會話?我有兩個解決方案,但如何做到這一點取決於你是否運行終端服務器。 –

+0

YAA ..我有窗口(桌面應用程序)的登錄按鈕的形式和一些會議正在運行時,用戶登錄,我想,當用戶不使用任何形式的,當他登錄系統做自動退出...你會PLS張貼兩種解決方案我..這將真正幫助我.. – user682417

回答

3

如果您運行的是終端服務器這可以通過組策略或通過終端服務配置來完成

Server 2003

Server 2008

Server 2008 R2


要註銷,你將需要有在後臺運行的程序的桌面會話(這不會爲系統服務工作,它必須運行的交互式會話的一部分),將檢查的登錄時間GetLastInputInfo,然後它可以撥打ExitWindowsEx註銷。

class Program 
{ 
    [StructLayout(LayoutKind.Sequential)] 
    struct LASTINPUTINFO 
    { 
     public static readonly int SizeOf = Marshal.SizeOf(typeof(LASTINPUTINFO)); 

     [MarshalAs(UnmanagedType.U4)] 
     public int cbSize; 
     [MarshalAs(UnmanagedType.U4)] 
     public UInt32 dwTime; 
    } 


    [DllImport("user32.dll")] 
    static extern bool GetLastInputInfo(ref LASTINPUTINFO plii); 

    [DllImport("user32.dll", SetLastError = true)] 
    [return: MarshalAs(UnmanagedType.Bool)] 
    static extern bool ExitWindowsEx(uint uFlags, uint dwReason); 

    static void Main(string[] args) 
    { 
     bool running = true; 
     while (running) 
     { 
      if (GetLastInputTime() > 60 * 15) //15 min idle time 
      { 
       ExitWindowsEx(0, 0); 
       running = false; 
      } 
      Thread.Sleep(1000 * 60); //check once per min. 
     } 
    } 

    static int GetLastInputTime() 
    { 
     int idleTime = 0; 
     LASTINPUTINFO lastInputInfo = new LASTINPUTINFO(); 
     lastInputInfo.cbSize = Marshal.SizeOf(lastInputInfo); 
     lastInputInfo.dwTime = 0; 

     int envTicks = Environment.TickCount; 

     if (GetLastInputInfo(ref lastInputInfo)) 
     { 
      int lastInputTick = (int)lastInputInfo.dwTime; 

      idleTime = envTicks - lastInputTick; 
     } 

     return ((idleTime > 0) ? (idleTime/1000) : 0); 
    } 

} 

我需要這樣做一次,並且無法找到源代碼,這可能會幫助別人誰是這樣的問題goggle。所以即使我正在回答,我仍然投下了這個問題。

UPDATEHere is a technique得到這個作爲服務

+0

它像一個桌面會話... – user682417

+0

有沒有像我們添加計時器到Windows任何服務形成。當用戶登錄定時器計數開始,當用戶沒有做任何事情,然後定時器爲零,系統自動註銷....我正在尋找這種類型的服務......你可以給任何想法關於這個..... – user682417