【问题标题】:Determine from within code which user my process is running as从代码中确定我的进程正在以哪个用户身份运行
【发布时间】:2011-05-14 17:26:23
【问题描述】:

除了好奇之外,我真的没有迫切的理由提出这个问题 - 使用 C#,有没有办法从代码中确定我的进程正在以哪个用户身份运行?用代码来说明:

static void Main(string[] args)
{
  string userID;
  //what goes here to fill in this userID variable?
  Console.out.WriteLine(string.Format("This process is running as {0}.", userID));
}

【问题讨论】:

    标签: c# process


    【解决方案1】:
    string userID = WindowsIdentity.GetCurrent().Name
    

    来自 MSDN:WindowsIdentity.GetCurrent()WindowsIdentity.Name

    【讨论】:

    • 如果进程在其中一个帐户下运行,它不仅会获取我的登录身份,还会返回 LOCAL SYSTEM 或 NETWORK SERVICE 等?
    • 我认为 Environment.UserName 是更传统的快捷方式。
    • @Zann,没错,它返回进程的身份,而不是登录的用户帐户,尽管它们可能相同,也可能不同。例如,在典型的 IIS 工作进程中,它将正确返回 LOCAL SYSTEM 或 NETWORK SERVICE。 @Hans:OP 询问进程的身份,而不是当前登录到控制台/会话的用户(尽管它们可以相同!)
    • 谢谢@Mike,正是我想要的。
    【解决方案2】:

    string UserID = Environment.UserName;

    【讨论】:

      【解决方案3】:

      有多种方法,具体取决于您运行的应用程序类型。

      Here's an article 关于使用线程主体检查用户数据/授权。

      This thread 包含其他一些方法,虽然没有详细说明。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-23
        • 2016-05-25
        • 2010-11-13
        • 1970-01-01
        • 2023-03-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多