c# - ejecutar - Averiguar si una aplicación necesita privilegios de administrador
ejecutar.exe como administrador c# (1)
En realidad, solo hay una forma de decirle a Windows que un programa necesita ser elevado y eso es a través del archivo de manifiesto. Los archivos de manifiesto pueden estar incrustados dentro de un ensamblado (exe / dll) o pueden vivir en un archivo separado denominado <YOUR_APP>.exe.manifest
. Esa es realmente la única forma y, probablemente, la única forma en que puede verificar con seguridad. Oficialmente.
Windows también contiene una base de datos gigante que se usa para la compatibilidad de aplicaciones. Si Microsoft ha probado una aplicación y ha descubierto que se rompe cuando ocurre una actualización del sistema operativo, a veces crean una entrada en la base de datos para esencialmente piratear la aplicación. A veces mienten sobre la versión actual del sistema operativo, a veces se ejecutan automáticamente como administrador, a veces hacen muchas otras cosas. Puede ver la base de datos usando Application Compatibility Toolkit . No sé si hay una forma oficial de consultar la base de datos a través del código. Esta entrada del blog habla de una herramienta que creó el blogger pero que aparentemente nunca publicará.
El último mecanismo de elevación automático es un algoritmo que intenta determinar si esa aplicación es un instalador. De acuerdo con MSDN, estos atributos se verifican:
- El nombre de archivo incluye palabras clave como "instalar", "configurar", "actualizar", etc.
- Palabras clave en los siguientes recursos de control de versiones: proveedor, nombre de la empresa, nombre del producto, descripción del archivo, nombre de archivo original, nombre interno y nombre de exportación.
- Palabras clave en el manifiesto lado a lado incrustado en el ejecutable.
- Palabras clave en entradas específicas de StringTable vinculadas en el ejecutable.
- Atributos clave en los datos de RC vinculados en el ejecutable.
- Secuencias de bytes dirigidas dentro del ejecutable.
Las palabras clave y las secuencias de bytes se derivaron de características comunes observadas a partir de diversas tecnologías de instalador.
Por último, una aplicación puede ejecutarse como un usuario normal pero generar un proceso secundario que requiere privilegios elevados . No sé si realmente hay alguna manera de detectar eso sin descompilar la aplicación.
Windows 7 usa un mecanismo automático para detectar si una aplicación necesita privilegios de administrador elevados. O la aplicación en sí tiene un manifiesto.
¿Hay alguna manera de averiguar programáticamente si una aplicación específica necesita privilegios de administrador elevados o no? No quiero comenzar a descubrirlo.
Gracias ;).