C# 正在检索启动进程的实际用户帐户
我正在尝试检索已启动进程的用户帐户。到目前为止,我还没有找到任何能够检索到良好信息的答案。它们都返回用户名的C# 正在检索启动进程的实际用户帐户,c#,C#,我正在尝试检索已启动进程的用户帐户。到目前为止,我还没有找到任何能够检索到良好信息的答案。它们都返回用户名的字符串,该用户名不是帐户。我尝试了WMI和诊断,结果都是一样的,都是正确的一半 假设我启动记事本两次 第一个是我用帐户:\MyDomain\frank打开的 第二次,我用以下帐户打开它:\MyComputer\Franck 然后使用WMI或Diagnostics并返回用户名“Franck”,我无法知道它是在本地用户下运行还是在域用户下运行 一种方法是使用诊断 var procs = P
字符串,该用户名不是帐户。我尝试了WMI和诊断,结果都是一样的,都是正确的一半
假设我启动记事本两次
- 第一个是我用帐户:\MyDomain\frank打开的
- 第二次,我用以下帐户打开它:\MyComputer\Franck
然后使用WMI或Diagnostics并返回用户名“Franck”,我无法知道它是在本地用户下运行还是在域用户下运行
一种方法是使用诊断
var procs = Process.GetProcessesByName("Notepad").ToList();
var notepad1 = procs[0].StartInfo.Environment["Username"];
var notepad2 = procs[1].StartInfo.Environment["Username"];
两者都返回frank
,但其中一个是域帐户,另一个是本地帐户。如果您想要包含用户帐户的域的名称,那么您需要
如果您想要哪个域控制器验证客户端的登录请求,那么您需要查找
我的windows计算机上的值(本地用户):
因此,您应该能够从中确定它是在本地用户下运行还是在域用户下运行。tasklist/v
提供您感兴趣的相关信息,即用户名和域名
文档中没有显示任何示例输出
任务列表
显示本地计算机或远程计算机上当前正在运行的进程的列表
/v在输出中显示详细的任务信息
您可以将其与/fo csv
选项一起使用,以获取结果并对其进行解析
来自SuperUser的此命令具有显示输出的屏幕截图
您可以将此命令作为独立于应用程序的进程运行,类似于,但传递另一个。它也不起作用。这两个进程为所有Username
、UserDomain
和LoginServer
返回完全相同的值,它们是“frank”、“MyDomain”、“MyDomainController”。您是否在同一台机器上运行这两个进程?如果是,那么我想你会得到相同的值。检查这两个都在同一台机器上。登录为域的用户上的相同会话。稍后我将检查链接您是以代码启动这些进程,还是查看现有正在运行的进程?这很完美。它确实显示了运行流程的真实用户。
var procs = Process.GetProcessesByName("Notepad").
var userDomain = procs[0].StartInfo.Environment["UserDomain"];
var logonServer = procs[0].StartInfo.Environment["LogonServer"];
userDomain: "LAPTOP-DDK137L8"
logonServer: "\\LAPTOP-DDK137L8"