【发布时间】:2016-05-26 14:52:56
【问题描述】:
背景:
在我的组织中,我们有一个用于一些关键功能的应用程序,但它仅在以特定用户身份运行时效果最佳。
原因是应用程序将其大量配置存储为本地用户会话,因此它变成了多用户的噩梦,这意味着我们不得不重复大量工作。
我们已经分配了一个用户来运行应用程序,并通过设置 runas 桌面快捷方式找到了解决方案。问题是我们发现应用程序不能同时运行更多。它只允许每个并发用户运行 1 个实例。
我用于应用程序的快捷代码:
C:\Windows\System32\runas.exe /user:mydomain\runas_user /savecreds "C:\Program Files\MyApp\MyApp.exe"
因此,我一直在尝试确定如何查看当前正在使用“runas”应用程序的用户,以便让他们优雅地关闭它。 任务管理器仅在用户名中显示“runas_user”,但我认为必须有某种方法来确定谁运行它或哪个用户会话正在查看它。
问题:
有什么方法可以找出(最好使用 powershell 或其他脚本)当前正在运行该应用程序的用户吗?
【问题讨论】:
-
也许在运行 runas 命令之前保存用户名(使用批处理脚本)(在任何人都可以写入文件的公共位置)?
echo %username% > c:\runas_user.txt -
我觉得这是个好主意,除了大多数人不会知道应用程序已经在运行,并且无论如何都会打开 runas 图标。这意味着公共文件将由试图运行应用程序的新人更新,并且可能会看到它的运行和保释。输入现在想知道的第三个人,打开公共文件以查看其中的用户 1 和 2 的名称。如果多人这样做,很快就会变得乏味。
-
有一种方法可以检查某个进程是否正在运行,使用批处理脚本。见:stackoverflow.com/questions/162291/…
-
感谢@fedterzi 我设法通过运行
tasklist /FI "USERNAME eq runas_user" /FI "IMAGENAME eq myapp.exe"来确定哪个会话名称以RDP-Tcp#2运行它。我可以在任务管理器中看到哪个用户名对应于RDP-Tcp#2。接下来我只需要找到一个有用的方法来解决"RDP-Tcp#2 is user X" -
@Kareem
quser.exe
标签: windows powershell batch-file command-line runas