当前位置: 首页 > 编程语言 > C#

Windows服务中的参数如何从installer传递给Program.cs中的Main函数?分享

时间:2023-04-11 01:19:52 C#

如何将Windows服务的参数从安装程序传递到Program.cs中的Main函数?我已经成功地将参数从Installutil传递到我的serviceinstaller但我似乎无法将这些参数传递给Main(string[args]函数。下面是我正在尝试做的......如果有更好的方法做我的我在做,请让我知道protectedoverridevoidOnAfterInstall(IDictionarysavedState){base.OnAfterInstall(savedState);string[]args=newstring[2];args[0]=Context.Parameters["username"];args[0]=Context.Parameters["password"];newServiceController(this.dataLoaderServiceInstaller.ServiceName).Start(args);}这是我的Program.csstaticvoidMain(string[]args){//创建一个写入器并打开文件TextWritertw=newStreamWriter(@"c:\bw\date.txt");//将一行文本写入文件tw.WriteLine(args.Length);//关闭streamtw.Close();ServiceBase[]ServicesToRun;ServicesToRun=newServiceBase[]{newDataloaderService()};一个问题是这些参数是否仍然存在?提前致谢。?您使用ServiceController.Start()方法发送的参数可用作OnStart()方法的参数。如果我没记错的话(因为我需要这样做已经有一段时间了)。OnStart方法的签名是:OnStart(string[]args)但是,如果您需要在每次服务启动(自动)启动时向服务发送参数,那么您应该查看MSDN文档。特别是,在OnStart方法中处理服务的初始化参数,而不是在Main方法中。args参数数组中的参数可以在服务控制台的服务属性窗口中手动设置。控制台输入的参数不保存;当从控制面板启动服务时,它们会一次性传递给服务。服务自动启动时必须存在的参数可以放在服务注册表项(HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices)的ImagePath字符串值中。您可以使用GetCommandLineArgs方法从注册表中获取参数,例如:string[]imagePathArgs=Environment.GetCommandLineArgs();。http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicebase.onstart。aspx以上就是C#学习教程:Windows服务中的参数如何从installer传递给Program.cs中的Main函数?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: