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