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

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

Кто положил файл? [D6, Win2k, WinXP]


Shurik_212 ©   (2004-01-27 13:12:00) 

На расшаренsй ресурс юзер положил файл. Как узнать какой юзер это сделал?


Бином Ньютоныч   (2004-01-27 18:07:00) [1]

procedure TForm1.Button3Click(Sender: TObject);
var
 pSD: PSecurityDescriptor;
 Sid: PSID;
 s: string;
 Owner, RefDomain: string;
 cbOwner, cbRefDomain,
 cbUse, Res: Cardinal;
begin
 if not OpenDialog1.Execute then exit;
 s:=OpenDialog1.FileName;
 Res:=GetNamedSecurityInfoA(PChar(s), SE_FILE_OBJECT, OWNER_SECURITY_INFORMATION, @SID, nil, nil, nil, Pointer(pSD));
 if Res = ERROR_SUCCESS then
 try
   cbOwner:=1023;
   SetLength(Owner, cbOwner);
   cbRefDomain:=1023;
   SetLength(RefDomain, cbRefDomain);
   if LookupAccountSidA(nil, Sid, PChar(Owner), cbOwner, PChar(RefDomain), cbRefDomain, cbUse) then
   begin
     SetLength(Owner, cbOwner);
     SetLength(RefDomain, cbRefDomain);
     ShowMessage(Owner);
     ShowMessage(RefDomain);
   end
   else
     RaiseLastOSError;
 finally
   LocalFree(Cardinal(pSD));
 end
 else
 begin
   SetLastError(Res);
   RaiseLastOSError;
 end;
end;


Shurik_212   (2004-01-27 17:52:00) [2]

Сенкс, но если можно, поподробнее.


Бином Ньютоныч   (2004-01-27 17:35:00) [3]

Если NTFS, то попробуй через SID владельца. При создании владельцем назначается создатель.


Наверх

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