【问题标题】:Detect if .net application is started with runas /netonly检测 .net 应用程序是否使用 runas /netonly 启动
【发布时间】:2016-07-15 07:53:59
【问题描述】:

是否可以通过runas命令检测应用是否打开?

以及如何检测使用了哪个用户?

runas /netonly /user:DOM\usr "C:\App.exe"

【问题讨论】:

  • 检查这是否适合你Run AS

标签: c# runas


【解决方案1】:

您可以检查正在运行应用程序的用户,使用

System.Security.Principal.WindowsIdentity.GetCurrent()

请注意,使用/netonly,无法在本地进程上获取提供的凭据。 LSA 会处理这个问题,据我所知,您无法从本地流程中做到这一点。

对于on this link 的原因有一些很好的解释,但原因基本上归结为:虽然您提供的凭据被存储,但在您执行任何类型的远程身份验证(使用 SSPI)之前甚至不会检查它们,以及那些仅在实际的远程计算机上进行检查。

你甚至可以这样做:

runas /netonly /user:FAKE\fake something.exe

甚至不会检查凭据...所以在进行远程身份验证之前,您基本上不会获得身份验证令牌

我能看到的唯一解决方案是尝试运行一个返回用户凭据的远程进程。

【讨论】:

  • 不,这不给用户 DOM\usr。
  • @Tim 是的,我错过了/netonly,看看我的更新...我认为没有办法做到这一点
  • 这仍然必须是可能的。在我的应用程序中,我使用 ServerManager.OpenRemote(ServerName) 对其进行了测试。该方法能够检测到用户。
  • 是的,如果它使用 SSPI,它将使用您提供的凭据在远程计算机上请求一个令牌:然后您可以找出远程计算机上的用户并将其返回到本地,但是这需要在远程计算机上完成,而不是在本地进程上(再次,据我所知)
猜你喜欢
  • 2015-12-06
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 2017-06-05
  • 2022-08-11
  • 1970-01-01
  • 1970-01-01
  • 2022-06-22
相关资源
最近更新 更多