如何在Windows环境中找到当前用户?

Geo*_*Geo 151 windows batch-file

运行命令行脚本时,是否可以获取当前用户的名称?操作系统是Windows XP.

JRL*_*JRL 190

您可以使用username变量: %USERNAME%


Mag*_*dhe 81

用户名:

echo %USERNAME%
Run Code Online (Sandbox Code Playgroud)

域名:

echo %USERDOMAIN%
Run Code Online (Sandbox Code Playgroud)

您可以通过set从命令提示符运行命令来获取环境变量的完整列表.


Fre*_*man 59

只需在命令提示符下使用此命令

C:\> whoami
Run Code Online (Sandbox Code Playgroud)


the*_*ill 44

它应该在%USERNAME%.显然这很容易被欺骗,所以不要依赖它来保证安全.

有用的提示:set命令提示符中的类型将列出所有环境变量.

  • 您的“网络配置工作站”| find "用户名" ' 注释非常有用。它应该是一个答案而不仅仅是一个评论 (2认同)

小智 15

%USERNAME% 是批处理和Windows环境中的其他正确答案.

另一种选择是用来%USERPROFILE%获取用户的路径,比如C:\Users\username.


dea*_*dog 8

答案取决于您使用的是哪种“命令行脚本”语言。

命令

在旧的cmd.exe命令提示符或 a .bator.cmd脚本中,您可以使用以下内容:

%USERNAME% - 只获取用户名。

%USERDOMAIN% - 获取用户的域。

电源外壳

在 PowerShell 命令提示符或 a.ps1.psm1脚本中,您可以使用以下内容:

[System.Security.Principal.WindowsIdentity]::GetCurrent().Name- 为您提供完全限定的用户名(例如域\用户名)。这也是最安全的方法,因为它不能像$Env下面的其他变量一样被用户覆盖。

$Env:Username - 只获取用户名。

$Env:UserDomain - 获取用户的域。

$Env:ComputerName - 获取计算机的名称。


小智 7

%USERNAME% 将为您提供当前正在运行的进程的用户名。根据您运行批处理文件的方式,这不一定与当前用户的名称相同。例如,您可能正在通过计划任务、服务等运行批处理文件。

这是通过抓取启动 explorer.exe 任务的用户的名称来获取当前登录用户的用户名的更可靠的方法:

for /f "TOKENS=1,2,*" %%a in ('tasklist /FI "IMAGENAME eq explorer.exe" /FO LIST /V') do if /i "%%a %%b"=="User Name:" set _currdomain_user=%%c
for /f "TOKENS=1,2 DELIMS=\" %%a in ("%_currdomain_user%") do set _currdomain=%%a & set _curruser=%%b
Run Code Online (Sandbox Code Playgroud)


小智 6

我在编写批处理文件时使用这种方法进行测试。

echo %userdomain%\%username%
Run Code Online (Sandbox Code Playgroud)

由于如果需要身份验证,您必须以纯文本形式包含密码,因此我只会在其他用户无法查看它的完全私密的环境中使用它,或者如果用户看到密码不会承担任何后果。

希望这可以帮助某人。


Jea*_*ire 6

在大多数情况下,%USERNAME% 变量就是您想要的。

echo %USERNAME%
Run Code Online (Sandbox Code Playgroud)

但是,如果您正在运行提升的 cmd shell,则 %USERNAME% 将报告管理员名称而不是您自己的用户名。如果您想了解后者,请运行:

for /f "tokens=2" %u in ('query session ^| findstr /R "^>"') do @echo %u
Run Code Online (Sandbox Code Playgroud)


Chr*_*s K 5

Windows 没有一些 Unix 中更有用的小脚本实用程序,例如who / whoamisedAWK ,这一直让我很恼火。无论如何,如果你想要万无一失的东西,请获取 Visual Studio Express 并编译以下内容:

#include <windows.h>
#include <stdio.h>

int main(int argc, char **argv) {
    printf("%s", GetUserName());
}
Run Code Online (Sandbox Code Playgroud)

只需在批处理文件中使用它即可。

  • 从 Windows Vista 开始可以使用“whoami”。 (10认同)
  • 我同意 sed 和 awk 会很有用,但这可以让你完成 50% 的任务:`net config Workstation | 找到“用户名”` (9认同)
  • 确实,Vista 中包含 whoami 实用程序。对于 XP,它位于 SP2 支持工具中;对于 W2K,它位于资源工具包中。 (3认同)

Ben*_*min 5

只需输入whoami命令提示符,您就会获得当前的用户名。