Cómo permitir para permitir a los administradores editar archivos de configuración de mi aplicación sin elevación UAC?

StackOverflow https://stackoverflow.com/questions/2444265

Pregunta

Mi compañía produce una aplicación de servidor multi-plataforma que carga su configuración desde archivos de configuración editables por el usuario. En Windows, las ACL de archivos de configuración están bloqueados por nuestro programa de configuración para permitir la lectura por todos los usuarios, pero restringir la edición de Administradores y sólo sistema local.

Por desgracia, en Windows Server 2008, los administradores incluso locales ya no tienen privilegios de administrador (a causa de UAC) a menos que se está ejecutando una aplicación elevada. Esto ha provocado quejas de los usuarios que no pueden utilizar su editor de texto favorito para abrir y guardar archivos de configuración changes-- que puedan abrir los archivos (ya que cualquiera puede leer) pero no pueden ahorrar.

Alguien tiene recomendaciones para lo que podemos hacer (si acaso) en la configuración de nuestra aplicación para facilitar la edición para los administradores de Windows Server 2008?

preguntas relacionadas: si un administrador de Windows Server 2008 quiere editar un archivo de configuración sólo para los administradores, ¿cómo lo hace normalmente? Está obligado a usar un editor de texto que es lo suficientemente inteligente como para auto-Elevate cuando se necesita elevación, como el Explorador de Windows lo hace en respuesta a errores de acceso denegado? ¿Se lanzará el editor de una ventana del símbolo del sistema con privilegios elevados? Algo más?

¿Fue útil?

Solución

En mi opinión un administrador que no logra hacer clic derecho en el bloc de notas y seleccione "Ejecutar como administrador" no debe ser un administrador, pero bueno ... en la vida real no son tales administradores alrededor.

UAC funciona desactivando el grupo de administradores SID del token de seguridad del usuario, hasta que se ejecuta un programa con privilegios elevados. Cuando se ejecuta en modo de no elevada desafortunadamente no hay manera de utilizar los derechos administrativos.

Una solución, que desafortunadamente requiere una cantidad no trivial de trabajo podría ser:

  • Crear un sufijo de nombre de archivo personalizado para su archivo de configuración.
  • Crea una pequeña aplicación que se coloca como el controlador para que el archivo de configuración.
  • Marque la pequeña aplicación que requiere privilegios elevados (se puede hacer esto como que está creando una nueva aplicación).

Lo único que la pequeña aplicación debe hacer es localizar el controlador registrado para archivo .txt en el registro y luego usarlo para abrir el archivo. - con privilegios elevados

Otros consejos

Esto no es complicado para los administradores que se precie. Abrir el editor de texto elevado, archivo abierto, guardar, hecho. La mayoría de las personas que editar archivos de configuración se utilizan para el ritual ahora. Unix personas hacen esto por reflejo (con sudo); es sólo difícil en Windows porque sigue siendo territorio poco familiar para algunos usuarios.

Siendo realistas, tendrían el mismo problema si se tratara de un ajuste del registro HKLM, excepto que tendrían que elevar regedit o Powershell o lo que normalmente se utilizan para editar la configuración del registro.

Si no pueden entenderlo, podrían optar por desactivar UAC en su totalidad, o convertirlo en una categoría o dos, pero sospecho que si no pueden encontrar la manera de abrir un editor elevada esto creará más problemas que se va a resolver.

debe tiene que pensar antes de hacer grandes cambios a los archivos de configuración de todo el sistema. La elevación de UAC es sólo pensar lo suficiente que debería darle pausa si no tenía intención de hacer un cambio de todo el sistema.

Si no fuera un servicio, puede utilizar% USERPROFILE% para almacenar los ajustes de configuración, pero en general, los servicios se ejecutan bajo una credencial de usuario diferente a la normal de la cuenta del administrador de sistemas.

aplicaciones Dotnet podrían optar por almacenar la información en la carpeta devuelta por Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData); personas pueden necesitar elevación a escribir en esa carpeta fuera de su servicio, pero si no les gusta el administrador de interfaz de usuario y lo hacen como su editor de texto, es el mismo que el problema original:. que sólo tiene que aprender a utilizar UAC

Para la segunda pregunta: ¿una solución rápida agrego bloc de notas para las ventanas barra de acceso directo, haga clic derecho, ejecutar como administrador, abra el archivo, realice los cambios y guardarlo

.

Nos cambiamos todo nuestro entorno aplicación a la base de datos. Ver mi blog aquí. se puede ver fácilmente cómo se puede crear una página web para editar eso y tener todos los permisos de vivir en la aplicación web.

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