c# - 检测 .net 应用程序是否使用 runas/netonly 启动

标签 c# runas

是否可以检测是否使用runas命令打开应用程序?

我如何检测使用了哪个用户?

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

最佳答案

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

System.Security.Principal.WindowsIdentity.GetCurrent()

请注意,使用 /netonly,无法在本地进程中获取提供的凭据。 LSA 会处理这个问题,据我所知,您无法通过本地流程完成此操作。

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

你甚至可以这样做:

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

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

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

关于c# - 检测 .net 应用程序是否使用 runas/netonly 启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38390756/

相关文章:

powershell - 如何以另一个用户身份运行程序并在 powershell 中添加参数?

powershell - 通过 powershell 以管理员身份启动 msiexec

c# - 创建包提交到 Windows Phone 8.1 商店时出错

C# 查找套接字 ID?

nsis - 您如何使用 NSIS 请求管理员权限?

java - 读取 ProcessBuilder 或 DefaultExecutor 启动的 "RunAs"子进程的标准输出

c# - 在 MVVM WPF 应用程序中打开新窗口

c# - 如何使用 .NET 4 代理 REST API

c# - 在辅助监视器上最大化时设置 wpf 应用程序屏幕高度