Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать автора файла [D5, NT4]


kserg@ukr.net ©   (2002-11-20 12:54:00) 

Нашел в примере как при помощи API-функции GetFileAttributesEx можно узнать полную инфо файла.
А можно узнать, кто автор файла и кто внес последнее изменение?
спасибо


Marcus   (2002-11-20 18:59:00) [1]

Тады FindFirstStreamW / FindNextStreamW
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/findfirststreamw.asp


kserg@ukr.net   (2002-11-20 18:19:00) [2]

>Я думаю, он имеет в виду поле Автор на вкладке Сводка в win2000
именно это я имел ввиду.


Игорь Шевченко   (2002-11-20 16:21:00) [3]

Marcus (20.11.02 15:11)

А это вроде тоже в NTFS через дополнительный Stream у файла.
Впрочем, без автора вопроса вряд ли что-то можно определенно сказать :-)

С уважением,


Marcus   (2002-11-20 15:11:00) [4]

> Игорь Шевченко

Я думаю, он имеет в виду поле Автор на вкладке Сводка в win2000


Игорь Шевченко   (2002-11-20 15:07:00) [5]

Marcus (20.11.02 15:04)

Там, насколько я знаю, есть только понятие владельца. Понятие автора там отсутствует как класс. И вообще, владелец - это понятие только в NT(W2K, XP) и на NTFS, а в потребительских версиях windows и на FAT оно отсутствует.


Marcus   (2002-11-20 15:04:00) [6]

> Игорь Шевченко

Наврено Ketmar имеет в виду, что в ОС сем-ва НТ можно, имея администраторские права, стать владелцем объекта (закладка Св-ва->Безопасность), не будучи автором


Игорь Шевченко   (2002-11-20 14:47:00) [7]

Ketmar © (20.11.02 14:27)

Как это ?


Ketmar   (2002-11-20 14:27:00) [8]

а это не владелец часом? что-то мне кажется, что владелец. каковой от автора может очень сильно отличаться.

Satanas Nobiscum! 20-Nov-XXXVII A.S.


Игорь Шевченко   (2002-11-20 13:30:00) [9]

Автор файла:
unit main;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

type
ZString = array[0..1024] of char;

procedure TForm1.Button1Click(Sender: TObject);
var
SecInfo : SECURITY_INFORMATION;
SecDesc : PSECURITY_DESCRIPTOR;
BytesNeeded, Dummy : DWORD;
pSID : Pointer;
Defaulted : LongBool;
DomainName : ZString;
DomainNameLength : DWORD;
Name : ZString;
NameLength : DWORD;
Use : SID_NAME_USE;
User, Domain : String;
begin
SecInfo := OWNER_SECURITY_INFORMATION;
GetFileSecurity("FileSecurity.exe", SecInfo, nil, 0, BytesNeeded);
GetMem(SecDesc, BytesNeeded);
try
if NOT GetFileSecurity("FileSecurity.exe", SecInfo, SecDesc, BytesNeeded, Dummy) then
RaiseLastWin32Error;
if NOT GetSecurityDescriptorOwner(SecDesc, pSID, Defaulted) then
RaiseLastWin32Error;
if NOT LookupAccountSid(nil, pSID, Name, NameLength, DomainName, DomainNameLength, Use) then
RaiseLastWin32Error;
User := String(Name);
Domain := String(DomainName);
ShowMessageFmt("User = %s domain = %s", [User, Domain]);
finally
FreeMem(SecDesc);
end;
end;

end.


Время последнего изменения - GetFileTime


Наверх

Титульная страница Поиск, карта сайта Написать письмо