c#向Windows用户授予“作为服务登录”权限

如何为用户授予服务的LogOnAsService权限?

我需要手动执行此操作,在services.msc应用程序中我可以转到服务,更改密码(设置与之前相同),单击“应用”并收到消息:

帐户。\ postgres已被授予登录身份服务权限。

我如何从代码中执行此操作,因为否则每次运行应用程序时我都必须手动授予此权限,这不可能

@Steve

static void Main() { // irrelevant stuff GrantLogonAsServiceRight("postgres"); // irrelevant stuff } private static void GrantLogonAsServiceRight(string username) { using (LsaWrapper lsa = new LsaWrapper()) { lsa.AddPrivileges(username, "SeServiceLogonRight"); } } 

和这个家伙威利的LSA lib。

请参阅在C#中授予用户权限 。

您必须通过P / Invoke调用LSA API,并且该URL引用了为您执行此操作的包装类 。 所以你最终得到的代码很简单:

 private static void GrantLogonAsServiceRight(string username) { using (LsaWrapper lsa = new LsaWrapper()) { lsa.AddPrivileges(username, "SeServiceLogonRight"); } }