代码之家  ›  专栏  ›  技术社区  ›  Franck

检索启动进程的实际用户帐户

c#
  •  3
  • Franck  · 技术社区  · 6 年前

    好的 信息。所有的人都返回了 string

    假设我启动记事本两次。

    • 第一个我打开它的帐户:\MyDomain\Franck
    • 第二,我打开它的帐户:\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"];
    

    两者都返回 Franck 但一个是域帐户,另一个是本地帐户。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Community CDub    5 年前

    tasklist /v 提供您感兴趣的相关信息,即用户名和域名。

    official 文档没有显示任何示例输出。

    显示本地计算机或远程计算机上当前正在运行的进程的列表。

    你可以和它一起使用 /fo csv

    这个 answer 超级用户的屏幕截图显示了输出。

    this ,但是经过另一个 parameters .

        2
  •  1
  •   Bakri Bitar    6 年前

    如果您想要包含用户帐户的域的名称,那么您正在查找 UserDomain Environment Variable

    如果您想要哪个域控制器验证客户端的登录请求,那么您需要 LogonServer Environment Variable

    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"