如何通过Windows服务停止另一个Windows服务?权限问题求助
问题:停止本地服务时遇到权限拒绝异常
以下是我用于停止服务的代码:
ServiceController sc = new ServiceController(); sc.ServiceName = "UploadDownloadService"; if (sc.Status == ServiceControllerStatus.Running) { sc.Stop(); sc.WaitForStatus(ServiceControllerStatus.Stopped); }
运行代码时抛出以下异常:
System.InvalidOperationException: 'Cannot open UploadDownloadService service on computer '.'.'
Win32Exception: Access is denied
我在调试模式下运行代码,目标服务和调试程序都在同一本地机器上,请问该如何获取足够的权限来停止服务?
预期结果:执行代码后成功停止UploadDownloadService服务。
解决方法
- 以管理员身份启动调试工具:停止系统服务需要管理员权限,右键点击你的IDE(比如Visual Studio),选择「以管理员身份运行」,再启动调试即可。
- 配置应用程序清单:如果不想每次手动切换权限,给项目添加
app.manifest文件,修改其中的权限配置节点:
这样程序启动时会自动弹出UAC请求管理员权限。<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> - 检查服务的权限设置:打开系统「服务」管理器,找到
UploadDownloadService,右键选择「属性」→「安全」标签,确认当前用户拥有「停止」「启动」等操作权限。如果没有,点击「编辑」添加当前用户并赋予对应权限。
内容的提问来源于stack exchange,提问作者Gaurav Shakya
相关产品推荐
相关产品推荐

