我已经用C语言编写了一个Windows服务,但缺乏用这种语言编写服务的文档意味着我需要一些帮助。Windows服务C
我想创建一个配置文件,服务读取以获得一些设置/选项。我想知道做这件事的最好方法是什么以及如何做到这一点。服务.exe将与其他文件/程序一起安装在用户指定的位置。我有的第一个问题是我应该将此配置文件保存在与服务.exe相同的目录中,还是应该将其放入为我的程序创建的%appdata%文件夹中?
服务如何能够找到配置文件。我应该将配置文件的位置存储在注册表中,并将注册表项硬编码到服务中?或者是否可以安装该服务,以便它将配置文件路径作为默认命令行参数?还是应该将我的配置文件保存在与服务.exe相同的文件夹中并使用注册表
HKLM/System/CurrentControlSet/Services/<servicename>/ImagePath
?我有以下代码:
void main() {
SERVICE_TABLE_ENTRY ServiceTable[2];
ServiceTable[0].lpServiceName = L"Service Name";
ServiceTable[0].lpServiceProc = (LPSERVICE_MAIN_FUNCTION)ServiceMain;
ServiceTable[1].lpServiceName = NULL;
ServiceTable[1].lpServiceProc = NULL;
// Start the control dispatcher thread for our service
StartServiceCtrlDispatcher(ServiceTable);
}
void ServiceMain(int argc, char** argv) {
//stuff here
}
哪里的ServiceMain从获得其命令行参数,是它的“启动参数:”根据特定服务的属性框?是可以安装它与一些默认参数?是否有可能以后编程添加一些?
当另一个服务启动时是否可以使我的服务有条件地启动?
我怎么能安装在生产这种服务?我一直在使用Windows SDK的sc进行开发,但这不适用于生产。唯一的方法是确保安装微软.net框架,然后运行installutil程序?我的服务输出到一个日志文件:我的服务,而无需使用.NET框架,所以我本来希望会有一个方式,而无需安装.NET
加分题安装服务写入的。是否有可能检查文件的大小,如果超过任意文件大小,是否可以删除它?
PS我不知道为什么列表中的代码后,重置为1 & 2,它显然在编辑框中说,4和5。
提供的ServiceMain的参数是那些给StartService,如记录HTTP:// msdn.microsoft.com/en-us/library/ms685138%28VS.85%29.aspx –