我的windows服務應該保存用戶的名稱,此刻登錄/註銷。 下面的代碼對我的作品,但沒有保存用戶名:Windows服務:用戶登錄時獲取用戶名
protected override void OnSessionChange(SessionChangeDescription changeDescription)
{
try
{
string user = "";
foreach (ManagementObject currentObject in _wmiComputerSystem.GetInstances())
{
user += currentObject.Properties["UserName"].Value.ToString().Trim();
}
switch (changeDescription.Reason)
{
case SessionChangeReason.SessionLogon:
WriteLog(Constants.LogType.CONTINUE, "Logon - Program continues: " + user);
OnContinue();
break;
case SessionChangeReason.SessionLogoff:
WriteLog(Constants.LogType.PAUSE, "Logoff - Program is paused: " + user);
OnPause();
break;
}
base.OnSessionChange(changeDescription);
}
catch (Exception exp)
{
WriteLog(Constants.LogType.ERROR, "Error");
}
}
編輯: foreach循環給我一個錯誤:
Message: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)) Type: System.UnauthorizedAccessException
但在我看來,這個代碼是而不是解決方案,因爲它可以保存所有登錄到服務器的用戶。
@Jamiec這就是爲什麼我開了這個問題,得到你覆蓋方法的用戶名。我應該在同一個文本中提出正確答案的問題嗎?該代碼僅用於顯示其他人羣我的代碼看起來如何直到現在 – ZerOne
感謝downvote ..任何評論爲什麼有人downvote ?? – ZerOne
不是我,但是SO的重點不在於爲您編寫代碼,而是爲了幫助您自己完成。你沒有向我們展示任何你已經嘗試過的東西,你完全要求答案。也就是說,也許可以看看Environment.Username。 – bkribbs