BDE, Windows 7 и UAC - PullRequest
       47

BDE, Windows 7 и UAC

2 голосов
/ 22 марта 2011

У меня есть очень старое приложение, написанное на Delphi 5, которое работает на некоторых клиентах и ​​использует BDE. Теперь некоторые пользователи, имеющие Windows Vista и 7, экспериментировали с некоторыми проблемами с многопользовательским доступом. Я думаю, что эти проблемы связаны с расположением файлов net .and .lck. поэтому вопрос в том, как правильно настроить BDE в Windows Vista и 7, чтобы избежать разрешений и конфликтов UAC? ​​

Ответы [ 3 ]

6 голосов
/ 22 марта 2011

В дополнение к ответу, приведенному выше, вы должны убедиться, что файлы .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} и {Your Application Name} к возвращенному значению. Вам нужно будет включить блок ShlObj.

4 голосов
/ 22 марта 2011

Одна такая вещь, которую я помню, это настроить Session так, чтобы файлы такого типа помещались в папки, где у обычного пользователя есть права на запись.

Из того, что я помню, свойства

Session.PrivateDir
Session.NetFileDir

являются соответствующими.

Правильное расположение будет зависеть от одновременного доступа, базы данных, к которой вы подключаетесь, расположения данных - в случае парадокса или dbf - и от того, используете ли вы кэшированные обновления или нет.

Я поддерживаю приложение, изначально написанное на D4, теперь скомпилированное с D2007, когда это редко требуется, и оно хорошо работает на vista +, используя его с его конкретной конфигурацией и потребностями (без paradox / dbf's).

0 голосов
/ 12 июля 2011

Если вы не хотите обходить ошибки безопасности при установке BDE по умолчанию (как упоминалось в других ответах - предоставление разрешений, о которых забыл установщик BDE), вы можете просто запустить свое приложение как администратор .

У вас есть несколько вариантов:

  1. Скажите пользователю щелкнуть правой кнопкой мыши и выбрать Run As Administrator каждый раз.
  2. Перейдите на вкладку Совместимость программы иотметьте Run this program as an administrator (который имеет тот же эффект, что и 1)
  3. Перейдите на вкладку «Совместимость» программы и Run this program in compatibility mode для Windows XP (который имеет тот же эффект, что и 2)
  4. Создатьманифест MyApp.exe.manifest и включает requestedExecutionLevel из requireAdministrator (который имеет тот же эффект, что и 3)

Другими словами: Ваше приложение в его нынешнем виде требует административного доступа кзапустить - так что просто запустите его как администратор.

С другой стороны, вы можете сделать несколько простых изменений , и ваше приложение больше не будет работать какадминистратор;ты сделал мир лучшим местом для всего человечества!

...