Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как прочитать владельца файла

Delphi , Файловая система , Файлы

Как прочитать владельца файла

Автор: http://www.swissdelphicenter.ch

// When you create a file or directory, you become the owner of it.
// With GetFileOwner you get the owner of a file.

function GetFileOwner(FileName: string;
  var Domain, Username: string): Boolean;
var
  SecDescr: PSecurityDescriptor;
  SizeNeeded, SizeNeeded2: DWORD;
  OwnerSID: PSID;
  OwnerDefault: BOOL;
  OwnerName, DomainName: PChar;
  OwnerType: SID_NAME_USE;
begin
  GetFileOwner := False;
  GetMem(SecDescr, 1024);
  GetMem(OwnerSID, SizeOf(PSID));
  GetMem(OwnerName, 1024);
  GetMem(DomainName, 1024);
  try
    if not GetFileSecurity(PChar(FileName),
      OWNER_SECURITY_INFORMATION,
      SecDescr, 1024, SizeNeeded) then
      Exit;
    if not GetSecurityDescriptorOwner(SecDescr,
      OwnerSID, OwnerDefault) then
      Exit;
    SizeNeeded := 1024;
    SizeNeeded2 := 1024;
    if not LookupAccountSID(nil, OwnerSID, OwnerName,
      SizeNeeded, DomainName, SizeNeeded2, OwnerType) then
      Exit;
    Domain := DomainName;
    Username := OwnerName;
  finally
    FreeMem(SecDescr);
    FreeMem(OwnerName);
    FreeMem(DomainName);
  end;
  GetFileOwner := True;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Domain, Username: string;
begin
  GetFileOwner('YourFile.xyz', domain, username);
  ShowMessage(username + '@' + domain);
end;

// Note: Only works unter NT.

Привет! Вот перевод текста на русский язык:

Это фрагмент кода Delphi, который читает владельца файла с помощью функции Windows API GetFileSecurity. Информация о владельце затем получается с помощью GetSecurityDescriptorOwner и конвертируется в формат, понятный человеку, с помощью LookupAccountSID.

Вот разбивка кода:

  1. Функция GetFileOwner принимает два параметра-строки: FileName (путь к файлу) и две переменные-вывода: Domain и Username. Она возвращает булевое значение, указывающее, была ли операция успешной.
  2. Функция выделяет память для нескольких переменных: SecDescr (указатель на PSecurityDescriptor), OwnerSID (указатель на PSID), OwnerName (буфер строковой переменной типа PChar) и DomainName (еще один буфер строковой переменной типа PChar).
  3. Она использует функцию GetFileSecurity, чтобы получить безопасности описания файла. Если это не удается, она выходит из функции.
  4. Затем она использует GetSecurityDescriptorOwner, чтобы получить SID владельца из безопасности описания. Если это не удается, она выходит из функции.
  5. Функция LookupAccountSID используется для конвертации SID владельца в формат, понятный человеку (то есть, доменное имя и имя пользователя). Если это не удается, она выходит из функции.
  6. Наконец, функция устанавливает переменные-вывода Domain и Username с полученными значениями и возвращает True.

Процедура TForm1.Button1Click демонстрирует, как использовать функцию GetFileOwner, прочитав владельца файла, названного 'YourFile.xyz', и отображая результат в сообщении.

Обратите внимание, что этот код работает только на системах Windows NT-based (Windows XP, Vista, 7 и т.д.) и не на более ранних версиях, таких как Windows 95/98 или Windows Me.

Чтобы использовать этот код, вам нужно:

  1. Создать новый проект Delphi.
  2. Скопировать функцию GetFileOwner и процедуру TForm1.Button1Click в ваш проект.
  3. Заменить 'YourFile.xyz' на реальный путь к файлу, владельца которого вы хотите прочитать.
  4. Скомпилировать и запустить проект.

Когда вы нажмете кнопку, она должна отобразить сообщение с именем пользователя и доменным именем владельца файла.

В статье описывается функция GetFileOwner на языке Delphi, которая позволяет узнать владельца файла и домен, к которому он принадлежит.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Файлы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-10-24 19:58:41/0.0056629180908203/1