关于c#:cannot open windows service on computer \\’.\\’ in windows application

cannot open window service on computer '.' in window application

我开发了一个窗口应用程序并创建了一个服务。我在窗口应用程序中使用编码启动服务,但出现错误,例如无法在计算机 '.'

上打开窗口服务

我使用了下面的代码。

1
2
3
4
5
6
ServiceController controller = new ServiceController("SeoMozScheduleService");

if (controller.Status == ServiceControllerStatus.Stopped)
{
    controller.Start();
}

如果我右键单击应用程序并单击以管理员身份运行,那么它对我来说很好......


要在每次打开应用程序时自动执行此操作,您必须将清单文件添加到解决方案中,然后更新文件中的 requestedExecutionLevel 节点,使其如下所示:

1
2
    <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>

但是,如果启用了 UAC,更改此设置将导致系统每次提示您以管理员身份运行应用程序。


转到
c://Program Files/ApplicationFolder/.exe
右键单击 .exe 并转到 Properties 然后转到 Compatibility Tab 并检查 true to Run this Program as an administrator Level.


如果您使用的是visual studio,请关闭它并以管理员身份运行它重新打开visual sudio


这些解决方案都没有帮助我,因为如果我确实首先确保我在目标计算机上具有管理员访问权限,那将会有所帮助!我正在使用我的域管理员帐户取消并授予管理员对我的主帐户的访问权限。当我运行一些 ServiceController 代码来检查服务是否在远程计算机上运行时,在域管理员帐户下,一切都很好。当我将它作为我的主帐户时,它就不起作用了——即使以管理员身份运行 Visual Studio 也是如此。原来我在本地管理员组中没有我的主帐户的情况下进行测试... d\\'oh!


我在服务器上的计划任务中遇到了这个问题——检查"以最高权限运行"解决了这个问题。 (服务帐户当然必须具有管理员权限才能正常工作。)


应用程序可能不需要管理员权限。 Microsoft 管理控制台 (MMC)(包括服务管理单元)没有。 MMC 的清单具有:

1
2
3
4
<requestedExecutionLevel
    level="highestAvailable"
    uiAccess="false"
/>

它没有 level="requireAdministrator".

参见 c# - 如何创建/编辑 Manifest 文件? - 堆栈溢出,以获取将清单添加到项目的说明。

关于最小特权原则的文章非常多,包括以下几篇。

  • 最小特权
  • 什么是最小特权原则(POLP)? - 来自 WhatIs.com 的定义
  • 什么是最小特权原则(POLP)?信息安全与合规的最佳实践 \\\\\\\\|数码卫士
  • 什么是最小特权


    将 app.conf 中的框架版本更改为系统上安装的版本为我解决了这个问题。