Una vez que mi programa está instalado en una máquina cliente, ¿cómo forzo a mi programa a ejecutarse como administrador en Windows 7?
876
Una vez que mi programa está instalado en una máquina cliente, ¿cómo forzo a mi programa a ejecutarse como administrador en Windows 7?
Respuestas:
Querrá modificar el manifiesto que se incrusta en el programa. Esto funciona en Visual Studio 2008 y versiones posteriores: Proyecto + Agregar nuevo elemento, seleccione "Archivo de manifiesto de la aplicación". Cambia el
<requestedExecutionLevel>
elemento a:El usuario recibe el aviso de UAC cuando inicia el programa. Use sabiamente; Su paciencia puede agotarse rápidamente.
fuente
Agregar un
requestedExecutionLevel
elemento a tu manifiesto es solo la mitad de la batalla; debes recordar que UAC se puede apagar. Si es así, debe realizar la verificación a la manera de la vieja escuela y colocar un cuadro de diálogo de error si el usuario no es administrador(llame
IsInRole(WindowsBuiltInRole.Administrator)
a su hiloCurrentPrincipal
).fuente
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
asíIsInRole
habla Anders.Los pasos detallados son los siguientes.
Tenga en cuenta que con este código debe desactivar la configuración de seguridad de ClickOnce, para ello, vaya a Propiedades -> Seguridad -> Seguridad de ClickOnce
fuente
New Item...
no es una opción en mi proyecto de Servicio de instalación. ¿Cómo haría para agregar el manifiesto de la aplicación? Puedo agregarlo a mi proyecto principal pero no es su instalador.Implementé un código para hacerlo manualmente:
fuente
Puede incrustar un archivo de manifiesto en el archivo EXE, lo que hará que Windows (7 o superior) siempre ejecute el programa como administrador.
Puede encontrar más detalles en el Paso 6: Crear e incrustar un manifiesto de aplicación (UAC) (MSDN).
fuente
Mientras trabaja en Visual Studio 2008, haga clic derecho
Project -> Add New Item
y luego elijaApplication Manifest File
.En el archivo de manifiesto, encontrará la etiqueta
requestedExecutionLevel
y puede establecer el nivel en tres valores:<requestedExecutionLevel level="asInvoker" uiAccess="false" />
O
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
O
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
Para configurar su aplicación para que se ejecute como administrador, debe elegir la del medio.
fuente
Según
querrá agregar un manifiesto de aplicación si aún no tiene uno o no sabe cómo agregar uno. Como algunos proyectos no agregan automáticamente un archivo de manifiesto por separado, primero vaya a las propiedades del proyecto, vaya a la pestaña Aplicación y verifique que su proyecto no excluya el manifiesto en la parte inferior del grifo.
fuente
En Visual Studio 2010, haga clic derecho en el nombre de su proyecto. Presione "Ver configuración de Windows", esto genera y abre un archivo llamado "app.manifest". Dentro de este archivo, reemplace "asInvoker" con "requireAdministrator" como se explica en las secciones comentadas dentro del archivo.
fuente
Otra forma de hacerlo, solo en código, es detectar si el proceso se está ejecutando como administrador, como en la respuesta de @NG.. Y luego abra la aplicación nuevamente y cierre la actual.
Uso este código cuando una aplicación solo necesita privilegios de administrador cuando se ejecuta bajo ciertas condiciones, como cuando se instala como un servicio. Por lo tanto, no es necesario que se ejecute como administrador todo el tiempo, ya que las otras respuestas también lo fuerzan.
Nota en el siguiente código
NeedsToRunAsAdmin
es un método que detecta si bajo las condiciones actuales se requieren privilegios de administrador. Si esto devuelvefalse
el código no se elevará solo. Esta es una gran ventaja de este enfoque sobre los demás.Aunque este código tiene las ventajas indicadas anteriormente, debe reiniciarse como un nuevo proceso que no siempre es lo que desea.
fuente
runas
como administrador de un usuario que no sea administrador, de lo contrario, se abrirá en silencio con los permisos de usuario actuales (marcado en Windows 7 de 64 bits). Por lo que puedo decir, lo único que puede hacer con UAC deshabilitado y falta el derecho de administrador es detener la ejecución en el momento adecuado.Puede crear el manifiesto utilizando la Configuración de seguridad de ClickOnce y luego deshabilitarlo:
Después de hacer clic en él, se creará un archivo en la carpeta de propiedades del proyecto llamado app.manifest una vez que se haya creado, puede desmarcar
Enable ClickOnce Security Settings
opciónAbra ese archivo y cambie esta línea:
a:
Esto hará que el programa requiera privilegios de administrador.
fuente
Esta es una versión simplificada de la respuesta this , anterior por @NG
fuente
Haga clic derecho en su ejecutable, vaya a Propiedades> Compatibilidad y marque la casilla 'Ejecutar este programa como administrador'.
Si desea ejecutarlo como administrador para todos los usuarios, haga lo mismo en 'cambiar la configuración para todos los usuarios'.
fuente