如何在Windows 7 64位系统上通过PERL脚本创建Windows服务

3
有没有人有创建Windows服务的示例,使用PERL脚本在Windows 7 64位上创建?
在Windows XP Professional 32位上,我已经成功地使用Win32::Daemon创建了带有回调函数的Windows服务。但这在64位上不起作用。
我看到了这个http://nssm.cc/usage并使用它创建了一个服务,但它不能保持状态并且会出错。如果有人有一个正确的示例,那就太好了...
非常感谢任何想法。
1个回答

4

我现在已经解决了这个问题。

现在我的perl脚本已经可以在Windows 7 64位系统上作为Windows服务运行。

基本上,win32::Daemon可以在Win 7 64位上工作,但是服务创建需要手动完成。即,回调函数和启动都正常。

这里有一个从头开始创建perl windows服务的例子:

  1. 创建文件夹c:/myservice

  2. 从这个链接中复制代码示例,并将其保存到上述目录中。将其命名为myservice.pl (http://www.roth.net/forums/topic.php?id=106)

  3. 在脚本中的print hello语句后添加以下两行。

    $Context->{last_state} = SERVICE_RUNNING;

    Win32::Daemon::State( SERVICE_RUNNING );

    这是必要的以保持服务运行。否则它会停止。

  4. 以管理员模式打开Dos cmd终端。使用以下命令创建服务

% sc create myservice binpath= "c:\strawberry\perl\bin\perl.exe"

成功时它将显示以下消息。 [SC] CreateService SUCCESS

  1. 现在我们需要编辑注册表。打开注册表编辑器。(开始->然后键入regedit)

  2. 在HKEY_LOCAL_MACHINE-> SYSTEM-> CurrentControlSet-> Services-> myservice下查找服务

  3. 单击“myservice”并将imagePath变量编辑为: c:\strawberry\perl\bin\perl.exe -I "C:\myservice" "C:\myservice\myservice.pl" --run

  4. 现在打开服务窗口并启动服务。(开始->控制面板->管理工具->服务)

  5. 在脚本的当前目录中,每隔几秒钟就会创建并更新一个日志文件。如果在Windows上使用cygwin,可以使用tail跟踪它。

    % tail -f *.log

进程会周期性地打印Hello!

谢谢。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接