Pregunta

Tengo una aplicación muy antigua escrita en Delphi 5 que se ejecuta en algunos clientes que usa el BDE. Ahora algunos usuarios con Windows Vista y 7, habían experimentado algunos problemas con el acceso multiusuario. Creo que estos problemas están relacionados con la ubicación del net.y .lck archivos. Entonces, la pregunta es cuál es la forma correcta de confiar el BDE ¿En Windows Vista y 7 para evitar permisos y conflictos de UAC?

¿Fue útil?

Solución

Además de la respuesta anterior, querrá asegurarse de que los archivos .NET y .LCK se encuentren en un directorio específico del usuario en Windows 7, específicamente:

C:\Users\{User Name}\AppData\Local\{Your Company Name}\{Your Application Name}

Esas son las únicas carpetas sobre las que el usuario actual siempre tendrá un control completo.

Puede obtener esta carpeta usando este código:

CSIDL_LOCAL_APPDATA = $001C;

function GetAppDataDirectory: AnsiString;
var
   TempBuffer: array[0..MAX_PATH] of AnsiChar;
   ResultLength: Integer;
begin
   FillChar(TempBuffer,((MAX_PATH+1)*SizeOf(AnsiChar)),0);
   ShlObj.SHGetSpecialFolderPathA(0,@TempBuffer,CSIDL_LOCAL_APPDATA,False);
   ResultLength:=StrLen(pAnsiChar(@TempBuffer));
   SetLength(Result,ResultLength);
   Move(TempBuffer[0],pAnsiChar(Result)^,(ResultLength*SizeOf(AnsiChar)));
end;

y luego agregar {Your Company Name} y {Your Application Name} al valor devuelto. Deberá incluir la unidad Shlobj.

Otros consejos

Una de esas cosas que recuerdo es configurar la sesión para poner ese tipo de archivos en las carpetas donde un usuario normal tiene privilegios de escritura.

Por lo que recuerdo, las propiedades

Session.PrivateDir
Session.NetFileDir

Son los relevantes.

La ubicación correcta dependerá del acceso concurrente, la base de datos a la que se está conectando, la ubicación de los datos, en caso de paradoja o DBF's, y si usa actualizaciones en caché o no.

Mantengo una aplicación escrita originalmente en D4, ahora compilada con D2007 cuando rara vez se necesita y funciona bien en Vista+ usando esto con su configuración y necesidades particulares (sin paradoja/DBF).

Si no desea trabajar con los errores de seguridad en una instalación predeterminada del BDE (como se mencionan otras respuestas: otorgar permisos que el instalador de BDE olvidó), puede ejecutar su aplicación como un administrador.

Tienes pocas opciones:

  1. Dígale al usuario que haga clic con el botón derecho y seleccione Run As Administrator cada vez.
  2. Vaya a la pestaña de compatibilidad del programa y verifique Run this program as an administrator (que tiene el mismo efecto que 1)
  3. Vaya a la pestaña de compatibilidad del programa y Run this program in compatibility mode por Windows XP (que tiene el mismo efecto que 2)
  4. Crear un manifiesto MyApp.exe.manifest e incluir el requestedExecutionLevel de requireAdministrator (que tiene el mismo efecto que 3)

En otras palabras: su aplicación, tal como está ahora, requiere acceso administrativo a la ejecución, así que simplemente ejecutarla como administrador.

Por otro lado puedes hacer un Pocos cambios simples y tu aplicación lo hará no más Necesita ejecutar como administrador; ¡Has hecho del mundo un lugar mejor para toda la humanidad!

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