/// <summary> /// Installs a service on any machine /// </summary> /// <param name="machineName">Name of the computer to perform the operation on</param> /// <param name="name">The name of the service in the registry</param> /// <param name="displayName">The display name of the service in the service manager</param> /// <param name="physicalLocation">The physical disk location of the executable</param> /// <param name="startMode">How the service starts - usually Automatic</param> /// <param name="userName">The user for the service to run under</param> /// <param name="password">The password fo the user</param> /// <param name="dependencies">Other dependencies the service may have based on the name of the service in the registry</param> /// <param name="interactWithDesktop">Should the service interact with the desktop?</param> /// <returns>A service return code that defines whether it was successful or not</returns> public ServiceReturnCode Install(string machineName, string name, string displayName, string physicalLocation, ServiceStartMode startMode, string userName, string password, string[] dependencies, bool interactWithDesktop) { const string methodName = "Create"; //string[] serviceDependencies = dependencies != null ? dependencies.Split(',') : null; if (userName.IndexOf('\\') < 0) { //userName = "******" + userName; //UNCOMMENT the line above - it caused issues with color coding in THIS ARTICLE } try { object[] parameters = new object[] { name, // Name displayName, // Display Name physicalLocation, // Path Name | The Location "E:\somewhere\something" Convert.ToInt32(ServiceType.OwnProcess), // ServiceType Convert.ToInt32(ServiceErrorControl.UserNotified), // Error Control startMode.ToString(), // Start Mode interactWithDesktop, // Desktop Interaction userName, // StartName | Username password, // StartPassword |Password null, // LoadOrderGroup | Service Order Group null, // LoadOrderGroupDependencies | Load Order Dependencies dependencies // ServiceDependencies }; return((ServiceReturnCode)_wmi.InvokeStaticMethod(machineName, CLASS_NAME, methodName, parameters)); } catch { return(ServiceReturnCode.UnknownFailure); } }
/// <summary> /// Instala un servicio en una maquina /// </summary> /// <param name="machineName">nombre de la maquina</param> /// <param name="name">nombre del servicio</param> /// <param name="displayName">El nombre que se mostrara en la consola de administracion</param> /// <param name="physicalLocation">el path de instalacion</param> /// <param name="startMode">Como arrancara el servicio - normalmente: Automatic</param> /// <param name="userName">el usuario que ejecuta el servicio</param> /// <param name="password">el password del usuario</param> /// <param name="dependencies">Otras dependencias del servicio</param> /// <param name="interactWithDesktop">Interactua con el escritorio?</param> /// <returns>Codigo devuelto indicando el exito de la operacion</returns> public Win32API.ServiceReturnCode Install(string machineName, string name, string displayName, string physicalLocation, Win32API.ServiceStartMode startMode, string userName, string password, string[] dependencies, bool interactWithDesktop) { const string methodName = "Create"; //string[] serviceDependencies = dependencies != null ? dependencies.Split(',') : null; //if (userName.IndexOf('\\') < 0) //{ // //userName = "******" + userName; // // //} try { object[] parameters = new object[] { name, // Nombre displayName, // nombre mostrado physicalLocation, // Path Convert.ToInt32(Win32API.ServiceType.OwnProcess), // Tipo de servicio Convert.ToInt32(Win32API.ServiceErrorControl.UserNotified), // Error Control startMode.ToString(), // Modo arranque interactWithDesktop, // interaccion con el escritorio userName, // usuario password, // Password null, // null, // Dependencias dependencies // ServiceDependencies }; return((Win32API.ServiceReturnCode)_wmi.InvokeStaticMethod(machineName, CLASS_NAME, methodName, parameters)); } catch { return(Win32API.ServiceReturnCode.UnknownFailure); } }