service能否让桌面显示后再启动呢?启动的早了,调用有些东西可能调用的早了

解决方案 »

  1.   

    设置Group属性,可选值:(排序 早->晚)
    System Reserved
    EMS
    WdfLoadGroup
    Boot Bus Extender
    System Bus Extender
    SCSI miniport
    Port
    Primary Disk
    SCSI Class
    SCSI CDROM Class
    FSFilter Infrastructure
    FSFilter System
    FSFilter Bottom
    FSFilter Copy Protection
    FSFilter Security Enhancer
    FSFilter Open File
    FSFilter Physical Quota Management
    FSFilter Virtualization
    FSFilter Encryption
    FSFilter Compression
    FSFilter Imaging
    FSFilter HSM
    FSFilter Cluster File System
    FSFilter System Recovery
    FSFilter Quota Management
    FSFilter Content Screener
    FSFilter Continuous Backup
    FSFilter Replication
    FSFilter Anti-Virus
    FSFilter Undelete
    FSFilter Activity Monitor
    FSFilter Top
    Filter
    Boot File System
    Base
    Pointer Port
    Keyboard Port
    Pointer Class
    Keyboard Class
    Video Init
    Video
    Video Save
    File System
    Streams Drivers
    NDIS Wrapper
    COM Infrastructure
    Event Log
    AudioGroup
    ProfSvc_Group
    UIGroup
    MS_WindowsLocalValidation
    PlugPlay
    Cryptography
    PNP_TDI
    NDIS
    TDI
    iSCSI
    NetBIOSGroup
    ShellSvcGroup
    SchedulerGroup
    SpoolerGroup
    SmartCardGroup
    NetworkProvider
    MS_WindowsRemoteValidation
    NetDDEGroup
    Parallel arbitrator
    Extended Base
    PCI Configuration
    MS Transactions或者,自己在服务启动时加条件判断(循环检测),比如你的情况可以写一个循环判断当前进程列表里是否有了explorer.exe进程,如果有了才继续执行下去。
      

  2.   

    谢谢你,JPEXE。是在service的LoadGroup里面填上上面的其中排后的一个吗?
    我在Service的start里面执行了一句Svcmgr.Application.CreateForm,运行看起来正常,但是经常关电脑的时候这个service出现内存泄露的提示,可能就是这个服务启动的太早了。
      

  3.   

    谢谢JPEXE,现在在stop事件里面执行了下列销毁代码,应该没有什么大问题,
      if Assigned(FTESTFront) then
      begin
        FTESTFront.Free;    
      end;
    关机的时候windows有可能没有执行stop事件而直接执行了destroy事件,我再测试一下看。
      

  4.   

    正常关机的话都会Stop服务,你当然可以把销毁的代码放在OnDestroy事件中就更保险了。
      

  5.   

    关机时候偶尔会出现这样的错误:
    应用程序发生异常 未知的异常(0xfefde) 位置为0x8c7b
    =======
    然后我修改了一下代码,在Svcmgr.Application.CreateForm创建的可视窗口FTESTFront中,直接点关闭,也是出现了这个相同的错误,应该是server不需要单独close这个可视窗口造成的。所以关机的时候偶尔出现这个错误,很可能是server1和server1建立的可视窗口FTESTFront这两个对象,windows销毁顺序偶尔不同造成的出错。我再做一下测试。谢谢你,JPEXE
      

  6.   

    Windows 2008服务可以设置为延迟加载。