在.NET Core控制台应用程序中,如何等效于Environment.UserDomainName?

4

我需要确定当前登录的Windows用户的域。

在.NET Core中,我没有看到Environment.UserDomainName,也找不到任何替代方法。它是否隐藏在其他地方?

这不是System.Environment in .NET Core问题的重复,因为我没有在.NET Core中获取环境类方面遇到任何问题。我需要其中的特定属性UserDomainName,但它在那里缺失。


4
可能是 System.Environment in .NET Core 的重复问题。 - MethodMan
1个回答

4

很遗憾,Environment.UserDomainName在.NET Core中不可用。

然而,.NET Core提供了Environment.GetEnvironmentVariable(),它允许您访问环境变量。由于USERDOMAIN环境变量适用于Windows,HOSTNAME环境变量适用于Linux和Mac,因此您可以调用Environment.GetEnvironmentVariable("USERDOMAIN")(如果是Windows),或者Environment.GetEnvironmentVariable("HOSTNAME")(如果是Linux/Mac)。

这个类可能会有所帮助:

public static class Machine 
{
    public static string User(){
        return Environment.GetEnvironmentVariable("USERNAME") ?? Environment.GetEnvironmentVariable("USER");
    }

    public static string Domain(){
        return Environment.GetEnvironmentVariable("USERDOMAIN") ?? Environment.GetEnvironmentVariable("HOSTNAME");
    }
}

可以轻松获取用户名和域名: Machine.User();Machine.Domain();


2
谢谢。借助 System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(System.Runtime.InteropServices.OSPlatform.Windows) 的帮助,我相信我将能够找出应该提供哪个变量("USERDOMAIN" 或 "HOSTNAME")。 - Alex
直到你提到它,我才不知道 System.Runtime.InteropServices NuGet 包。感谢你的提示! - kimbaudi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接