コマンドプロンプトからリモートPCのサービスを復活させる
この記事はWindows & Microsoft技術 基礎 Advent Calendar 2015の4日目の記事です。
Remote DesktopなどのGUIが利用できない状況で、RPCなどが生きている環境に対してサービスを登録して、サービスを起動するという作業を行ってみます。
単にGUIを使わないアプリケーションの起動ならば PsToolキットに含まれる PsExec を使うという手もあります
E:\psexec>psexec \\mofmof ipconfig
PsExec v2.11 - Execute processes remotely Windows IP 構成 イーサネット アダプター vEthernet (Intel(R) 82578DM Gigabit Network Connection - |
まず、ターゲットマシン snowstorm とローカルマシンの ID/Password が合致していないという想定で
なお、コマンドプロンプトは管理者モードで起動してください。
C:\>net use 新しい接続は記憶されません。 ステータス ローカル名 リモート名 ネットワーク名 ------------------------------------------------------------------------------- コマンドは正常に終了しました。 |
接続ができている場合は、一旦、接続を解除して、ログインしなおします
(REG.EXE 等を実行するためにはこの操作が必要です)
C:\>net use \\snowstorm\IPC$ /delete
C:\>net use \\snowstorm\IPC$ /USER:User Pass |
ターゲットのサービス(imof.exe) が起動できているかtasklist コマンドで確認します
C:\>tasklist /s snowstorm /u User /p Pass /FI "IMAGENAME eq i*"
イメージ名 PID ========================= IEXPLORE.EXE 1284 IEXPLORE.EXE 2964 |
あれ、サービスが落ちているぞ
SC.EXE でリモートからサービスを起動してみましょう
C:\>sc \\snowstorm start IMOFMOF_Service [SC] StartService: OpenService FAILED 1060: 指定されたサービスはインストールされたサービスとして存在しません。 |
なんということでしょう。サービスが何らかの原因で消えてしまったのがサービスが動作していない原因のようです。
まず、ローカルPCでサービス登録用のレジストリを流し込みます。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\IMOFMOF_Service] |
imof.reg
ネットワークレジストリに接続して流し込んでもいいですし
REGコマンドで流し込んでもいいです
C:\>REG SAVE HKLM\\SYSTEM\CurrentControlSet\services\IMOF_Service MOF.REG
C:\>REG SAVE \\SNOWSTORM\HKLM\\SYSTEM\CurrentControlSet\services\IMOF_Service MOF.REG エラー: 指定されたレジストリ キーまたは値が見つかりませんでした |
ただ、こちらは、キーの上書しかできないので
REG ADD コマンドで一つずつかきこまなくてはいけません
C:\>REG ADD \\SNOWSTORM\HKLM\\SYSTEM\CurrentControlSet\services\IMOF_Service この操作を正しく終了しました。 C:\>REG ADD \\SNOWSTORM\HKLM\\SYSTEM\CurrentControlSet\services\IMOF_Service /t REG_SZ /v DisplayName /d IMOFMOF_Service" |
全部やるのは面倒ですね
全部終わったらREG QUERYで確認
C:\>REG QUERY \\SNOWSTORM\HKLM\\SYSTEM\CurrentControlSet\services\IMOF_Service
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\IMOF_SERVICE |
一旦リモートにコピーして、リモート側で regedit /s でインポートするかネットワークレジストリ使うのが楽ですね
レジストリをインポートできたらサービスの作成と起動です
C:\>sc \\snowstorm create IMOF_Service binPath= "C:\TrueRem ote\brynhildr.exe /service /p:3389" [SC] CreateService SUCCESS C:\>sc \\snowstorm start IMOF_Service SERVICE_NAME: IMOF_Service |
うまくいきました
C:\>tasklist /s snowstorm /u User /p Pass /FI "IMAGENAME eq i*"
イメージ名   ; PID ========================= IEXPLORE.EXE 1284 IEXPLORE.EXE 2964 IMOF.EXE 2368 |
最後にサービスが動いてるのを確認して終わりです
Comments