示例#1
0
        /// <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;
        }
示例#2
0
        /// <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;
            }
        }