【问题标题】:net user Administrator password difference between running in .bat and from cmd?在 .bat 和从 cmd 中运行的网络用户管理员密码的区别?
【发布时间】:2015-12-04 14:30:00
【问题描述】:

我正在尝试使用命令通过 .bat 文件设置管理员密码

net user Administrator my_password

如果我在命令提示符中写下那一行,一切正常,我可以在注销或重新启动后再次登录。 当我运行 .bat 文件时,我在注销或重新启动后无法登录。 有什么区别?我怎样才能让它在 .bat 文件或其他脚本中运行?

编辑: 我只需单击它即可运行 .bat 文件,我以管理员身份登录。该命令确实给出了成功消息,并且显然更改了密码,因为之后我无法使用旧密码。

【问题讨论】:

  • 您是从命令提示符还是通过其他方法运行 bat 文件?

标签: batch-file administrator change-password


【解决方案1】:

我想你的密码包含一个百分号。

不同之处在于 cmd 提示符处的百分号被保留。
但是在批处理文件中,解析器尝试使用百分号扩展变量,但是当百分号表达式无效时,它将被删除。

如果您想在批处理文件中使用密码,您只需将百分比加倍即可。

更多关于变量扩展的信息How does CMD.EXE parse scripts?

【讨论】:

    【解决方案2】:

    我认为密码字符串至少包含 1 个非 ASCII 字符,即代码值大于十进制 127 的字符。

    打开命令提示符窗口并输入chcp(更改代码页命令)。根据 Windows 区域和语言设置,您会看到活动代码页是 code page 850(西欧国家)或 code page 437(北美国家)或其他不同的地方。

    在 Windows GUI 文本编辑器中编写的批处理文件很可能使用不同的代码页,例如 Windows-1252(西欧和北美国家/地区)。

    建议使用与 Windows 用于控制台的代码页相同的代码页编写批处理文件,或者根本不使用非 ASCII 字符。

    但是帐户密码是非常特别的东西。 Windows 知道用户通常使用 Windows GUI 代码页在 GUI 上输入帐户密码。因此,在控制台窗口中为帐户输入的密码会自动从 OEM 代码页转换为 Windows (ANSI) 代码页,然后再由 Windows 加密和保存。

    因此批处理文件应该包含在 OEM 代码页而不是 GUI 代码页中编码的密码字符串。

    例如,德语元音变音字符ä 使用 Windows-1252 具有代码值 228(十六进制。E4),但使用 OEM 代码页 850 具有代码值 132(十六进制 84)。用于使用命令 打印到控制台窗口echo 德语单词ähnlich,必须使用OEM 代码页850 将代码值132 写入批处理文件ä 以使该单词正确显示在控制台窗口中。如果在写入批处理文件的密码中使用此字符,则必须将字符 ä 也与代码值 132 写入批处理文件。密码字符串通过命令 net 自动从 OEM 转换为 ANSI。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-24
      • 1970-01-01
      • 2018-09-09
      相关资源
      最近更新 更多