如何将参数传递给Windows服务?

Rag*_*oud 21 c# windows-services

我试图将参数传递给Windows服务.

这是我的代码片段:

class Program : ServiceBase
{
    public String UserName { get; set; }
    public String Password { get; set; }

    static void Main(string[] args)
    {
        ServiceBase.Run(new Program());
    }

    public Program()
    {
        this.ServiceName = "Create Users Service";
    }

    protected override void OnStart(string[] args)
    {
        base.OnStart(args);

        String User = UserName;
        String Pass = Password;
        try
        {
            DirectoryEntry AD = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer");

            DirectoryEntry NewUser = AD.Children.Add(User, "user");
            NewUser.Invoke("SetPassword", new object[] { Pass });
            NewUser.Invoke("Put", new object[] { "Description", "Test User from .NET" });
            NewUser.CommitChanges();
            DirectoryEntry grp;
            grp = AD.Children.Find("Administrators", "group");
            if (grp != null)
            {
                grp.Invoke("Add", new object[] { NewUser.Path.ToString() });
            }
            Console.WriteLine("Account Created Successfully");
            Console.ReadLine();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
            Console.ReadLine();
        } 
    }
Run Code Online (Sandbox Code Playgroud)

如何将UserName和Password传递给此Windows服务?

Ren*_*iuz 27

您可以在启动时传递参数,如下所示:

  1. 右键单击MyComputer,然后选择管理 - >服务和应用程序 - >服务
  2. 右键单击您的服务,选择"属性",然后您应该会看到"常规"选项卡下的"开始参数"框.

例如,如果您在那里输入,User Password您将以protected override void OnStart(string[] args)args的形式获得这些参数.然后像这样使用它:

protected override void OnStart(string[] args)
{
    base.OnStart(args);
    UserName = args[0];
    Password = args[1];
    //do everything else
}
Run Code Online (Sandbox Code Playgroud)

  • 从win7(至少)开始,这仅用于设置从"属性"对话框启动服务时要使用的参数 (7认同)

小智 5

您将不得不从外部源加载这些值.最简单的方法是使用Configuration Manager直接从app.config文件加载它们.像这样:http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.appsettings.aspx