Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Копирование прав доступа с одного файла на другой


Автор: JohnJ2 10.3.2013, 18:14
Доброе время суток! Привожу функцию копирования прав доступа с одного файла/папки другому:
Код

function CopyNTFSSecurity3(inFile, outFile: string): Boolean;
var
  psd : PSECURITY_DESCRIPTOR;
  dwSize: DWord;
begin
  Result := False;
  psd := nil;
  if not GetFileSecurity(PChar(inFile), OWNER_SECURITY_INFORMATION + GROUP_SECURITY_INFORMATION + DACL_SECURITY_INFORMATION, Pointer(1),
   0, dwSize) and (GetLastError = ERROR_INSUFFICIENT_BUFFER)
  then
  try
   psd := HeapAlloc(GetProcessHeap, 8, dwSize);
   if psd <> nil then
   begin
     if not (GetFileSecurity(PChar(inFile), OWNER_SECURITY_INFORMATION + GROUP_SECURITY_INFORMATION + DACL_SECURITY_INFORMATION, psd, dwSize, dwSize)) then begin
//       Log.Add('Не удалось получить данные о правах доступа файла...');
       Exit;
     end;
     SetFileSecurity(PChar(outFile), OWNER_SECURITY_INFORMATION + GROUP_SECURITY_INFORMATION + DACL_SECURITY_INFORMATION, psd);
   end;
  finally
   if psd <> nil then HeapFree(GetProcessHeap, 0, psd);
  end;
end;

Функция рабочая. Работает в Win7, WinServer 2003, WinServer2008. Проблема в том, что не работает в WinServer 2012. Прошу знающих помочь исправить это. Или, на худой конец, где прочитать отличие по этой теме в новой винде? Я не нашёл ничего такого.
Во всех виндовсах приложение запускалось с правами администратора. Если понадобится, могу скинуть весь исходник тествой проги на D7

Автор: Akella 11.3.2013, 16:56
Наверное нужно инфу в MSDN поискать

Автор: kami 11.3.2013, 17:06
Цитата(JohnJ2 @  10.3.2013,  18:14 Найти цитируемый пост)
Функция рабочая.

А файл вообще находится этой функцией? Русские букавы в пути и (или) имени файла есть?

Автор: Keeper89 12.3.2013, 00:00
JohnJ2
какие ошибки? Где именно не работает?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)