2 starlight206512 starlight206512 于 2016.01.27 16:08 提问

c#windows服务杀死进程 50C

在windows服务中想杀死一个指定名称的进程,服务运行起来后,每当执行到process.kill()时,都会报拒绝访问异常

6个回答

caozhy
caozhy   Ds   Rxr 2016.01.27 18:28

windows服务运行的账户不是 administrator,和你桌面账户不是一个。所以你桌面上操作有权限,不等于你的服务有权限。
你可以用AdjustTokenPrivileges提权后再操作
http://blog.csdn.net/yiyefangzhou24/article/details/6112233

starlight206512
starlight206512 有没有办法让Windows服务运行的帐户是administrator,AdjustTokenPrivileges这个不会用
接近 2 年之前 回复
Alickqubes
Alickqubes   2016.01.28 09:40

应该是权限问题, 如果你用控制台能成功,控制台应用程序用的是你当前的账户权限 administrator,而windows服务不一定,你配置的时候有可能是localserice 、networkservice、localsystem、或者指定的user 中的一种。

1 看被控制的进程的访问权限(文件属性里面的安全) , 2 当前操作服务的运行的权限

Alickqubes
Alickqubes   2016.01.28 11:33

图片说明

rui888
rui888   Ds   Rxr 2016.01.27 16:09

这种的估计是禁止你杀掉

starlight206512
starlight206512   2016.01.27 16:31

应该不是,我把同样的程序写到控制台里面是可以正常杀掉的,只是在服务里运行会拒绝访问

oyljerry
oyljerry   Ds   Rxr 2016.01.27 16:36

首先对应的进程要能被杀死,其次你有对应的权限进行kill

starlight206512
starlight206512 肯定是能被杀死的,我用控制台测试过,我大概也试了一下,除了Kill会报拒绝访问异常,其他的closemainwindow这些也是可以用的,就是不起作用罢了
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!