我想向用户/所有人授予我的服务权限。我可以使用subinacl来授予这样的权限,但是我不知道如何在Installer类中编写代码?
如果我想给comp上的每个用户授予权限,我可以使用“Everyone”作为用户吗?
什么是没有任何用户的系统 - 我的意思是XP没有任何用户,那么如何处理相同的。
请尽早帮助我。任何帮助都非常感谢。
编辑: 为了授予权限,我发现了这一点:http://ss64.com/nt/subinacl.html和this。我尝试了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。它代表了显示窗口。 Check Here我收到错误“参数3:无法从'bool'转换为'ref object'。任何想法在第3个参数中给出什么。
答案 0 :(得分:0)
将用户名和密码设置为空将表示除“用户”之外的每个帐户的“每个用户”(我的意思是: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);
}
}
}
答案 1 :(得分:0)
我使用了Process并成功完成了任务。谢谢大家。