昨日投稿した別の質問で、Windows で Python スクリプトをサービスとして実行する方法について、非常に良いアドバイスをもらいました。私が疑問に思っているのは、ネイティブ ツール (「管理ツール」の「サービス」ウィンドウ) で管理できるサービスを Windows がどのように認識しているかということです。私はe。Linux で /etc/init.d に開始/停止スクリプトを配置するのと同等の Windows は何ですか?
4 に答える
レジストリを直接いじらないでください。SC コマンドライン ツールを使用します。つまり、SC CREATE
説明:
SC は、
NT サービス コントローラとサービス。
利用方法:
sc [コマンド] [サービス名] ...
オプションの形式は「\\ServerName」です
「sc [コマンド]」と入力すると、コマンドに関する詳細なヘルプが表示されます。
コマンド:
query-----------サービスのステータスを問い合わせる、または
サービスの種類のステータスを列挙します。
queryex---------サービスの拡張ステータスを問い合わせる、または
サービスの種類のステータスを列挙します。
start -----------サービスを開始します。
一時停止 ----------- サービスに一時停止制御要求を送信します。
尋問----- INTERROGATE 制御要求をサービスに送信します。
continue-------- CONTINUE 制御要求をサービスに送信します。
stop------------ サービスに STOP リクエストを送信します。
config---------サービスの構成を変更します (永続的)。
description-----サービスの説明を変更します。
失敗---------失敗時にサービスが実行するアクションを変更します。
qc-------------- サービスの構成情報を照会します。
qdescription----サービスの説明を照会します。
qfailure-------- 失敗時にサービスによって実行されるアクションを照会します。
delete---------サービスを (レジストリから) 削除します。
create--------- サービスを作成します。(レジストリに追加します)。
control--------- コントロールをサービスに送信します。
sdshow ----------サービスのセキュリティ記述子を表示します。
sdset-----------サービスのセキュリティ記述子を設定します。
GetDisplayName -- サービスの DisplayName を取得します。
GetKeyName------ サービスの ServiceKeyName を取得します。
EnumDepend------ サービスの依存関係を列挙します。
次のコマンドは、サービス名を必要としません。
sc
boot------------(ok | bad) 最後のブートが必要かどうかを示します
前回正常起動時の構成として保存される
Lock------------ サービス データベースをロックします
QueryLock-------SCManager データベースの LockStatus を照会します
例:
sc start MyService
これは、Pythonで書かれたサービスとしてpython-scriptをインストールするためのコードです:)
http://code.activestate.com/recipes/551780/
この投稿もあなたを助けることができます:
http://essiene.blogspot.com/2005/04/python-windows-services.html
Windows で最も「認識されている」ものと同様に、答えは「レジストリ」です。
次の Microsoft Knowledge Base 記事を参照してください: http://support.microsoft.com/kb/103000
「サービス コントローラによって開始でき、サービス コントロール プロトコルに従う Win32 プログラム」を検索します。気になるサービスはこんな感じです。
サービス登録 (KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services \myservice の内容) は、実行可能な場所、失敗した場合の対処方法 (OS を停止しますか?)、このサービスの前に開始する必要があるサービスなど、サービスに関する情報を運びます。 、実行するユーザー。
サービス制御プロトコルに関しては、プログラムの main() は Windows API 呼び出しを呼び出し、サービスの開始、停止、一時停止のコールバックを設定することになっています。これらのコールバックで何をするかは、すべてあなた次第です。
Windows NT リソース キットの srvany.exe を使用して、管理ツールに表示されるユーザー定義サービスを作成できます...
http://support.microsoft.com/kb/137890
このメソッドを使用して、trac の tracd (Python スクリプト/サーバー) を実行しています。
ここにいくつかの非常に明確な指示があります: http://www.tacktech.com/display.cfm?ttid=197
いくつかのレジストリ編集が必要ですが (非常に最小限で簡単です)、コマンド ライン/スクリプトを Windows サービスにすることができます。