首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BDE、Windows 7和UAC

BDE、Windows 7和UAC
EN

Stack Overflow用户
提问于 2011-03-22 05:32:50
回答 3查看 5.5K关注 0票数 2

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-22 06:31:19

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

代码语言:javascript
复制
C:\Users\{User Name}\AppData\Local\{Your Company Name}\{Your Application Name}

这些文件夹是当前用户将始终拥有完全控制权限的唯一文件夹。

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

代码语言:javascript
复制
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单元。

票数 6
EN

Stack Overflow用户

发布于 2011-03-22 05:47:18

我记得的其中一件事是配置会话,将这种类型的文件放在普通用户具有写权限的文件夹中。

据我所知,这些属性

代码语言:javascript
复制
Session.PrivateDir
Session.NetFileDir

都是相关的。

正确的位置将取决于并发访问,您连接的数据库,数据位置-in paradox或dbf的情况-以及您是否使用缓存的更新。

我维护了一个最初用D4编写的应用程序,现在在很少需要的时候用D2007编译,它在vista+上工作得很好,使用它的特殊配置和需求(没有矛盾/dbf)。

票数 4
EN

Stack Overflow用户

发布于 2011-07-13 02:23:41

如果您不想绕过BDE缺省安装中的安全bug(正如其他答案提到的那样--授予BDE安装程序忘记的权限),那么您可以将应用程序作为administrator.运行

您有几个选项:

  1. 每次都告诉用户右键单击并选择Run As Administrator
  2. 转到程序的兼容性选项卡,选中Run this program as an administrator (效果与1相同)
  3. 转到程序的兼容性选项卡,然后为<代码>D11(效果与2)创建清单<代码>D14,并包括<代码>D16(效果与3)<代码>H217<代码>G218的Run this program in compatibility mode

换句话说:您的应用程序现在需要管理访问权限才能运行-所以只需以管理员身份运行它即可。

另一方面,您可以进行一些简单的更改,您的应用程序将不再需要以管理员身份运行;您已经为全人类创造了一个更美好的世界!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5384006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档