AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
阅读:1370回复:10

如何写一个服务器应用程序

楼主#
更多 发布于:2003-05-23 09:43
如何写一个服务器应用程序?如:\"Norton AntiVirus 警报服务\"那样的,然后如何安装?
我写过很多sys,vxd等,是使用Service API吗?可安装怎么半,写个inf文件?
我发现所有“服务”的类型都是LegacyDriver的
请诸位指点
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2003-05-23 15:35
MSDN:Service Sample: Create and Install a Service
sufeng
驱动牛犊
驱动牛犊
  • 注册日期2002-04-27
  • 最后登录2004-08-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-05-23 19:19
最简单的就是修改几个注册表项:
hklm\\system\\currentcontrolset\\services\\下面添加。

每个大概有几项必须写,具体你可以参考系统本身的。
displayname:  hello
imagepath:  \\??\\e:\\hello.sys
type:1
start:3

或者你写个inf.
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-05-26 10:11
最简单的就是修改几个注册表项:
hklm\\system\\currentcontrolset\\services\\下面添加。

每个大概有几项必须写,具体你可以参考系统本身的。
displayname:  hello
imagepath:  \\??\\e:\\hello.sys
type:1
start:3

或者你写个inf.
 

这位兄台说的与我的问题不相关,我说的是象\"Norton AntiVirus 警报服务\"那样的服务程序,一个可执行程序,它更本不是在ring0运行的,而是在ring3,在你没有登录win2000时,它已经启动并运行,而sys是工作在ring0的驱动程序
不论怎样谢谢老兄关注
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-05-26 10:15
MSDN:Service Sample: Create and Install a Service

