■Windowsの不要なサービスを停止、無効化する。 「sc」や「net」では出来ないが、レジストリの「Start」キーの値で「自動/手動/無効」を判断できる。 NT のブートを妨げるサービスまたはデバイスを無効にする方法 http://support.microsoft.com/kb/165748 Boot 0x0 System 0x1 Automatic 0X2 Manual 0x3 Disabled 0x4 ■サービス名とサービス表示名を引く。 例)「ヘルプとサポート」 > sc getKeyName "Help and Support" [SC] GetServiceKeyName SUCCESS Name = helpsvc > sc getDisplayName helpsvc [SC] GetServiceDisplayName SUCCESS Name = Help and Support ■変更しても良いかの判断は依存関係と、 使用するかどうかの自身の判断、 それにサービスの有効/無効に再起動が必要かどうかを含めた判断が必要。 > sc EnumDepend helpsvc Enum: entriesRead = 0 ■例えば、以下のように依存関係のある「Remote Procedure Call (RPC)」は変更しない方が良い。 > sc EnumDepend RpcSs | find "Enum" Enum: entriesRead = 4 Enum: more data, need 5290 bytes ■私の環境では「ヘルプとサポート」を停止、かつ無効にしている。 > sc query helpsvc SERVICE_NAME: helpsvc TYPE : 20 WIN32_SHARE_PROCESS STATE : 1 STOPPED (NOT_STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN) WIN32_EXIT_CODE : 1077 (0x435) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0 >reg query HKLM\System\CurrentControlSet\Services\helpsvc | find "Start" Start REG_DWORD 0x4 ■自動起動に変更する(再起動不要)。 > sc config helpsvc start= auto [SC] ChangeServiceConfig SUCCESS > sc qc helpsvc [SC] GetServiceConfig SUCCESS SERVICE_NAME: helpsvc TYPE : 20 WIN32_SHARE_PROCESS START_TYPE : 2 AUTO_START ERROR_CONTROL : 1 NORMAL BINARY_PATH_NAME : C:\WINDOWS\System32\svchost.exe -k netsvcs LOAD_ORDER_GROUP : TAG : 0 DISPLAY_NAME : Help and Support DEPENDENCIES : RPCSS SERVICE_START_NAME : LocalSystem > reg query HKLM\System\CurrentControlSet\Services\helpsvc | find "Start" Start REG_DWORD 0x2 ■自動なので、「ヘルプとサポート」を起動するとサービスも起動する。 起動すると、「STATE」が「RUNNING」に変わる。 > net start | find /i "Help and Support" Help and Support > sc query helpsvc SERVICE_NAME: helpsvc TYPE : 20 WIN32_SHARE_PROCESS STATE : 4 RUNNING (STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0 ■サービスの停止 「net stop」コマンドに渡すのは、サービス名でもサービス表示名でも構わない。 「STATE」は「STOPED」に変わる。 ※【重要】 「net stop」コマンドは停止するかエラー(タイムアウト/既に停止)になるまでプロンプトを返さない。 「sc」は結果に関わらずプロンプトを返すので、使わない。 > net stop "Help and Support" Help and Support サービスを停止中です. Help and Support サービスは正常に停止されました。 > net stop helpsvc Help and Support サービスを停止中です. Help and Support サービスは正常に停止されました。 > sc query helpsvc SERVICE_NAME: helpsvc TYPE : 20 WIN32_SHARE_PROCESS STATE : 1 STOPPED (NOT_STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0 ■サービスの無効化 > sc config helpsvc start= disabled [SC] ChangeServiceConfig SUCCESS > sc query helpsvc SERVICE_NAME: helpsvc TYPE : 20 WIN32_SHARE_PROCESS STATE : 1 STOPPED (NOT_STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0 ■サービスの停止を確認。 > sc query state= inactive | find "helpsvc" SERVICE_NAME: helpsvc ■サービスの無効を確認。 > reg query HKLM\System\CurrentControlSet\Services\helpsvc | find "Start" Start REG_DWORD 0x4