Search code examples
c#windows-services

How to pass parameters to Windows Service?


I tried to pass parameters to a windows service.

Here is my code snippet:

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();
        } 
    }

How do I pass UserName and Password to this windows service?


Solution

  • You can pass parameters on startup like this:

    1. Right click on MyComputer and select Manage -> Services and Applications -> Services
    2. Right click on your service, select Properties and you should then see the Start Parameters box under the General tab.

    If you enter there for example User Password you will get these parameters in protected override void OnStart(string[] args) as args. then use it like this:

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