2016-12-02 64 views
0

我想解決以下問題:如何檢查用戶登錄到Windows的時間?

我的C++程序在用戶登錄時自動啓動,但程序依賴於某些服務在非常慢的計算機上不會啓動幾分鐘(經常發生)並且不起作用正確。

  • 如果它不能正常工作,我想告訴用戶他要等待多一點,纔可以開始工作的通知,但幾分鐘後,
  • 如果程序仍然無法正常工作(經常發生),它必須顯示警告消息 - 出現問題並需要用戶交互。

我在事件查看器中看到一個條目(Winlogon),但用戶是SYSTEM,我想知道使用我的程序的特定用戶。

有一些簡單的方法來檢查時開始我的程序的用戶已經登錄?

回答

2

當你的程序運行作爲用戶登錄的一部分,它將用戶之前沒有運行已登錄。

正確這裏的解決方案是檢查依賴是否已經開始。使用服務控制管理器(OpenSCManager),查詢每個服務狀態(QueryServiceStatusEx)。狀態起始開始之間存在差異;你需要後者。

1

您可以使用NetGetUserInfo()獲取有關用戶帳戶信息。上次登錄時間爲USER_INFO_2結構。

當第一參數爲NULL,則功能是指在本地計算機上的用戶。

+0

恐怕你被這個問題的糟糕措辭誤導了。這涉及到服務器登錄。 – MSalters

+0

也許這個答案更符合我的問題,但我的問題的根源更好地解決了MSalters的答案。無論如何,我有NetGetUserInfo()返回「2221」錯誤的問題,我發現http://stackoverflow.com/questions/3371807/get-current-users-last-logon/類似的問題,但答案是複雜的我完全理解或可靠地執行所有情況。 –