![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать автора файла [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