2016-05-26 32 views
4

背景:如何找出誰正在運行runas應用程序?

在我的組織存在,我們使用的一些關鍵功能的應用程序,但是當一個特定的用戶運行它只是效果最佳。

原因是應用程序將大量配置存儲爲本地用戶會話,因此它變成了多用戶噩夢,這意味着我們必須重複大量工作。

我們已經分配了一個用戶來運行該應用程序,並通過設置runas桌面快捷方式找到了解決方案。問題是我們發現應用程序不能同時運行多次。它只允許每個併發用戶運行1個實例。

我使用的應用程序的快捷代碼:

C:\Windows\System32\runas.exe /user:mydomain\runas_user /savecreds "C:\Program Files\MyApp\MyApp.exe" 

因此,我一直在努力,以確定我怎麼能誰正在使用「運行方式」的應用看,這樣我就可以讓他們到優雅地關閉它。 任務管理器只顯示用戶名中的「runas_user」,但我想必須有某種方法來確定誰運行它或哪些用戶會話正在查看它。

問:

有一些方法可以讓我找到了(最好使用PowerShell或其他一些腳本)誰是當前運行的應用程序?

+0

運行runas命令(在公共場所,其中任何人都可以寫一個文件)之前,也許保存用戶名(用批處理腳本)? 'echo%username%> c:\ runas_user.txt' – fedterzi

+0

我覺得這是一個好主意,除了大多數人不知道應用程序已經運行,並且只是打開runas圖標。這意味着通用文件將由嘗試運行該應用程序的新用戶更新,並且可能會看到其運行和保釋。輸入現在想知道的第三人,打開公共文件以查看用戶1和用戶2的姓名。如果多人這樣做,它會很快變得乏味。 – Kareem

+0

有一種方法可以使用批處理腳本檢查某個進程是否正在運行。見:http://stackoverflow.com/questions/162291/how-to-check-if-a-process-is-running-via-a-batch-script – fedterzi

回答

1

Windows安全事件日誌應該顯示這一點。所有Windows 2008+身份驗證事件都是事件ID 4624(通過)或4625(失敗)。將它與登錄類型結合起來應該可以得到你想要的。

很多關於sans.org上登錄類型this PDF的詳細信息(從第10頁開始)。我認爲部分,你將是最感興趣的是「3.7 NewCredentials」:

使用Runas命令下,不同的用戶帳戶 與/ netonly開關啓動一個程序時,Windows記錄與 登錄/註銷事件登錄類型9.當使用/ netonly以RunAs啓動程序時, 程序在當地計算機上執行,因爲當前登錄的用戶爲 ,但對於與網絡上其他計算機的任何連接,Windows 都使用該帳戶連接到這些計算機在RunAs 命令中指定。如果沒有/ netonly Windows上運行的本地 計算機和網絡爲指定用戶的程序,並記錄了與登錄類型2

快速和骯髒的方式來獲得的事件ID和登錄類型使用PowerShell的 登錄事件:

$recentSecLog = 
Get-EventLog -LogName Security -Newest 1000 | Where {$_.EventID -match "4624|4625"} 

$recentSecLog | Where {$_.message -match "Logon\sType:\s+9"} 
相關問題