10

昨日投稿した別の質問で、Windows で Python スクリプトをサービスとして実行する方法について、非常に良いアドバイスをもらいました私が疑問に思っているのは、ネイティブ ツール (「管理ツール」の「サービス」ウィンドウ) で管理できるサービスを Windows がどのように認識しているかということです。私はe。Linux で /etc/init.d に開始/停止スクリプトを配置するのと同等の Windows は何ですか?

4

4 に答える 4

8

レジストリを直接いじらないでください。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
于 2008-11-03T18:03:16.090 に答える
7

これは、Pythonで書かれたサービスとしてpython-scriptをインストールするためのコードです:)

http://code.activestate.com/recipes/551780/

この投稿もあなたを助けることができます:

http://essiene.blogspot.com/2005/04/python-windows-services.html

于 2008-08-29T10:20:39.213 に答える
3

Windows で最も「認識されている」ものと同様に、答えは「レジストリ」です。

次の Microsoft Knowledge Base 記事を参照してください: http://support.microsoft.com/kb/103000

「サービス コントローラによって開始でき、サービス コントロール プロトコルに従う Win32 プログラム」を検索します。気になるサービスはこんな感じです。

サービス登録 (KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services \myservice の内容) は、実行可能な場所、失敗した場合の対処方法 (OS を停止しますか?)、このサービスの前に開始する必要があるサービスなど、サービスに関する情報を運びます。 、実行するユーザー。

サービス制御プロトコルに関しては、プログラムの main() は Windows API 呼び出しを呼び出し、サービスの開始、停止、一時停止のコールバックを設定することになっています。これらのコールバックで何をするかは、すべてあなた次第です。

于 2008-08-29T15:00:52.333 に答える
0

Windows NT リソース キットの srvany.exe を使用して、管理ツールに表示されるユーザー定義サービスを作成できます...

http://support.microsoft.com/kb/137890

このメソッドを使用して、trac の tracd (Python スクリプト/サーバー) を実行しています。

ここにいくつかの非常に明確な指示があります: http://www.tacktech.com/display.cfm?ttid=197

いくつかのレジストリ編集が必要ですが (非常に最小限で簡単です)、コマンド ライン/スクリプトを Windows サービスにすることができます。

于 2008-08-29T15:01:50.257 に答える