如何更改windows USERNAME环境变量字符串?

时间:2016-04-05 13:44:20

标签: windows cmd environment-variables username

我正在为一天中的大部分时间都在努力寻找解决方案。总之,我的困境似乎很简单。基于我在此处使用的Google和Stackoverflow hits ,一个有效的解决方案似乎难以捉摸。

  

EDIT
我需要澄清用例。我们可能有6个用户需要运行某些使用“%USERNAME%”字符串的脚本来登录区分大小写的环境,Linux,MySQL等。一个用户名是混合大小写 。在示例中,我使用了我的名字:“Will”,它必须是脚本:“will”(全部为小写)。

     
      
  • 一般问题是%USERNAME%环境变量值在错误输入时如何更改?
  •   

目前我的Windows 7 Professional用户名是“will”,但环境变量的值为:

echo.  User = %USERNAME%
  User = Will

我需要它出现:

  User = will
rem      * All lower-case

要清楚......

  

我想更改(源)值Windows在我登录时设置USERNAME环境变量。

我认为找到设置或配置选项以更改该字符串是 easy - 直到我尝试过。我认为这必须经常发生在与让USERNAME一起使用cygwin等相关的问题上。

问题

也困扰我,因为这是一个混乱的脚本,以“修复”在登录环境中基本的东西。

我也在办公室周围进行了快速调查。有些人有混合案例,有一两个人有小写。根据创建帐户时输入的内容或其他内容,它似乎是随意的。

我们的管理员在域上查找我的帐户(不,不是活动目录),与我的登录屏幕相同,“将”(小写)。

最后我做了几个实验。我在“用户”控制面板中更改了用户名

from:  "will" to "xxwill"

认为肯定会更新我的USERNAME字符串。我退出了。我再次做了,然后重新启动了第二次。结果非常令人惊讶(或者可能不应该):

  User = Will
rem      * NO change for the "xxwill" name-change!

更进一步。我创建了一个帐户“dodo”和帐户“Dogdo”,并将用户名分别更改为“Dodo”和“dogdo”。

  User = dodo
  User = Dogdo
rem      * NO change for name-changes!

我看到USERNAME不能以这种方式改变。我无法在“高级”选项中编辑系统环境变量。它可能在个人资料中。但是你可以编辑一个配置文件,甚至只用管理员权限在里面查看吗?我还不知道;我不确定这是我的首选路线,因为它是从一些原始设置,某处进行了一些“输出”的黑客攻击。

我希望有人可以让我直截了当,所以我不需要那个脚本解决方案。

2 个答案:

答案 0 :(得分:0)

@ECHO OFF
SETLOCAL
PUSHD "%temp%"
COPY NUL "%username%" >NUL 2>NUL
FOR /f "delims=" %%a IN ('dir /L /b "%username%"') DO set "usernamelc=%%a"
del "%username%" >NUL 2>NUL
POPD
ECHO %USERNAME% --^> %usernamelc%
GOTO :EOF

也许这可能会有所帮助。 YMMV。

答案 1 :(得分:0)

我不认为有一种方法可以完全按照您的意思说,但是这可能是可以实现的,您可以通过在定义用户名的位置进行操作来了解。

•首先,存在用户文件夹C:\user\username1,该文件夹是在创建用户时定义的。 (我认为)可以更改(我只看过它的引用,但是有很多引用,很容易找到)。

•其次,有Control Panel > User Accounts > Change My Name。这似乎与您的$ env:USERNAME

有关

•最后,有lusrmgr.msc > Users。该名称与您的“真实”用户名关系最紧密,并且与[Security.Principal.WindowsIdentity]::GetCurrent()保持一致 我说“真实”是因为我最近在尝试使用ssh-keygen创建公用密钥时发现了这一点,尽管我的显示名称和$ env:USERNAME设置为“ Name1”,但是ssh-keygen只会看到“ Name2”,我不得不更改lusrmgr.msc中的名称以解决此问题(需要重新启动)。

这是一个旧帖子,但是发布以防遇到类似问题的任何人。