/// <summary> /// Gets The System LUID Value for The Specified Privilege /// </summary> /// <param name="privilege">Specified Privilege</param> /// <returns>Associated LUID Value</returns> public static Win32API.LUID GetLUIDFromPrivilageName(Win32API.Privilege privilege) { Win32API.LUID _LUID = new Win32API.LUID(); if (Win32API.LookupPrivilegeValue(String.Empty, privilege.ToString(), out _LUID) == false) { Console.WriteLine("## ERROR ## - Problem Resolving Privilage '{0}' To Its LUID!\nWin32 Error: '{1}'", privilege, Marshal.GetLastWin32Error()); return new Win32API.LUID(); } return _LUID; }
/// <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; } }