新建了一个windows服务,关机再开机能够自启动,但是用cmd命令行创建此服务需要手动启动

问题描述

有没有什么方法,创建此windows服务之后,不用手动启动,一运行此windows服务,它就自启动了?现在这个windows方法,运行完毕之后,需要手动去启动,但是关机开机之后他能自启动,我想要的是,运行完毕之后能达到像开机关机之后自启动这个情况,希望各位大神指点

解决方案

本帖最后由 a981583536 于 2016-07-11 13:05:10 编辑
解决方案二:
自己去看下Program.cs的Main函数吧默认如果是服务的话通过ServiceBase.Run来运行你可以自己加个参数,直接执行相应的方法
解决方案三:
你可以把一个windowsservice工程(修改应用程序属性)重新设置为“控制台应用”,然后以你说得控制台方式执行。控制台方式的main可以这样写(例如)staticvoidMain(string[]args){if(args.Length==0){#if!DEBUGServiceBase.Run(newService());#elseShowHelp();#endifreturn;}if(args.Contains("-i")){Uninstall(true);端口.ForEach(p=>打开防火墙(p));Install();return;}if(args.Contains("-u")){Uninstall();return;}if(args.Contains("-t")){Uninstall(true);Execute(true);Console.WriteLine("系统进入Pending状态。请按Ctrl+Break退出.....");vareh=newManualResetEvent(false);Console.CancelKeyPress+=(s,e)=>{eh.Set();};eh.WaitOne();return;}ShowHelp();}privatestaticvoidShowHelp(){Console.WriteLine("命令参数格式:");Console.WriteLine("t-i:安装windows服务。");Console.WriteLine("t-u:卸载windows服务。");Console.WriteLine("t-t:以控制台方式执行服务。");}

privatestaticvoid打开防火墙(intport){varinf=newProcessStartInfo{UseShellExecute=true,FileName="netsh",Arguments="firewallsetportopeningTCP"+port,WindowStyle=ProcessWindowStyle.Hidden};varp=Process.Start(inf);p.WaitForExit();}privatestaticvoidUninstall(bool独立窗口=false){Console.WriteLine("停止"+SvrName);varinfo=newProcessStartInfo("sc","stop"+SvrName){WindowStyle=ProcessWindowStyle.Hidden,UseShellExecute=独立窗口};varpro=Process.Start(info);pro.WaitForExit();Console.WriteLine("卸载"+SvrName);info.Arguments="delete"+SvrName;pro=Process.Start(info);pro.WaitForExit();}privatestaticvoidInstall(){#ifDEBUGConsole.WriteLine("以DEBUG模式编译的程序不应安装为windows服务。请重新编译程序。");#elseConsole.WriteLine("创建"+SvrName);//注意这些选项以等号结束,然后要有一个空格,后边才能跟选项值。一定不能缺少空格。varinfo=newProcessStartInfo("sc",string.Format("create{0}binpath="{1}"displayname="{2}"start=autotype=own",SvrName,Process.GetCurrentProcess().MainModule.FileName,SvrDisplay)){WindowStyle=ProcessWindowStyle.Minimized,UseShellExecute=false};varpro=Process.Start(info);pro.WaitForExit();Console.WriteLine("启动"+SvrName);info.Arguments="start"+SvrName;pro=Process.Start(info);pro.WaitForExit();#endif}

解决方案四:
Execute();实际上就是你的执行业务处理的主程序。你的服务中可能就是这样调用它的partialclassService:ServiceBase{publicService(){InitializeComponent();}protectedoverridevoidOnStart(string[]args){ThreadPool.QueueUserWorkItem(h=>Program.Execute(false));//自定义参数表示是否是控制台调用}}

所以,一个控制台程序,它可以用“命令行参数”来控制服务的安装、卸载。并且也可以以控制台方式测试执行。
解决方案五:
调用执行一个*.bat文件好了,bat文件restart你的电脑
解决方案六:
你的所谓“用cmd命令行创建此服务”于这里的abc.exe-i命令的区别,你自己一看便知。这里,abc.exe把自己安装为服务器,然后立刻启动了服务器!
解决方案七:
引用4楼shoppo0505的回复:

调用执行一个*.bat文件好了,bat文件restart你的电脑

呵呵,随时卸载和安装服务,是不用启动电脑的哇。
解决方案八:
sccreate[Name]binpath="[path]"start=auto

每个=后面有一个空格
解决方案九:
引用7楼crystal_lz的回复:

sccreate[Name]binpath="[path]"start=auto

每个=后面有一个空格

这个我加了

时间: 2024-09-28 22:24:46

新建了一个windows服务,关机再开机能够自启动,但是用cmd命令行创建此服务需要手动启动的相关文章

怎么解决Arcgis关机再开机后无权限这种问题

我电脑上的装好的Arcgis关机再 开机后就出现下边的这种情况. 再网上搜教程说是装许可服务管理器时没有装好,但就是按照教程装的破解版的Arcgis,好多网友也出现过这种问题,最后我自己卸载再重新装,还是会出现这种问题,最后我就自己想了一个歪打正着的招,结果好奏效了,下边就跟大家分享一下. 网上既然说是许可管理器没有装好,那么我就把许可管理器打开再重新设定一下 "停止"和"启动".如下,我们打开许可管理器. 我们发现许可管理器在每次重启后都会变成停止状态,我们只需要

Linux有问必答:如何通过命令行创建和设置一个MySQL用户

Linux有问必答:如何通过命令行创建和设置一个MySQL用户 问题:我想要在MySQL服务器上创建一个新的用户帐号,并且赋予他适当的权限和资源限制.如何通过命令行的方式来创建并且设置一个MySQL用户呢? 要访问一个MySQL服务器,你需要使用一个用户帐号登录其中方可进行.每个MySQL用户帐号都有许多与之相关连的属性,例如用户名.密码以及权限和资源限制."权限"定义了特定用户能够在MySQL服务器中做什么,而"资源限制"为用户设置了一系列服务器资源的使用许可.创

msbuild-如何使用命令行创建一个空白vs项目或者解决方案

问题描述 如何使用命令行创建一个空白vs项目或者解决方案 使用的是vs2010旗舰版,了解到有几个VS的工具devenv,MSBuild,VCBuild可以在命令行根据已有的.csproj及.sln文件编译生成项目或解决方案. 但是我现在想要知道的是如何用命令行从无到有的创建一个全新的空白解决方案/项目,就是VS打开后点击文件->新建项目,输入项目名,确定后生成一个新项目的这一整个过程的命令行操作方式. 需要参数的是指定文件名和项目类型,主要是想要做到新生成项目的自动化操作而不要老是手点,所以如

ubuntu-关于命令行创建一个android test-project

问题描述 关于命令行创建一个android test-project 在适应IDE(例如Eclipse)创建Android test project时可以将test target project设置为this project,那么如何在命令行创建一个android test project ? 如果使用 android create test-project -p . -m . 会报错:Error: No AndroidManifest.xml file found in the main pr

Linux有问必答:如何在命令行创建一个MySQL数据库

Linux有问必答:如何在命令行创建一个MySQL数据库 问题:在一个某处运行的MySQL服务器上,我该怎样通过命令行创建和安装一个MySQL数据库呢? 为了能通过命令行创建一个MySQL数据库,你可以使用mysql命令行客户端.下面是通过mysql命令行客户端创建和安装MySQL的步骤. 第一步:安装MySQL客户端 当然你得确保MySQL客户端已经安装完毕.如果没有的话,可以按照下面的方法. 在Debian,Ubuntu 或者 Linux Mint上: $ sudo apt-get inst

我想通过cmd命令行去调一个jar包的bat脚本怎么写?

问题描述 RT:我想启动一个cmd命令行窗口执行命令调用F:TESTtest.jar,脚本应该怎么写?1.启动一个cmd控制台2.可以在任意目录执行:java -jar test.jar3.打开的cmd控制台不关闭,可以实时打印输出信息(如截图cmd.png)另外帮忙写个停止执行该jar包的java进程的bat脚本,谢谢! 解决方案 打开的cmd控制台不关闭,可以在执行:java -jar test.jar 下面一行加上pause

电脑开机没反应需要开机后关机再开机 该怎么解决

电脑开机没反应 电脑开机没反应时比较常见的电脑故障,其产生的原因有很多,对于菜鸟来说电脑开机没反应主要看的时显示器不亮,再懂些电脑的或许还会去看下主机电源指示灯亮不亮,如果再懂点的朋友可能就会把主机外壳拆开,看下主机内部是否运行正常,主要是看CPU风扇是不是再转,硬盘是否在工作(可以把手放在硬盘表面感觉下是否有磁盘震动,有的话,说明主板在运行.要解决电脑开机没反应,解决办法是针对其可能会产生的原因去解决了. 电脑开机没反应最明显的就是电脑显示器不亮,所以最简单的没反应就是现实器不亮,发现这样的问

PHP启动windows应用程序、执行bat批处理、执行cmd命令的方法(exec、system函数详解)_php实例

exec 或者 system 都可以调用cmd 的命令 直接上代码: 复制代码 代码如下: <?php /** 打开windows的计算器 */ exec('start C:WindowsSystem32calc.exe'); /** php生成windows的批处理文件后,再执行这个批处理文件*/ $filename = 't.bat'; $somecontent = 'C: '; $somecontent .= 'cd "C:/Program Files/MySQL-Front&quo

Windows下使用命令行创建可启动U盘

  如果你还在用光盘装系统,你就OUT啦--从Windows Vista开始,U盘已经可以被用来启动机器并安装系统了. 在制作可启动U盘之前,你需要: 一个U盘,最好是4G或更大的 一张Windows 7或者Vista的光盘 一台正在运行Windows 7或者Vista的电脑 然后按照下列步骤: 1.将U盘连上电脑 2.打开管理员模式的命令行(开始菜单->所有程序->附件->命令提示符,右键单击,选择"以管理员方式打开") 3.在命令行中输入下列命令(粗体部分): a