|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Окт 28, 2003 10:48:21 Как софтина может определить под администратором ее загрузили или нет? Чего-то в API не нашел..... |
|
|
Дата: Окт 28, 2003 11:18:17 GetTokenInformation и там смотри - есть ли группа админов у тебя в токене. |
|
|
Дата: Окт 29, 2003 05:23:51 rst ага, спасибо, примеры нашел и скачал... |
|
|
Дата: Окт 29, 2003 18:12:45 Еще можно узнать админ или нет: ; Open a handle to the SC Manager database invoke OpenSCManager, NULL, NULL, SC_MANAGER_ALL_ACCESS or eax,eax jnz admin ;... не администратор jmp short next admin: ;... у текущего пользователя права администратора invoke CloseServiceHandle, eax next: ... |
|
|
Дата: Окт 30, 2003 14:24:05 · Поправил: Four-F В MSDN в описании функции CheckTokenMembership есть пример IsUserAdmin. На асме так:
.386
.model flat, stdcall
option casemap:none
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
; I N C L U D E F I L E S
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
include \masm32\include\advapi32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\advapi32.lib
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
; R E A D O N L Y D A T A
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
.const
NtAuthority db 0 ; SID_IDENTIFIER_AUTHORITY <0,0,0,0,0,5>
db 0
db 0
db 0
db 0
db 5
szCaption db "Is User Admin?", 0
szIsAdmin db "YES. The caller's process is a member of the Administrators local group.", 0
szIsNotAdmin db "NO. The caller's process is NOT a member of the Administrators local group.", 0
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
; C O D E
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
.code
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
; IsUserAdmin
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
IsUserAdmin proc
; This routine returns TRUE if the caller's process
; is a member of the Administrators local group. Caller is NOT expected
; to be impersonating anyone and is expected to be able to open its own
; process and process token.
;
; Return Value:
; TRUE - Caller has Administrators local group.
; FALSE - Caller does not have Administrators local group. --
local IsMember:BOOL
local psidAdministratorsGroup:PTR SID
and IsMember, FALSE
invoke AllocateAndInitializeSid, addr NtAuthority, 2, \
SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, \
0, 0, 0, 0, 0, 0, addr psidAdministratorsGroup
.if eax != 0
invoke CheckTokenMembership, NULL, psidAdministratorsGroup, addr IsMember
.if eax == 0
and IsMember, FALSE ; for sure
.endif
invoke FreeSid, psidAdministratorsGroup
.endif
mov eax, IsMember
ret
IsUserAdmin endp
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
; start
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
start:
invoke IsUserAdmin
.if eax == TRUE
lea eax, szIsAdmin
.else
lea eax, szIsNotAdmin
.endif
invoke MessageBox, NULL, eax, offset szCaption, MB_ICONINFORMATION
invoke ExitProcess, 0
end start
|
|
|
Дата: Окт 30, 2003 17:45:20 Можно ламерный вопросик, а существует ли понятие admin не admin под 9x виндами, или там все админы ;-) ?? |
|
|
Дата: Окт 30, 2003 18:19:26 Asterix Там все юзвери, но с админскими правами :) |
|
|
Дата: Окт 30, 2003 19:26:12 Asterix ага и SCM API там нету ;-) |
|
|
Дата: Окт 31, 2003 14:34:13 Four-F Функция CheckTokenMembership существует только начиная с Win2000. В NT4 ее нет. Поэтому правильнее будет получить SID процесса и определить, входит ли туда группа админов. |
|
|
Дата: Окт 31, 2003 15:43:13 Будем знать. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.082 |