Pregunta

quiero dar un archivo (ya presente en el equipo cliente .exe) permisos para ejecutar siempre con permisos administrativos.

Por favor, tenga en cuenta que el archivo i quiere dar permisos ya está a la máquina de destino. y quiero cambiar los permisos de ese archivo a través de otro programa escrito en C # y tiene permisos administrativos para hacer todo.

amablemente me hizo saber cómo hacerlo Estoy utilizando el código

        System.Security.AccessControl.FileSecurity fs = File.GetAccessControl(@"c:\inam.exe");
        FileSystemAccessRule fsar = new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Allow);
        fs.AddAccessRule(fsar);
        File.SetAccessControl(@"c:\inam.exe", fs);

este código va a cambiar los permisos correctamente, pero aún cuando ejecuto inam.exe después de ejecutar este código de la UAC no apareció y también el canto inam.exe realizar operaciones administrativas.

De hecho, he desplegado ya una aplicación en más de 10.000 clientes, de modo quiere liberar un parche para resolver el tema de los derechos administrativos.

¿Fue útil?

Solución

Construir un archivo de manifiesto (ver http://www.gregcons.com/KateBlog/AddingAManifestToAVistaApplication .aspx entre otros lugares) y el nombre de Whatever.exe.manifest y ponerlo en la misma carpeta que el archivo ejecutable. El nanifest debe establecer el requestedExecutionLevel a requireAdministrator. Todo listo.

Si es el propietario del otro exe, puede incrustar el manifiesto cuando se genera la misma. Esto es casi trivial en Visual Studio 2008 en adelante. Ver la ficha Aplicación y baja los manifiestos desplegable. Hay instrucciones cercano. También cuando se utiliza VS 2008 para agregar un manifiesto a su proyecto que no tiene que escribir todo el código XML, sólo tienes que copiar el nivel de ejecución pertinente solicitada por los comentarios que se generan para usted.

Otros consejos

Ejecutar con privilegios administrativos no es un permiso de archivo.

Esto generalmente se configura mediante la adición de un manifiesto de archivo (ya sea a los recursos de Win32 en el EXE, o como un manifiesto externa). Este archivo de manifiesto puede indicar si las necesidades de la aplicación Para ejecutar elevados o no.

No estoy del todo seguro de que Windows guarda la "Ejecutar este programa como administrador" ajuste de compatibilidad.

El uso de un archivo de manifiesto es el mejor enfoque, pero una alternativa sería la de establecer mediante programación el "Ejecutar este programa como administrador" bandera (la opción que se encuentra en la pestaña Compatibilidad de las propiedades de un archivo EXE), mediante el establecimiento de un simple clave de registro. Es necesario crear un valor de cadena (REG_SZ) bajo la una de estas teclas (si desea que el ajuste sea por usuario o por máquina, respectivamente):

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows NT \ CurrentVersion \ \ AppCompatFlags Capas

o

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ \ AppCompatFlags Capas

El nombre de las necesidades de valor para ser la ruta completa a sus ejecutables (si la ruta contiene espacios, no la ruta entre comillas), y los datos del valor debe contener el RUNASADMIN cadena.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top