运行命令行脚本时,是否可以获取当前用户的名称?操作系统是Windows XP.
我有一个需要当前登录用户名的Windows服务.我试过System.Environment.UserName,Windows身份和Windows窗体身份验证,但所有都返回" 系统 "作为用户,因为我的服务在系统特权运行.有没有办法在不更改我的服务帐户类型的情况下获取当前登录的用户名?
ReSharper警告我有可能NullReferenceException进入
WindowsIdentity windowsIdentity = new WindowsIdentity(WindowsIdentity.GetCurrent().Token);
Run Code Online (Sandbox Code Playgroud)
我查看了MSDN文档,但没有看到任何提及.此外,它没有意义,因为如果您运行可执行文件,您必须登录.
这只是一个ReSharper搜索模式吗?
我正在尝试获取当前用户的用户名.当我以Johnny Smith没有管理员权限的身份登录并运行我的应用程序时,它将返回正确的用户名,Johnny Smith.但问题是,当我右键单击并选择"以管理员身份运行"时,Windows将提示我为管理员登录屏幕,登录后我的应用程序返回用户名admin,而不是当前登录的用户.
我试过了:
strUserLabel.Text = Environment.UserName
Run Code Online (Sandbox Code Playgroud)
也
Dim WSHNetwork = CreateObject("WScript.Network")
Dim strUser = ""
While strUser = ""
strUser = WSHNetwork.Username
End While
strUserLabel.Text = strUser
Run Code Online (Sandbox Code Playgroud)
当提示为管理员时,两者都返回管理员用户名.
就像这个线程中的How do I get the current username in .NET using C#?
但代码
string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
Run Code Online (Sandbox Code Playgroud)
似乎不适用于 Windows 8 应用程序。
我怎样才能做到这一点?