function GetFileOwner(FileName: string):fileid;
var
SecDescr: PSecurityDescriptor;
SizeNeeded, SizeNeeded2: DWORD;
OwnerSID: PSID;
OwnerDefault: longbool;
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;
result.domain_Owner := DomainName;
result.user_Owner := OwnerName;
finally
FreeMem(SecDescr);
FreeMem(OwnerName);
FreeMem(DomainName);
end;
//GetFileOwner := True;
end;
Контроль подключения к ресурсам компьютера
Дополнительные ограничения - Винды 2000-ХР, нет стандартного шела. Ограничения настраиваются через отдельную прогу и не действуют если механизм контроля не запущен.
Куда копать пока не знаю, но начинаю, так как задача возникла прямо сейчас, буду признателен за любую информацию и предложения (ссылки на исходники желательны но не обязательны)...
Заранее спасибо...
http://msdn.microsoft.com/en-us/library/aa380543(VS.85).aspx
возможно также пригодятся эти API - http://msdn.microsoft.com/en-us/library/bb525393(VS.85).aspx
насчет сетевого входа не знаю, но вот есть такая штука -
возможно также пригодятся эти API - http://msdn.microsoft.com/en-us/library/bb525393(VS.85).aspx
Настройте права доступа на шару и все.
http://msdn.microsoft.com/en-us/library/aa380543(VS.85).aspx[/QUOTE] я уже использую это в проекте, и это касаемо "локального" входа. Помница когда начинал эксперименты лет цать назад даже "потерял" комп, пришлось все переустанавливать :)
[QUOTE=bagie2]возможно также пригодятся эти API - http://msdn.microsoft.com/en-us/library/bb525393(VS.85).aspx[/QUOTE] А вот это уже интересней, сейчас посмотрю. Спасибо...
[QUOTE=Phodopus]Настройте права доступа на шару и все.[/QUOTE] Если делать это программно то это выход видимо я вчера как то тормазнул, хотя изучал этот процесс, но только сегодня понял почему он меня интересовал. Спасибо...
[QUOTE=bagie2]насчет сетевого входа не знаю, но вот есть такая штука -
[QUOTE=bagie2]возможно также пригодятся эти API - http://msdn.microsoft.com/en-us/library/bb525393(VS.85).aspx[/QUOTE] А вот это уже интересней, сейчас посмотрю. Спасибо...
[QUOTE=Phodopus]Настройте права доступа на шару и все.[/QUOTE] Если делать это программно то это выход видимо я вчера как то тормазнул, хотя изучал этот процесс, но только сегодня понял почему он меня интересовал. Спасибо...
Цитата:
однако 100% определить через netapi32 нельзя... мало того, если на ресурсе шарится несколько пользователей с одинаковыми именами, то идентифицировать кто-какой файл через NetFileEnumNT нереально, т.к. FileInfoNT просто не содержит такой информации (FileInfoNT^.fi3_username - имя, но не IP, а IP содержится в SessionInfo502^.sesi502_cname которая относится к NetSessionEnumNT) (...с этим столкнулся при разработке своего NETAPI детектора подключений)
...
правда есть в этих функциях и плюс, можно регистрировать посылку документов на печать кто-что (если подкл.принтер к этой машине)
для определения владельца файла:
Код:
...прилагаю статью и утилиту (см. ниже)