老大,这个Sample中的install可能应该理解位加载(装载之类),而不是安装,其代码如下:
void CmdInstallService()
{
    SC_HANDLE   schService;
    SC_HANDLE   schSCManager;

    TCHAR szPath[512];

    if ( GetModuleFileName( NULL, szPath, 512 ) == 0 )
    {
        _tprintf(TEXT(\"Unable to install %s - %s\\n\"), TEXT(SZSERVICEDISPLAYNAME), GetLastErrorText(szErr, 256));
        return;
    }

    schSCManager = OpenSCManager(
                        NULL,                   // machine (NULL == local)
                        NULL,                   // database (NULL == default)
                        SC_MANAGER_ALL_ACCESS   // access required
                        );
    if ( schSCManager )
    {
        schService = CreateService(
            schSCManager,               // SCManager database
            TEXT(SZSERVICENAME),        // name of service
            TEXT(SZSERVICEDISPLAYNAME), // name to display
            SERVICE_ALL_ACCESS,         // desired access
            SERVICE_WIN32_OWN_PROCESS,  // service type
            SERVICE_DEMAND_START,       // start type
            SERVICE_ERROR_NORMAL,       // error control type
            szPath,                     // service\'s binary
            NULL,                       // no load ordering group
            NULL,                       // no tag identifier
            TEXT(SZDEPENDENCIES),       // dependencies
            NULL,                       // LocalSystem account
            NULL);                      // no password

        if ( schService )
        {
            _tprintf(TEXT(\"%s installed.\\n\"), TEXT(SZSERVICEDISPLAYNAME) );
            CloseServiceHandle(schService);
        }
        else
        {
            _tprintf(TEXT(\"CreateService failed - %s\\n\"), GetLastErrorText(szErr, 256));
        }

        CloseServiceHandle(schSCManager);
    }
    else
        _tprintf(TEXT(\"OpenSCManager failed - %s\\n\"), GetLastErrorText(szErr,256));
}

丛上面的代码来看,只是一次性的运行某服务,而不是在安装到系统中,而后每次都象\"Norton AntiVirus 警报服务\"那样的服务程序自动加载了
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2003-05-26 10:42
StartServiceCtrlDispatcher
RegisterServiceCtrlHandler
SetServiceStatus
...
slwqw
驱动大牛
驱动大牛
  • 注册日期2002-07-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望197点
  • 贡献值0点
  • 好评度147点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-05-26 10:56
[quote]MSDN:Service Sample: Create and Install a Service

老大,这个Sample中的install可能应该理解位加载(装载之类),而不是安装,其代码如下:
void CmdInstallService()
{
    SC_HANDLE   schService;
    SC_HANDLE   schSCManager;

    TCHAR szPath[512];

    if ( GetModuleFileName( NULL, szPath, 512 ) == 0 )
    {
        _tprintf(TEXT(\"Unable to install %s - %s\\n\"), TEXT(SZSERVICEDISPLAYNAME), GetLastErrorText(szErr, 256));
        return;
    }

    schSCManager = OpenSCManager(
                        NULL,                   // machine (NULL == local)
                        NULL,                   // database (NULL == default)
                        SC_MANAGER_ALL_ACCESS   // access required
                        );
    if ( schSCManager )
    {
        schService = CreateService(
            schSCManager,               // SCManager database
            TEXT(SZSERVICENAME),        // name of service
            TEXT(SZSERVICEDISPLAYNAME), // name to display
            SERVICE_ALL_ACCESS,         // desired access
            SERVICE_WIN32_OWN_PROCESS,  // service type
            SERVICE_DEMAND_START,       // start type
            SERVICE_ERROR_NORMAL,       // error control type
            szPath,                     // service\'s binary
            NULL,                       // no load ordering group
            NULL,                       // no tag identifier
            TEXT(SZDEPENDENCIES),       // dependencies
            NULL,                       // LocalSystem account
            NULL);                      // no password

        if ( schService )
        {
            _tprintf(TEXT(\"%s installed.\\n\"), TEXT(SZSERVICEDISPLAYNAME) );
            CloseServiceHandle(schService);
        }
        else
        {
            _tprintf(TEXT(\"CreateService failed - %s\\n\"), GetLastErrorText(szErr, 256));
        }

        CloseServiceHandle(schSCManager);
    }
    else
        _tprintf(TEXT(\"OpenSCManager failed - %s\\n\"), GetLastErrorText(szErr,256));
}

丛上面的代码来看,只是一次性的运行某服务,而不是在安装到系统中,而后每次都象\"Norton AntiVirus 警报服务\"那样的服务程序自动加载了 [/quote]


仔细看看帮助吧,这不是“一次性”的运行,而是“永久性”的安装。

除非你以后调用DeleteService()把它删除,否则它会永远驻留在
注册表里边,每一次系统启动时它都会启动。

特别注明:

针对这段代码,我所说的“永久性”安装也不完全对。必须更改一个参数才能真正达到“永久性”安装。即“SERVICE_DEMAND_START -> SERVICE_BOOT_START(或者SERVICE_AUTO_START,具体问题具体分析)”。
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-05-26 14:19


仔细看看帮助吧,这不是“一次性”的运行,而是“永久性”的安装。

除非你以后调用DeleteService()把它删除,否则它会永远驻留在
注册表里边,每一次系统启动时它都会启动。

特别注明:

针对这段代码,我所说的“永久性”安装也不完全对。必须更改一个参数才能真正达到“永久性”安装。即“SERVICE_DEMAND_START -> SERVICE_BOOT_START(或者SERVICE_AUTO_START,具体问题具体分析)”。


多谢,的确是这样
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-05-26 14:20


仔细看看帮助吧,这不是“一次性”的运行,而是“永久性”的安装。

除非你以后调用DeleteService()把它删除,否则它会永远驻留在
注册表里边,每一次系统启动时它都会启动。

特别注明:

针对这段代码,我所说的“永久性”安装也不完全对。必须更改一个参数才能真正达到“永久性”安装。即“SERVICE_DEMAND_START -> SERVICE_BOOT_START(或者SERVICE_AUTO_START,具体问题具体分析)”。


多谢,的确是这样,我没有看看完,还有arthurtu兄多谢了
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-05-26 14:20


仔细看看帮助吧,这不是“一次性”的运行,而是“永久性”的安装。

除非你以后调用DeleteService()把它删除,否则它会永远驻留在
注册表里边,每一次系统启动时它都会启动。

特别注明:

针对这段代码,我所说的“永久性”安装也不完全对。必须更改一个参数才能真正达到“永久性”安装。即“SERVICE_DEMAND_START -> SERVICE_BOOT_START(或者SERVICE_AUTO_START,具体问题具体分析)”。


多谢,的确是这样,我没有看完,不好意思,还有arthurtu兄多谢了
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-05-26 15:18
如果要显示用户界面,该这样操作呢?
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
游客

返回顶部