我有一个用Delphi5编写的非常老的应用程序,在一些使用BDE的客户中运行。现在,一些使用Windows Vista和Windows 7的用户已经体验到了多用户访问的一些问题。我认为这些问题与net.and .lck文件的位置有关。所以问题是,在Windows Vista和7下混淆BDE的正确方法是避免权限和UAC冲突?
发布于 2011-03-22 06:31:19
除了上面的答案之外,您还需要确保.net和.lck文件位于Windows7下特定于用户的目录中,具体如下:
C:\Users\{User Name}\AppData\Local\{Your Company Name}\{Your Application Name}这些文件夹是当前用户将始终拥有完全控制权限的唯一文件夹。
您可以使用以下代码获取此文件夹:
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;然后将{Your Company Name}和{Your Application Name}附加到返回值。您需要包括ShlObj单元。
发布于 2011-03-22 05:47:18
我记得的其中一件事是配置会话,将这种类型的文件放在普通用户具有写权限的文件夹中。
据我所知,这些属性
Session.PrivateDir
Session.NetFileDir都是相关的。
正确的位置将取决于并发访问,您连接的数据库,数据位置-in paradox或dbf的情况-以及您是否使用缓存的更新。
我维护了一个最初用D4编写的应用程序,现在在很少需要的时候用D2007编译,它在vista+上工作得很好,使用它的特殊配置和需求(没有矛盾/dbf)。
发布于 2011-07-13 02:23:41
如果您不想绕过BDE缺省安装中的安全bug(正如其他答案提到的那样--授予BDE安装程序忘记的权限),那么您可以将应用程序作为administrator.运行
您有几个选项:
Run As Administrator。Run this program as an administrator (效果与1相同)Run this program in compatibility mode换句话说:您的应用程序现在需要管理访问权限才能运行-所以只需以管理员身份运行它即可。
另一方面,您可以进行一些简单的更改,您的应用程序将不再需要以管理员身份运行;您已经为全人类创造了一个更美好的世界!
https://stackoverflow.com/questions/5384006
复制相似问题