64ビットのwindowsの下でinstsrv.exeとsrvany.exeを使ってwindowsサービスを創建します.

2547 ワード

64ビットのwindowsの下でinstsrv.exeとsrvany.exeを使ってwindowsサービスを創建します.
32位のwindowsの下で、windows 7を含んで、windows xpとwindows 2003、すべてinstsrv.exeとsrvany.exeを使ってユーザー定義のwindowsサービスを創建することができます.例えば、私達は指定されたプログラムをサービスとして起動するためのbatファイルを持っています.一般的なツールを使ってこのような仕事をしてはいけません.windows 2003の資源ツールバッグwindows toolkitに持っているinstsrvを使えばいいです.
詳細な使い方はここでは詳しく述べません.簡単にはinstsrvを使って該当するsrvanyをサービスに登録して、レジストリに該当するAppplicationとAppDirectoryパラメータを追加して、srvanyに対応するサービスを開始します.下記のコードに示すように、/対応するプログラムをサービスに生成します.
1
2
3
4
5
6
7
8
9set s32=%windir%\system32 %s32%\instsrv.exe %service_name% %s32%\srvany.exe    // echo Windows Registry Editor Version 5.00> %reg_file% echo >> %reg_file% echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\%service_name%\Parameters] >> %reg_file% echo "Application"="%prog_path%\\%prog_name%" >> %reg_file%// echo "AppDirectory"="%prog_path%" >> %reg_file%// 以上のコードはすべての32ビットシステムの上で正常に実行できます.windows 2000を含みます.しかし、64ビットのwindowsの下で、以上のコードは失効しました.以下のエラーを報告します.
1Unable to find the file at the given pathパラメータを注意深く調べた後,これはシステムの原因によるものと決定した.
最終的な原因は、私達が使っているinstsrvとsrvanyは32位です.windowsは今対応する64位の位相対応ツールが発表されていません.プログラム自体は問題ないです.問題はinstsrvとSrvanyをwindows/system 32の正面に置くことです.64ビットシステムの中で64ビットのプログラムを保存するべきです.だから、最終的に問題を解決するのは簡単です.私たちはこの二つのプログラムを32ビットのプログラムに置くべきところ、例えばwindows/sysWow 64のディレクトリだけでいいです.もとの相応する措置とプログラムはまったくいかなる変化を行う必要がありません.instsrvは、元のsystem 32に置くべきプログラムを自動的に見つけることができますが、このプログラムは現在SysWow 64ディレクトリの下に置かれています.
簡単な解決方法としては、instsrvとsrvanyプログラムをwindows/sysWow 64ディレクトリの下でcopyを一つ作ってもいいです.system 32とsysWow 64の下でプログラムがあります.このような問題は解決します.もっと下の理由はマイクロソフトしか説明できないかもしれません.つまり、64ビットシステムで32ビットプログラムはsystem 32の下に置かれたプログラムが見えないので、アクセスすべきsystem 32ディレクトリはシステムによってsysWow 64ディレクトリにマッピングされました.実行時にシステムは対応するsysWow 64ディレクトリをプログラムとして認識されるsystem 32に自動的にマッピングします.参考文献:http://en.wikipedia.org/wiki/WoW64
転載は出所を明記してください:i flym本文住所:http://www.iflym.com/index.php/computer-use/201205020001.html