es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible utilizar Cake para instalar una aplicación y ejecutarla como un usuario específico en Windows. Esto se puede lograr utilizando la impersonación, donde el script de Cake asume temporalmente la identidad del usuario que luego ejecutará la aplicación.

    Para implementar la impersonación en Cake, puedes usar la clase ManagedWindowsImpersonationContext del paquete Cake.Security.Windows. Esta clase proporciona una forma de crear una nueva instancia de la clase WindowsImpersonationContext, que se puede utilizar para ejecutar código bajo el contexto de seguridad de un usuario específico.

    Aquí tienes un ejemplo de script de Cake que demuestra cómo utilizar la impersonación para instalar una aplicación y ejecutarla como un usuario específico:

    #addin nuget:?package=Cake.CoreCLR
    #addin nuget:?package=Cake.Security.Windows
    
    var username = "dominio\\nombredeusuario";
    var password = "contraseña";
    
    Task("Instalar-Aplicacion")
        .Does(() =>
    {
        // Crear un nuevo contexto de impersonación con el nombre de usuario y contraseña especificados
        using (var context = new ManagedWindowsImpersonationContext(username, password))
        {
            // Instalar la aplicación bajo el contexto de seguridad del usuario impersonado
            Process.Start(new ProcessStartInfo
            {
                FileName = "instalador.exe",
                Arguments = "/quiet",
                WorkingDirectory = "./app",
                UseShellExecute = false,
                RedirectStandardOutput = true,
                Verb = "runas", // Esto asegura que el instalador se ejecute con privilegios elevados
                UserName = username,
                Password = new System.Security.SecureString().AppendChars(password.ToCharArray())
            }).WaitForExit();
    
            // Ejecutar la aplicación instalada bajo el contexto de seguridad del usuario impersonado
            Process.Start(new ProcessStartInfo
            {
                FileName = "./app/aplicacion.exe",
                WorkingDirectory = "./app",
                UseShellExecute = false,
                RedirectStandardOutput = true,
                UserName = username,
                Password = new System.Security.SecureString().AppendChars(password.ToCharArray())
            }).WaitForExit();
        }
    });
    
    RunTarget("Instalar-Aplicacion");
    

    En este ejemplo, se utiliza la clase ManagedWindowsImpersonationContext para crear un nuevo contexto de impersonación con el nombre de usuario y contraseña especificados. A continuación, se utiliza el método Process.Start para lanzar el instalador y la aplicación instalada bajo el contexto de seguridad del usuario impersonado, pasando las propiedades UserName y Password al objeto ProcessStartInfo. El método WaitForExit se utiliza para esperar a que los procesos se completen.

    Ten en cuenta que para que la impersonación funcione correctamente, la cuenta de usuario utilizada para ejecutar el script de Cake debe tener los permisos adecuados en el sistema local y los archivos de la aplicación también deben tener los permisos adecuados configurados.

Comments are closed.