2010-02-08 10 views
7

Tengo un problema con UAC de Windows, tareas programadas y un ejecutable llamado "dbupdate.exe". Tengo plena potencia sobre el código fuente, manifiestos, etc., pero no sobre los sistemas del usuario (abreviado: ingeniero de software normal ;-). El lenguaje es Delphi, pero no debería ser importante, creo.Nombre exe como update.exe bloqueado por UAC en la tarea programada

Tengo un problema al usar una aplicación en el programador de tareas en Windows Vista y Windows 7. El programa se llama dbUpdate.exe. Ha construido un manifiesto xp/vista, que configura que el programa debe iniciarse como "inInvoker".

Ahora, en Vista y Windows 7 puedo iniciar el programa sin ningún problema, pero tengo que iniciar sesión en el sistema. Si no estoy conectado, el programa no se ejecuta (utilizo el programador de tareas de Windows, pero sé que el problema existe con otros programas de programación también). Pero: si cambio el nombre del programa a "dbBlaBla.exe", se ejecuta. Me lleva al grano, que la detección del instalador de UAC está pensando que mi programa es un instalador (que no lo es, pero sé que analiza los nombres de los archivos, como la actualización, la configuración, etc.).

He buscado en la web, no pude encontrar muchas cosas útiles. Entonces pregunto aquí

¿Tengo que crear un manifiesto especial para poder ejecutarlo en un trabajo programado? ¿O hay una forma de deshabilitar UAC para trabajos programados o solo para mis ejecutables? O es que realmente tengo que elegir otro nombre (entonces que iba a funcionar, como se mencionó antes) y tomar el riesgo de que los clientes y mis colegas no están muy satisfechos con esto? $

Gracias por cualquier ayuda, saludos

+0

Los clientes y sus colegas estarían muy insatisfechos si lo nombra updatedb.exe o upd_task.exe? Suena más como si solo debiera renombrarlo, anótelo para descubrir cuándo tiene tiempo (una pregunta SO es buena para eso ...: P), y pase a problemas importantes. (Así que estás a mitad de camino). –

+0

Bueno, el punto con "pasar a problemas importantes" suena bien ;-) pero lamentablemente es un hecho que la palabra "actualización" es muy común en nuestra compañía y tiene sentido para las cosas programa lo hace. Gracias por su respuesta – warheart

Respuesta

6

En Windows 7, un programa llamado "update.exe" aparentemente exige privilegios. Aparentemente es el nombre , y es solo una de esas tontas cosas de Microsoft. Al cambiarle el nombre a "anythingUpdate.exe" se activará la violación mágica; "UpdateAnything.exe" también!

Así que renombré el mío como up7.exe y ahora Microsoft está tranquilo y no es presuntuoso. Lo mismo parece suceder en Vista.

Así que "updatedb.exe" no funcionará; "Upd_task.exe" sería ...

+1

llamada [Detección de instalador] (http://msdn.microsoft.com/en-us/library/windows/desktop/bb756960.aspx) comprueba si el nombre de archivo _contiene palabras clave como "instalar", "configuración , "actualización", etc. (lamentablemente ni siquiera especifican todas las palabras clave). Pero 'requestedExecutionLevel' mencionado por @warheart debe anular la detección del instalador. – marcin

+0

Mis programas de actualización ahora se llaman * upda1e.exe. También creo que es bastante estúpido detectar las características basadas en el nombre, me pregunto quién vino con esa idea ... – nulleight

1

De http://social.msdn.microsoft.com/Forums/en-US/windowscompatibility/thread/1b316a7f-852e-4a71-89d3-090e45990f98

El Control de cuentas de usuario: detectar instalaciones de aplicaciones y pedir confirmación de elevación debe estar habilitado para la detección de instalación para detectar programas de instalación. Esta configuración está habilitada de manera predeterminada y puede configurarse con el complemento Administrador de políticas de seguridad (secpol.msc) o con la Política de grupo (gpedit.msc).

+0

Puede encontrar la configuración ejecutando 'secpol.msc', luego vaya a Políticas locales → Opciones de seguridad. –

Cuestiones relacionadas