EXE 服务器程序需要在注册表中注册么?

sungengyu 2005-12-09 03:12:09
初学 COM ,问个简单的问题,大家不要笑话 *^_^*

EXE 服务器程序需要在注册表中注册么?我只知道DLL组件要用regsvr32注册。

...全文
85 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzzqqq 2005-12-09
  • 打赏
  • 举报
回复
需要调用SMC的控制函数进行注册.通常是console程序,通过参数形式进行注册:
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
byte b='f';
byte c='F';

KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,

memset(szBinaryPathName,0,MAX_PATH);
::GetModuleFileName(NULL,szBinaryPathName,MAX_PATH);
lpszServiceName=argv[0];

if (argc==2)
{
SC_HANDLE schSCManager = OpenSCManager(
NULL, // local machine
NULL, // ServicesActive database
SC_MANAGER_ALL_ACCESS); // full access rights
::strupr(argv[1]);
if (strcmp(argv[1],"-INSTALL")==0)
InstallService(schSCManager);
else if (strcmp(argv[1],"-UNINSTALL")==0)
UnInstallService(schSCManager);
CloseServiceHandle(schSCManager);

return 1;
}
else if (argc==3)
{
::strupr(argv[1]);
CString strServer=argv[2];
if (strcmp(argv[1],"-RINSTALL")==0)
RemoteInstall(strServer);
else if (strcmp(argv[1],"-RUNINSTALL")==0)
RemoteUnInstall(strServer);
return 1;
}

// 初始化 MFC 并在失败时显示错误
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: 更改错误代码以符合您的需要
_tprintf(_T("致命错误: MFC 初始化失败\n"));
return 0;
}

SERVICE_TABLE_ENTRY ste[] ={{TEXT("F uckService"),(LPSERVICE_MAIN_FUNCTION)Service_Main}, {NULL, NULL}};
StartServiceCtrlDispatcher(ste);
return 1;
}

bool InstallService(SC_HANDLE& hSCM)
{

SC_HANDLE schService = CreateService(
hSCM, // SCManager database
lpszServiceName, // name of service
lpszDisplayName, // service name to display
SERVICE_ALL_ACCESS, // desired access
SERVICE_WIN32_OWN_PROCESS, // service type
SERVICE_AUTO_START, // start type
SERVICE_ERROR_NORMAL, // error control type
szBinaryPathName, // service's binary
NULL, // no load ordering group
NULL, // no tag identifier
NULL, // no dependencies
NULL, // LocalSystem account
NULL); // no password

if (schService == NULL)
printf("InstallService ERROR.\n");
else
printf("InstallService SUCCESS.\n");

CloseServiceHandle(schService);
return true;
}
sungengyu 2005-12-09
  • 打赏
  • 举报
回复
上面那个问题20分。


下面的问题分另算:
感觉自己有点糊涂,谁知道怎么让我清醒?

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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