1

我正在开发一个管理构成某些产品的服务的应用程序。到目前为止,可以预见该应用程序是以提升启动的(因此用户必须确认 UAC 提示)。似乎对于大多数操作来说,不需要提升,例如启动停止服务。

该应用程序通常由本地管理员组的成员运行;这些人可以启动 services.msc,然后他们可以启动和停止服务。所以我希望它“正常工作”:

ServiceController sc = new ServiceController(Environment.MachineName, "MyServiceApp");
sc.Start();

它因“拒绝访问”异常而失败。所以我加了

ServiceControllerPermission scp = 
    new ServiceControllerPermission(ServiceControllerPermissionAccess.Control, Environment.MachineName, "MyServiceApp");
scp.Demand();
ServiceController sc = new ServiceController(Environment.MachineName, "MyServiceApp");
sc.Start();

需求成功,启动仍然失败。

我在 StackExchange 上阅读了很多关于 ServiceController 和安全问题的问题(和答案);很多答案表明需要提升。由于我(我是本地管理员组的成员)可以开始和停止使用 services.msc,所以不要购买它。

那么 services.msc 怎么了?我的代码怎么了?我确实启用了 UAC,但我不想禁用它。要启动或停止服务,不需要提升,对吧?否则 services.msc 也需要提升吗?(我的一位同事建议 services.msc 包含一些“使它工作”的“特殊代码”;我也不买那个)。

感谢您的任何回答。

4

1 回答 1

0

Services.msc(mmc.exe)不一定以提升/管理权限运行。

您可以制作一些“特殊代码”,要求 Windows 以提升的方式运行您的程序。您将使用清单 文件。

如何强制我的 .NET 应用程序以管理员身份运行? https://stackoverflow.com/a/4084620/787893

于 2013-12-17T11:54:01.867 回答