1

我想向用户/所有人授予我的服务权限。我可以使用 subinacl 来授予此类权限,但不知道如何在 Installer 类中为其编码?

而且,如果我想向 comp 上的每个用户授予权限,我可以使用“Everyone”作为用户吗?

什么是系统没有任何用户 - 我的意思是在没有任何用户的 XP 上,那么如何处理相同的。

请尽早帮助我。非常感谢任何帮助。

编辑: 为了授予许可,我发现了这个:http ://ss64.com/nt/subinacl.html 和这个 。我在 cmd 上尝试过,它有效。我写了以下内容来实现它:

        WshShell shell = new WshShellClass();
        object wf = IWshRuntimeLibrary.WshWindowStyle.WshHide;
        //object ws = IWshRuntimeLibrary.
        if (allusers)
            shell.Run("subinacl /SERVICE \"OpenVPNService\" /Grant=Everyone=TO", ref wf, true);
        else
            shell.Run("subinacl /SERVICE \"OpenVPNService\" /Grant="+ Environment.UserName +"=TO", ref wf, true);
        shell = null;

最后一个参数给出问题。我只需要传递一个 ref obj。它代表是否显示窗口。检查这里我得到错误“参数3:无法从'bool'转换为'ref object'。知道在第三个参数中给出什么。

4

2 回答 2

0

将用户名和密码设置为 null 将意味着除“用户”之外的每个帐户(我的意思是:LocaSystem、LocalService、NetworkService)的情况下的“每个用户”。或者 MSDN 说:

http://msdn.microsoft.com/en-us/library/system.serviceprocess.serviceprocessinstaller.account.aspx

http://msdn.microsoft.com/en-us/library/system.serviceprocess.serviceaccount.aspx

例如:

namespace WindowsService
{
    [RunInstaller(true)]
    public class WindowsServiceInstaller : Installer
    {
        public WindowsServiceInstaller()
        {
            ServiceProcessInstaller serviceProcessInstaller = 
                               new ServiceProcessInstaller();
            ServiceInstaller serviceInstaller = new ServiceInstaller();

            serviceProcessInstaller.Account = ServiceAccount.LocalSystem;
            serviceProcessInstaller.Username = null;
            serviceProcessInstaller.Password = null;

            serviceInstaller.DisplayName = "My New C# Windows Service";
            serviceInstaller.StartType = ServiceStartMode.Automatic;

            serviceInstaller.ServiceName = "My Windows Service";

            this.Installers.Add(serviceProcessInstaller);
            this.Installers.Add(serviceInstaller);
        }
    }
}
于 2011-10-21T09:57:01.713 回答
0

我使用了 Process 并成功完成了工作。谢谢大家。

于 2011-10-21T14:24:51.470 回答