Подскажите пожалуйста как програмно узнать SID текущего пользователя. Если не трудно напишите кусок кода в дезАсм варианте
GetTokenInformation и LookupAccountSid. Примеров их использования в MSDN куча. Например "HOWTO: Retrieve Current User and Domain Names on Windows NT, Windows 2000, or Windows XP"
Если необходимо получить как имя пользователя так и имя домена для текущего потока, то сначала, при помощи функции GetTokenInformation надо распаковать пользовательский идентификатор (SID) из потока. А затем вызвать функцию LookupAccountSid , чтобы получить имя учётной записи и имя домена, связанные с этим SID. Но я не смогу пересобрать программу , а все примеры и исходники на С+ или в дельф. Мне надо кусок кода, чтоб я его "инжектировал" в прогу. А сообразить не могу как он должен выглядеть
dagmat Почему? Пример из msdn можно быстро собрать в VC и посмотреть в отладчике или дизасме результат.
Я не лентяй и не нытик. Но меня жутко поджимает время, а нерешённых задач еще хватает. Люди добрые, скомпилируйте код в аттаче или какой-нить другой по сабжу, я не успею изучить С+ за 4 дня...Если кто-то считает что любой труд должен оплачиваться- не вопрос, поверьте мне очень нужно. 24579445__sorc.txt
Помоему ты мазахист. Другого слова подобрать немогу. Но впрочем как хочешь. Я скомпили код функции под MSVC++. Файлы ничем не пожаты. В режиме дебага файл на hххp://rapidshare.de/files/21751236/User.exe.html (104 кб) В режиме релиза: см. аттач (22 кб) Код main функции был таков: char User[0x100]; char Domain[0x100]; DWORD LenUser = sizeof(User); DWORD LenDomain = sizeof(Domain); GetCurrentUserAndDomain(User, &LenUser, Domain, &LenDomain); 1442265913__User.exe
Сам сегодня этим занимался. Вот что получилось: GetMySid PROTO WORD .data SSid db 50h dup (0) .code ... invoke GetMySid, addr SSid Код (Text): GetMySid PROC uses ebx esi edi edx ecx pStr_Sid:DWORD LOCAL hAccessToken :dword LOCAL dwInfoBufferSize :dword LOCAL szSid :dword invoke SetLastError,0h invoke GetCurrentProcess ; try to retrieve Access Token from current thread mov ebx,eax invoke OpenProcessToken, ebx, TOKEN_QUERY, addr hAccessToken .if eax != 0 invoke GlobalAlloc, GMEM_FIXED, 1024 ;allocating buff for TokenInformation struct mov ebx,eax push ebx ;Svae pSid for call LocalFree push ebx ;Svae pSid invoke GetTokenInformation, hAccessToken, TokenOwner, ebx, 1024, ADDR dwInfoBufferSize .if eax != 0 pop ebx ; pop pSid mov ebx,[ebx] invoke ConvertSidToStringSid, ebx, addr szSid .if eax != 0 mov esi,szSid mov edi,pStr_Sid .while AL!=0 lodsb stosb .endw invoke LocalFree,szSid .endif .else pop ebx .endif call LocalFree invoke CloseHandle, hAccessToken .endif invoke GetLastError ret GetMySid endp