none
用微软官方提供的服务注册工具注册的服务不能监视注册表变化 RRS feed

  • 问题

  •       微软官方提供了将可执行文件exe注册为系统服务的工具,即instsrv.exe和srvany.exe这两个文件。我编写了一个exe文件,用于监视某个路径的变化及某个注册表项的变化。我用此工具注册为系统服务后(注册后立即启动服务),监视路径变化的功能可以实现,但是监视注册表变化的功能却不起作用。但是我在注册表中将此EXE文件加入开机启动,监视路径和监视注册表变化的功能都可以实现,用计划任务启动也可以实现。

          同样的,我用编程软件写一个服务,同样是监视某个路径变化及某项注册表项变化,也同样遇到这个问题,监视注册表变化的功能同样不起作用。不知道是什么原因引起的?

          谢谢!

    2015年5月13日 14:30

全部回复

  • 并不是所有的可执行文件都适合注册为系统服务,InstSrv.EXE 也从来不保证所有的可执行文件都能 100% 正确地注册为服务。

    有些功能比较简单的可执行文件直接添加为启动加载项会比注册为服务更加方便,启动更加迅速;
    有些可执行文件可能根本就无法注册为服务,强行注册后会提示错误 1053:无法及时响应启动请求。

    总之你可以尝试用 InstSrv.EXE 注册任意可执行文件为服务,但具体的程序是否适合以服务方式运行则必须看情况而定。


    Alexis Zhang

    http://mvp.microsoft.com/zh-cn/mvp/Jie%20Zhang-4000545
    http://blogs.itecn.net/blogs/alexis

    推荐以 NNTP Bridge 桥接新闻组方式访问论坛。

    本帖是回复帖,原帖作者是楼上的 "电脑自动蓝屏重启"

    | 微软官方提供了将可执行文件exe注册为系统服务的工具,即instsrv.exe和srvany.exe这两个文件。我编写了一个exe文件,用于监视某个路径的变化及某个注册表项的变化。我用此工具注册为系统服务后(注册后立即启动服务),

    2015年5月14日 7:57
    版主
  •       您说的这个现象我明白。我费解的是,我编写的EXE文件并没有什么复杂的功能,仅仅是一条if ....then...语句,而且安装成服务之后,服务也是能够正常随开机启动,也可以暂停,停止的。但为什么就不执行监视注册表变化的功能呢?
    2015年5月14日 9:12
  • 既然是自己寫的程序, 可從異常中需要線索, 或者用 Process Monitor 來監控一下.

    Folding@Home

    2015年5月15日 5:17
  • 这个还真与程序的复杂程度没有直接关系,有时恰恰是越简单的可执行程序越不适合注册为服务。

    如果你确定你编写的这个程序在单独运行时可以监控注册表的变化,可以说明你编写的语句没有问题。


    Alexis Zhang

    http://mvp.microsoft.com/zh-cn/mvp/Jie%20Zhang-4000545
    http://blogs.itecn.net/blogs/alexis

    推荐以 NNTP Bridge 桥接新闻组方式访问论坛。

    本帖是回复帖,原帖作者是楼上的 "电脑自动蓝屏重启"

    | 您说的这个现象我明白。我费解的是,我编写的EXE文件并没有什么复杂的功能,仅仅是一条if ....then...语句,而且安装成服务之后,服务也是能够正常随开机启动,也可以暂停,停止的。但为什么就不执行监视注册表变化的功能呢?

    2015年5月15日 5:42
    版主
  • 我把这个EXE在注册表中加入开机启动,或者用计划任务来启动,都可以实现路径及注册表的监控。唯独用服务来启动的时候,只有路径可以监控,注册表却不能监控。
    2015年5月17日 13:11
  • 感谢回复,我使用Process Monitor监控,果真发现了问题。我的EXE代码中,监控的注册表项是:

    [HKEY_CURRENT_USER\Software\TKeysoft\FileGee\FileSafeSingle]

    但是把这个EXE注册为服务之后,转而变成监控:

    [HKEY_USERS\.DEFAULT\Software\TKeysoft\FileGee\FileSafeSingle]

    这种情况只发生在将EXE注册为服务启动的时候,而通过开机自启动或计划任务启动,都没有此现象。


    2015年5月17日 14:11
  • 嗯,这可以充份说明你的程序编写得没有问题,只能说它不适合注册为服务。有些程序强制注册为服务后就是会有各种不可预料的后果,有的是功能缺失、有的是无法启动之类等等。


    Alexis Zhang

    http://mvp.microsoft.com/zh-cn/mvp/Jie%20Zhang-4000545
    http://blogs.itecn.net/blogs/alexis

    推荐以 NNTP Bridge 桥接新闻组方式访问论坛。

    本帖是回复帖,原帖作者是楼上的 <smooth188>;

    | 我把这个EXE在注册表中加入开机启动,或者用计划任务来启动,都可以实现路径及注册表的监控。唯独用服务来启动的时候,只有路径可以监控,注册表却不能监控。

    2015年5月18日 3:27
    版主