どうもミツシマです。

今回はWindowsでパスワード入力を不要とする自動ログオンをコマンドにて設定する方法を検証してみた。

検証環境は以下の通り
DC:Windows Server 2016
PC:Windows10 Pro 1809


〜GUIでの設定方法のおさらい〜

まずはGUIでの設定方法する場合
1.Windowsボタン+「R」ボタンを押して、「ファイル名を指定して実行」をクリック
2.「netplwiz」(または「control userpasswords2」)と入力して、「OK」をクリック
3.自動ログオンさせたいユーザーを選択して、「ユーザーがこのコンピューターを使うには
 ユーザー名とパスワードの入力が必要」のチェックを外してOKをクリック
オートログオン(WORKGROUP)

4.パスワードを入力して完了


WORKGROUP環境であれば、上記手順でOK
が、ドメイン環境の場合は
「ユーザーがこのコンピューターを使うにはユーザー名とパスワードの入力が必要」という項目がなく、レジストリから設定する必要がある!!
オートログオン(ドメイン)


レジストリ値としては以下の通り
(自動ログオンの有効化)
キー:HKLM¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion¥Winlogon
値:AutoAdminLogon
データ:1

(自動ログオンするユーザー名)
キー:HKLM¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion¥Winlogon
値:DefaultUserName
データ:<対象ユーザー名>

(自動ログオンするユーザーのパスワード)
キー:HKLM¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion¥Winlogon
値:DefaultPassword
データ:<対象ユーザーのパスワード>

(自動ログオンするドメイン名) ※ドメイン環境のみ必要でWORKGROUPは不要
キー:HKLM¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion¥Winlogon
値:DefaultDomainName
データ:<自動ログオンするドメイン名>



〜コマンドでやってみた〜

ではレジストリの項目もわかったので早速コマンドを作成
今回はドメイン環境を想定して作成してみた


<SetAutoLogon.bat>

@echo off

REM 各種環境変数設定
set AutoLogonDomain=MITSU
set AutoLogonUser=testuser01
set AutoLogonPassword=password01

REM 管理者権限か確認
net session > nul 2>&1


REM 管理者権限でなければ「管理者権限で再実行」(SUDO)
IF %ERRORLEVEL% neq 0 goto SUDO



REM オートログオン有効化
reg add "HKLM¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion¥Winlogon" /v AutoAdminLogon /t REG_SZ /d 1 /f
reg add "HKLM¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion¥Winlogon" /v DefaultDomainName /t REG_SZ /d %AutoLogonDomain% /f
reg add "HKLM¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion¥Winlogon" /v DefaultUserName /t REG_SZ /d %AutoLogonUser% /f
reg add "HKLM¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion¥Winlogon" /v DefaultPassword /t REG_SZ /d %AutoLogonPassword% /f


exit



:SUDO
powershell start-process %~f0 -verb runas
exit



〜解説〜

まず変数に各パラメータを代入
その為、「AutoLogonDomain」・「AutoLogonUser」・「AutoLogonPassword」の値を変更してもらえればどの環境でも使用可能なはず!!
その後はいつもどおり管理者権限で実行されているかを確認し、そうでない場合には管理者権限で再実行(今回設定するレジストリが管理者権限がないと設定出来ない箇所のため。。)

後は「reg add」コマンドを使用してそれぞれレジストリ値を設定して完了。
設定後はPCを再起動して終了!

<設定後のレジストリ画面>
オートログオン(reg実行後)


また、解除する際のbatも作成してみた

<UnSetAutoLogon.bat>

@echo off

REM 管理者権限か確認
net session > nul 2>&1


REM 管理者権限でなければ「管理者権限で再実行」(SUDO)
IF %ERRORLEVEL% neq 0 goto SUDO



REM オートログオン無効化
reg add "HKLM¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion¥Winlogon" /v AutoAdminLogon /t REG_SZ /d 0 /f
reg delete "HKLM¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion¥Winlogon" /v DefaultDomainName /f
reg delete "HKLM¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion¥Winlogon" /v DefaultUserName /f
reg delete "HKLM¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion¥Winlogon" /v DefaultPassword /f


exit



:SUDO
powershell start-process %‾f0 -verb runas
exit


今回の検証は以上で終了
実際に自動ログオン設定する機会はあまりないかもしれないが、それゆえに設定する場面になると「なんだっけ?」となる設定なんだよなぁ〜〜
スポンサードリンク