问题 : 根据客户的需求做了一个小程序,需要有对WindowsService 安装,卸载,启动,停止的操作。
编译好之后在我的工程内直接Run 没问题。直接在inDebug 点小程序运行,任何操作也没问题。
由于客户要求免安装。
于是我把Debug 文件夹拷到桌面上运行,其他功能都ok,但是涉及到WindowsService的时候启动总是报错:“无法启动计算机“.”上的服务”。
追错思路:
于是桌面上程序的安装好了服务之后:1。用bin文件夹下的程序来启动也是这个错;2,用工程直接跑起来启动也是报这个错。
于是把服务卸载。用工程跑起来或者bin文件夹下安装好服务,然后分别用桌面上的程序启动,没问题。其他操作也都正常。
于是断定 在桌面上的程序安装服务的时候出了问题。但是到底是出了啥问题,偶是百思不得其解,到网上搜,也找到解决方法。
在此请各位路过的大侠集思广益,帮小妹解决这个麻烦。
不胜感激。
补充一下,手动启动时也是报这个错误,没有多余的错误信息了,╮(╯▽╰)╭。
个人感觉是权限分配的问题,但又不知如何下手。先自己捣鼓捣鼓去。
哎,问题解决了,但原因还不清楚到底为什么,等有空了再回来研究研究。
解决方法:把桌面上的目录移到D盘根目录(或者其他正常的目录应该也可以)就可以了。
一般是账户权限的问题,你放服务应用程序的folder没相应权限
今天在客户这发布后又出现了这个问题,仔细研究了一下,发现在安全里,把Authenticated Users这个用户添加上就不报错了。问题又来了,怎样在代码里把权限加上呢
目前终于算是把这个问题给清了,解决方式是,调用安装方法之前在程序里调用dos命令:
CACLS Comm.dll /G Everyone:F
紧跟着再输入一个Y,权限就赋好了。
烦了我这么长时间的一个问题终于解决了,分一下分,以示庆祝。(^o^)/
参考: http://bbs.csdn.net/topics/340228918