![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Имя учётной записи... [D7, WinXP]
Eagle Owl © (2003-10-16 16:11:00)
Добрый день, мастера!
Вопрос такой. Есть несколько учётных записей... Как опредилить программно, с какой из них выполнен вход в Windows. Программа должна фиксировать создание/удаление файлов. Нужно знать, кто из пользователей это сделал.
Спасибо.
clickmaker (2003-10-21 14:04:00) [1]
> zapped (20.10.03 22:36) [7]
> Вообще-то GetUserName есть для имени пользователя
> тока чо пробовал, GetUserName даёт имя пользователя под
> которым запущен процесс, вызывающий эту функцию :))
Ессно. Она для этого и служит. Для чужого процесса - OpenProcessToken + GetTokenInformation
Dimaz-z (2003-10-21 14:00:00) [2]
function Tfrm_sms.GetUserName: string;
var
N: Cardinal;
Buf: array[0..1023] of AnsiChar;
begin
N := SizeOf(Buf)-1;
Windows.GetUserName(Buf, N);
Result := PChar(@Buf[0]);
end;
zapped (2003-10-20 22:36:00) [3]
Вообще-то GetUserName есть для имени пользователя
тока чо пробовал, GetUserName даёт имя пользователя под которым запущен процесс, вызывающий эту функцию :))
Игорь Шевченко (2003-10-20 12:37:00) [4]
Eagle Owl © (16.10.03 20:24)
А..тогда не GetUserName...а что-то мне подсказывает, что никак...
Поскольку ReadDirectoryChangesW сообщает только о факте удаления файла, но не сообщает, кто это сделал. Может, что-то по типу FileMon использовать ?
Eagle Owl (2003-10-16 20:24:00) [5]
> Игорь Шевченко © (16.10.03 16:28) [2]
> А как удаление фиксируется ?
ReadDirectoryChangesW(......)
Удаление, создание, изменение, переименование и т.д.
Только подробнее не спрашивайте, сам только начал разбираться с ней...
Игорь Шевченко (2003-10-16 16:58:00) [6]
clickmaker © (16.10.03 16:30)
Меня больше интересует, как удаление фиксируется. SID для созданного файла лучше брать по GetFileSecurity, IMHO
clickmaker (2003-10-16 16:30:00) [7]
> Игорь Шевченко © (16.10.03 16:28) [2]
А ведь и правда! :) Но мож человеку хочется именно SID...
Игорь Шевченко (2003-10-16 16:28:00) [8]
Eagle Owl © (16.10.03 16:11)
А как удаление фиксируется ? Вообще-то GetUserName есть для имени пользователя, он нагляднее, чем SID
clickmaker (2003-10-16 16:18:00) [9]
if OpenThreadToken (GetCurrentThread, TOKEN_QUERY, FALSE, hThread) = FALSE then begin
if GetLastError = ERROR_NO_TOKEN then begin
if OpenProcessToken(GetCurrentProcess, TOKEN_QUERY, hThread) = FALSE then
Exit;
end else
Exit;
end;
GetTokenInformation(hThread, TokenUser, ...