2

Delphi 5 で書かれた非常に古いアプリケーションを、BDE を使用する一部の顧客で実行しています。現在、Windows Vista および 7 を使用している一部のユーザーは、マルチユーザー アクセスに関するいくつかの問題を実験していました。これらの問題は、net.and.lckファイルの場所に関連していると思います。BDE問題は、権限と UAC の競合を回避するために、Windows Vista および 7 でを構成する適切な方法はどれかということです。

4

3 に答える 3

6

上記の回答に加えて、.net および .lck ファイルが Windows 7 のユーザー固有のディレクトリ、具体的には次の場所にあることを確認する必要があります。

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}andを追加します。{Your Application Name}ShlObj ユニットを含める必要があります。

于 2011-03-21T22:31:18.907 に答える
0

BDE のデフォルト インストールのセキュリティ バグを回避したくない場合 (他の回答で言及されているように、BDE インストーラーが忘れていたアクセス許可を付与する)、アプリケーションを管理者として実行するだけです。

いくつかのオプションがあります:

  1. Run As Administrator毎回右クリックして選択するようにユーザーに指示します。
  2. プログラムの [互換性] タブに移動し、チェックしますRun this program as an administrator(1 と同じ効果があります) 。
  3. プログラムの [互換性] タブに移動し、Run this program in compatibility modefor Windows XP(2 と同じ効果があります)
  4. マニフェストを作成し、 ofMyApp.exe.manifestを含めます(これは 3 と同じ効果があります)requestedExecutionLevelrequireAdministrator

言い換えれば、あなたのアプリケーションは、現状では、実行するために管理者アクセスを必要とするため、管理者として実行してください。

一方、いくつかの簡単な変更を加えれば、アプリケーションを管理者として実行する必要がなくなります。あなたは世界を全人類にとってより良い場所にしました!

于 2011-07-12T18:23:41.257 に答える