无法在电脑上打开窗口服务'。'在窗口应用程序中

时间:2013-01-24 12:48:21

标签: c# windows-services windows-applications

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

我使用了以下代码。

ServiceController controller = new ServiceController("SeoMozScheduleService");

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

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

7 个答案:

答案 0 :(得分:16)

要在每次打开应用程序时自动执行此操作,您必须add a manifest file到解决方案,然后更新文件中的requestedExecutionLevel节点,如下所示:

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

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

答案 1 :(得分:11)

转到 c:// Program Files / ApplicationFolder / .exe 右键单击.exe并转到Properties,然后转到Compability选项卡并选中true以管理员级别运行此程序。

答案 2 :(得分:3)

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

答案 3 :(得分:2)

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

答案 4 :(得分:1)

我遇到了服务器上的计划任务 - 检查“以最高权限运行”解决了它。 (当然,服务帐户必须具有管理权限才能使用。)

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

<requestedExecutionLevel
    level="highestAvailable"
    uiAccess="false"
/>

它没有level="requireAdministrator"

有关向项目添加清单的说明,请参见c# - How do I create/edit a Manifest file? - Stack Overflow

关于最低特权原则的文章很多,包括以下内容。