如何将程序注册为系统服务

myzhanglu 2008-04-20 10:31:13
RT,求完整的C++源代码,若能发到我的邮箱myzhanglu@gmail.com.不胜感激!
...全文
207 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
c_spark 2008-04-20
  • 打赏
  • 举报
回复
执行完以后可以在"服务"里看到刚创建好的系统服务名并且是自动启动
c_spark 2008-04-20
  • 打赏
  • 举报
回复
在命令提示符下使用sc命令
这程序执行了添加自己启动服务的功能...
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
if(argc != 3)
{
printf("usage %s ServerName ServerPath\n",argv[0]);
return -1;
}
char order[100];
sprintf(order,"sc create %s binPath= %s start= auto",argv[1],argv[2]);//(等号后面的空格必须)
printf("%s\n",order);
system(order);
return 0;
}


serverName创建服务的名,f:\test\debug\test注册的程序全路径
输入://
..Debug>test serverName f:\test\debug\test
输出:
sc create serverName binPath= f:\test\debug\test start= auto
[SC] CreateService SUCCESS
sc执行成功...
myzhanglu 2008-04-20
  • 打赏
  • 举报
回复
非常感谢!
c_spark 2008-04-20
  • 打赏
  • 举报
回复
当然可以啊!
lz可以试试看看...
打开“注册表编辑器”,展开分支“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
新建服务,只须点击“编辑→新建→项”,然后为此项命名,如“test”;然后右击该项,选择“新建→字符串值”或“新建→DWORD值”即可。
添加一个服务项目具体需要添加的键值如下:
“DisplayName”,字符串值,对应服务名称;
“Descrīption”,字符串值,对应服务描述;
“ImagePath”,字符串值,对应该服务程序所在的路径;
“ObjectName”,字符串值,值为“LocalSystem”,表示本地登录;
“ErrorControl”,DWORD值,值为“1”;
“Start”,DWORD值,值为2表示自动运行,值为3表示手动运行,值为4表示禁止;
“Type”,DWORD值,应用程序对应10,其它对应20。

myzhanglu 2008-04-20
  • 打赏
  • 举报
回复
非常感谢c_spark。顺便再问一下,通过修改注册表也能实现注册为系统服务吗?
c_spark 2008-04-20
  • 打赏
  • 举报
回复
修改了一个...
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
if(argc != 3)
{
printf("usage %s ServerName ServerPath\n",argv[0]);
return -1;
}
char order[100];
sprintf(order,"sc create \"%s\" binPath= \"%s\" start= auto",argv[1],argv[2]);//(等号后面的空格必须)
printf("%s\n",order);
system(order);
return 0;
}

使用过程:
...\Debug>test "server name" "c:\program files\test" //如果输入服务名和路径有空格用""...
sc create "server name" binPath= "c:\program files\test" start= auto
[SC] CreateService SUCCESS
c_spark 2008-04-20
  • 打赏
  • 举报
回复
lz看看行吗?
#include <stdio.h>
#include <stdlib.h>

int main()
{
char serverName[100];
char serverPath[100];
printf("Input serverName you want to create!\n");
scanf("%[^\n]",serverName);
getchar();
printf("Input the program's path\n");
scanf("%[^\n]",serverPath);
char order[100];
sprintf(order,"sc create %s binPath= \"%s\" start= auto",serverName,serverPath);//(等号后面的空格必须)
printf("%s\n",order);
system(order);
return 0;
}

显示:
Input serverName you want to create!
hello
Input the program's path
c:\program files\hello
sc create hello binPath= "c:\program files\hello" start= auto
[SC] CreateService SUCCESS
c_spark 2008-04-20
  • 打赏
  • 举报
回复
怎么看不见回复了
飞雁 2008-04-20
  • 打赏
  • 举报
回复
可以使用开发环境中自带的ALT工具,把自己想实现的代码加入到其中,就是一个相当好的后台服务。
myzhanglu 2008-04-20
  • 打赏
  • 举报
回复
LS说的是一个方法。不过有个小问题,如果文件的路径里含有空格,比如“C:\Program Files"的时候,接受命令行参数就会出现错误。

期待更多的其它实现方法。
SecureCRT and SecureFX v7.3.3 x86 x64 build 779 注册破解正式版 2015年3月31日官方正式更新发布! 附带了注册机和注册说明,亲测可用 SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件。SecureCRT支持SSH,同时支持Telnet和rlogin协议。SecureCRT是一款用于连接运行包括Windows、UNIX和VMS的理想工具。通过使用内含的VCP命令行程序可以进行加密文件的传输。有流行CRTTelnet客户机的所有特点,包括:自动注册、对不同主机保持不同的特性、打印功能、颜色设置、可变屏幕尺寸、用户定义的键位图和优良的VT100,VT102,VT220和ANSI竞争.能从命令行中运行或从浏览器中运行.其它特点包括文本手稿、易于使用的工具条、用户的键位图编辑器、可定制的ANSI颜色等.SecureCRT的SSH协议支持DES,3DES和RC4密码和密码与RSA鉴别。 SecureFX 支持三种文件传输协议:FTP、SFTP 和 FTP over SSH2。它可以提供安全文件传输。无论您连接的是任何一种操作系统服务器,它都能提供安全的传输服务。它主要用于Linux操作系统如redhat, ubuntu的客户端文件传输程序,您可以选择利用SFTP通过加密的SSH2实现安全传输,也可以利用FTP进行标准传输。该客户端具有Explorer风格的界面,易于使用,同时提供强大的自动化能力,可以实现自动化的安全文件传输。

65,209

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