BDE,Windows 7和UAC

Sal*_*dor 2 delphi uac bde delphi-5

我有一个用Delphi 5编写的非常旧的应用程序,在一些使用BDE的客户中运行.现在,一些使用Windows Vista和7的用户已经尝试了多用户访问的一些问题.我认为这些问题与net.and .lck文件的位置有关.所以问题是BDE在Windows Vista和7下配置以避免权限和UAC冲突的正确方法是什么?

小智 6

除了上面的答案,您还需要确保.net和.lck文件位于Windows 7下的用户特定目录中,具体为:

C:\Users\{User Name}\AppData\Local\{Your Company Name}\{Your Application Name}
Run Code Online (Sandbox Code Playgroud)

这些是当前用户始终完全控制的唯一文件夹.

您可以使用以下代码获取此文件夹:

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;
Run Code Online (Sandbox Code Playgroud)

然后附加{Your Company Name}{Your Application Name}返回的值.您需要包含ShlObj单元.