информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Где водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] Спосибо, а нащёт собаки это верно подмечено 15.08.02 15:52  Число просмотров: 952
Автор: Tamas Статус: Member
<"чистая" ссылка>
<programming>
[C++] как получить имя владельца файла в NT ??? 14.08.02 17:01  
Автор: Tamas Статус: Member
<"чистая" ссылка>
как получить имя владельца файла в NT
имеется в виду средствыми winapi
Вот кусок кода, но на Delphi, наверное разберёшься ;-) 14.08.02 20:50  
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка>

procedure TForm1.Button1Click(Sender: TObject);
  Function GetAccountBySID(ServerName: String; aSID: PSID; Var RefDomain: String; Var AccType: DWORD): String;
  Var
    nSize, dSize, pUse: DWORD;
    aName, dName: PChar;
  Begin
    If Not IsValidSID(aSID) Then
    Begin
      Result := 'Erroneus SID!';
      Exit;
    End;
    nSize := 0; dSize := 0;
    If Not LookupAccountSid(PChar(ServerName), aSID, Nil, nSize, Nil, dSize, pUse) Then
      Win32Check(GetLastError = ERROR_INSUFFICIENT_BUFFER);
    aName := StrAlloc(nSize);
    dName := StrAlloc(dSize);
    Try
      Win32Check(LookupAccountSid(PChar(ServerName), aSID, aName, nSize, dName, dSize, pUSE));
      If @AccType <> Nil Then
        AccType := Ord(pUse);
      Result := aName;
      RefDomain := dName;
    Finally
      StrDispose(aName);
      StrDispose(dName);
    End;
  End;
Var
  pSec: PSecurityDescriptor;
  sdSize: DWORD;
  sidOwner: PSID;
  aDef: LongBool;
  RefDomain: String;
  accType: DWORD;
begin
  pSec := Nil; sdSize := 0;
  GetFileSecurity('c:\ntldr', OWNER_SECURITY_INFORMATION, pSec, 0, sdSize);
  Win32Check(sdSize <> 0);
  GetMem(pSec, sdSize);
  Try
    Win32Check(GetFileSecurity('c:\ntldr', OWNER_SECURITY_INFORMATION, pSec, sdSize, sdSize));
    aDef := False;
    Win32Check(GetSecurityDescriptorOwner(pSec, sidOwner, aDef));
    If aDef Then Raise Exception.Create('Какой-то странный косяк с владельцем ;-)');
    Application.MessageBox(PChar(GetAccountBySID('', sidOwner, refDomain, accType) + ' (' + refDomain + ')'), 'Вот такой вот юзверь или группа ;-)', mb_IconInformation);
  Finally
    FreeMem(pSec);
  End;
end;

---

Не одна собака съедается, когда во всём этом начинаешь более-менее свободно ориентироваться
[C++] Спосибо, а нащёт собаки это верно подмечено 15.08.02 15:52  
Автор: Tamas Статус: Member
<"чистая" ссылка>
В смысле, это про Delphi5 или про WinNT Security API ? ;-)) Если чего непонятно, мыло внутри, пиши! 15.08.02 16:48  
Автор: HandleX <Александр М.> Статус: The Elderman
Отредактировано 15.08.02 16:50  Количество правок: 1
<"чистая" ссылка>
alex_wh@mail.ru
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach