2013-01-19 73 views
0

我試圖在互聯網上無處不在找到這一點。我想在每次登錄後都啓動程序(LoginUI.exe)。是否有可能檢測用戶何時鎖定了他/她的計算機(Winkey + L),然後啓動我的程序?如果這是不可能的,那麼一旦用戶剛剛登錄,是否有辦法檢測?每次登錄後啓動程序

+0

你想用這個程序做什麼..?你想監視空閒時間嗎?擊鍵?等...? – MethodMan

+0

我只是無法啓動,當它檢測到某人已登錄電腦 – Terrii

回答

5

您可以編寫一個程序,監視Microsoft.Win32通過SystemEvents用戶會話狀態:

// Put this somewhere in your console app/windows form initialization code. 
SystemEvents.SessionSwitch += OnSessionSwitch; 

// Put this method in your console app/windows form somewhere. 
static void OnSessionSwitch(object sender, SessionSwitchEventArgs e) 
{ 
    switch (e.Reason) 
    { 
    case SessionSwitchReason.SessionLogon: 
     // User has logged on to the computer. 
     break; 

    case SessionSwitchReason.SessionLogoff: 
     // User has logged off from the computer. 
     break; 

    case SessionSwitchReason.SessionUnlock: 
     // The computer has been unlocked. 
     break; 

    case SessionSwitchReason.SessionLock: 
     // The computer has been locked. 
     break; 
    } 
} 

在你的情況,你可以做Process.Start(...),當你發現無論是SessionLogonSessionUnlock

+0

這很好,但它無法弄清楚什麼是「SystemEvents」。SessionSwitch + = SystemEvents_SessionSwitch;「它會一直彈出」sessionswitch在類型爲「 – Terrii

+0

時使用類似事件」請參閱此編輯是否使它更清晰。 – Erik

0

看起來像SO已經有這種類型的東西的一些信息。在C#中的註冊表修改看起來像它會做的伎倆。

Programmatically start application on login

+0

這是好的,但我希望它開始後,每次登錄不只是第一個?這仍然有效嗎? – Terrii

+0

當你說每次登錄時,你是在說每次用戶完全登錄到機器時?如果是這樣,是的,我相信這應該工作,但你必須測試它。現在,如果你正在談論一個用戶鎖定他們當前的會話,然後通過提供用戶憑證來解鎖會話,否則這不會起作用,儘管我會問你爲什麼需要在那時重新啓動一個已經運行的應用程序。 –

+0

不,因爲它已經開始了..你能解釋這是什麼類型的程序..?也許有人可以給你更好的解決方案 – MethodMan

0

我覺得this是你在找什麼人!下面是相關片段:

WshShell shell = new WshShell(); 
string shortcutAddress = startupFolder + @"\MyStartupShortcut.lnk"; 
IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(shortcutAddress); 
shortcut.Description = "A startup shortcut. If you delete this shortcut from your computer, LaunchOnStartup.exe will not launch on Windows Startup"; // set the description of the shortcut 
shortcut.WorkingDirectory = Application.StartupPath; /* working directory */ 
shortcut.TargetPath = Application.ExecutablePath; /* path of the executable */ 
shortcut.Save(); // save the shortcut 
+0

這很好,但它創建快捷方式時出錯:/這行代碼「IWshShortcut shortcut =(IWshShortcut)shell.CreateShortcut(shortcutAddressress);」 – Terrii

+0

請指定錯誤。請明確點。 –

+0

只有鏈接的答案是不好的答案。如果鏈接的頁面丟失會發生什麼? – ChrisF

相關問題