net user Разница пароля администратора между запуском в .bat и из cmd?

Я пытаюсь установить пароль администратора через файл .bat с помощью команды

net user Administrator my_password

если я пишу именно эту строку в командной строке, все работает нормально, я могу снова войти в систему после выхода из системы или перезапуска. Когда я запускаю файл .bat, я не могу войти в систему после выхода из системы или перезагрузки. В чем разница и как заставить работать из .bat файла или другого скрипта?

РЕДАКТИРОВАТЬ: я запускаю файл .bat, просто щелкнув по нему, я вхожу в систему как администратор. Команда выдает сообщение об успешном завершении и, очевидно, меняет пароль, поскольку впоследствии я не могу использовать старый пароль.


person Martin Riddar    schedule 04.12.2015    source источник
comment
Вы запускаете bat-файл из командной строки или другим способом?   -  person CHill60    schedule 04.12.2015


Ответы (2)


Я полагаю, что ваш пароль содержит знак процента.

Разница в том, что знаки процента в приглашении cmd сохраняются.
Но в пакетном файле синтаксический анализатор пытается расширить переменную со знаком процента, но если выражение процента недействительно, оно будет удалено.

Если вы хотите использовать пароль в пакетном файле, вам нужно всего лишь удвоить проценты.

Дополнительные сведения о расширении переменных см. в разделе Как CMD.EXE анализирует сценарии?

person jeb    schedule 04.12.2015

Я предполагаю, что строка пароля содержит как минимум 1 символ, отличный от ASCII, то есть символ, кодовое значение которого больше десятичного числа 127.

Откройте окно командной строки и введите chcp (команда смены кодовой страницы). В зависимости от региональных и языковых настроек Windows отображается, что активной кодовой страницей является кодовая страница 850 (западная европейская страна) или кодовая страница 437 (страна Северной Америки) или что-то другое.

Пакетный файл, написанный в текстовом редакторе Windows GUI, скорее всего, использует другую кодовую страницу, например Windows-1252 (страны Западной Европы и Северной Америки).

Рекомендуется написать пакетный файл с использованием той же кодовой страницы, которая используется Windows для консоли, или вообще не использовать символы, отличные от ASCII.

Но пароли учетных записей — это нечто особенное. Windows знает, что пароль для учетной записи обычно вводится пользователем в графическом интерфейсе с использованием кодовой страницы графического интерфейса Windows. Поэтому пароль, введенный в окне консоли для учетной записи, автоматически преобразуется из кодовой страницы OEM в кодовую страницу Windows (ANSI) перед шифрованием и сохранением Windows.

Таким образом, пакетный файл должен содержать строку пароля, закодированную в кодовой странице OEM, а не в кодовой странице GUI.

Например, немецкий умляут ä имеет кодовое значение 228 (шестнадцатеричное значение E4) при использовании Windows-1252, но имеет кодовое значение 132 (шестнадцатеричное число 84) при использовании кодовой страницы OEM 850. Для печати в окне консоли с помощью команды echo немецкое слово ähnlich необходимо записать в пакетный файл ä с кодовым значением 132, используя кодовую страницу OEM 850, чтобы это слово правильно отображалось в окне консоли. Необходимо записать в батник символ ä также с кодовым значением 132, если этот символ используется в пароле, записываемом в батник. Строка пароля автоматически преобразуется из OEM в ANSI с помощью команды net.

person Mofi    schedule 04.12.2015