如何仅向授权用户启动服务?

时间:2012-11-05 15:04:31

标签: c# windows-services

我很长时间都在为这个项目苦苦挣扎。 我正在使用Windows服务应用程序。我已经创建了一个可用的Windows服务应用程序。现在我收到一个请求,只有授权用户才能启动该服务。

这是我尝试过的。 一世。从app.config文件中读取连接字符串

<add name ="ConnectionString" connectionString="Data Source = Server_name; Initial Catalog = DB_DEV; Integrated Security = True" providerName="System.Data.SqlClient"/>

II。将连接字符串传递给SqlConnection

SqlConnection myConnection = new SqlConnection(myConnectionString) //gives me error here

III。并尝试启动服务登录 - 此用户。

是这样做的方式还是其他任何方式呢?请指导我。感谢。

注意 - 它在VS2010中。

1 个答案:

答案 0 :(得分:1)

Windows服务作为单个用户运行,通过“服务”控制面板配置,就像您正在执行的那样。目前还不清楚数据库连接是如何相关的,但您可以通过多种方法指定哪些用户可以启动和停止服务。

sc命令行工具

使用sc sdset <Service name> <SDDL string>,您可以配置服务的权限,允许您控制谁可以启动/停止服务,但是这需要使用相当简洁且没有特别好记录的SDDL字符串格式。

使用subinacl

Microsoft提供了一个名为SubInACL的工具,可用于配置许多与权限相关的设置。

您可以使用此工具设置服务启动/停止权限,如下所示:

subinacl.exe /service <your service name> /Grant=<user name>=TO

(“TO”表示用户将被授予启动服务(T)和停止服务(O)权限,其他权限值可以通过subinacl /help /full)。