Суббота, 22.07.2017, 16:21 Приветствую вас Гость | Группа "Гости" 


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 1 1
Модератор форума: Волк-1024, Anton93, xXxSh@dowxXx  
delfcode » Delphi » Вирусология Delphi » SID пользователя (получить SID пользователя, если запущен от системы)
SID пользователя
AdamasS-98 Дата: Среда, 18.03.2015, 20:03 | Сообщение # 1
Был не раз
Зарегистрирован: 26.10.2013
Группа: Пользователи
Сообщений: 8
Статус: Offline
Привет всем..
Я столкнулся с такой проблемой..
Когда я запускаю свое приложение, мне его надо запускать от системы.. Все проходит нормально, но для работы с реестром пользователя от системы нужно получать SID...
Так вот если моя прога запущена от пользователя, то она получает нужный мне SID, но если я запущен от системы, то она получает SID системы, который мне не нужен.. Мне надо как-то получить SID пользователя, когда я запущен от системы..
Помогите пожалуйста, весь интернет перерыл...

Использовал вот такую функцию:
  1.                               <span class="ucoz-forum-post" id="ucoz-forum-post-9398" edit-url="">  
  2.   
  3.                               function GetCurrentUserSid: string;  
  4. </span>  
  5.                               


DimasS
 
HTTqp Дата: Четверг, 19.03.2015, 20:24 | Сообщение # 2
Частый гость
Зарегистрирован: 08.10.2014
Группа: Пользователи
Сообщений: 57
Статус: Offline
Если не секрет как получилось запустить от системы?
 
Волк-1024 Дата: Четверг, 26.03.2015, 18:32 | Сообщение # 3
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 467
Статус: Offline
Очень плохо ищешь видно:

http://delphi.xcjc.net/viewthread.php?tid=45527
http://stackoverflow.com/questio....ine-sid
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=48705

Выпадает в первых страницах по запросу: LookupAccountName

Вот от меня рабочий вариант:

  1.                               <span class="ucoz-forum-post" id="ucoz-forum-post-9408" edit-url="">  
  2.   
  3.                               function ConvertSidToStringSidA(Sid: PSID; var StringSid: PChar): Boolean; stdcall;  external 'ADVAPI32.DLL' name 'ConvertSidToStringSidA';  
  4.   
  5.                                 
  6.   
  7.                               function SidToString(Sid : PSID) : string;  
  8.   
  9.                               var  
  10.   
  11.                                  Buffer: PChar;  
  12.   
  13.                               begin  
  14.   
  15.                                  if ConvertSidToStringSidA(Sid, Buffer) then  
  16.   
  17.                                     Result:=string(Buffer)  
  18.   
  19.                                  else  
  20.   
  21.                                     Result:='';  
  22.   
  23.                               end;  
  24.   
  25.                                 
  26.   
  27.                               function GetUserSid(const MachineName, UserName: string): string;  
  28.   
  29.                               var  
  30.   
  31.                                  Sid: PSID;  
  32.   
  33.                                  RefDomainName: PChar;  
  34.   
  35.                                  SidNameUse: SID_NAME_USE;  
  36.   
  37.                                  dwSidSize, dwDomainSize: DWORD;  
  38.   
  39.                               begin  
  40.   
  41.                                  Result:='';  
  42.   
  43.                                  dwSidSize:=0;  
  44.   
  45.                                  dwDomainSize:=0;  
  46.   
  47.                                  if not LookupAccountNameA(PChar(MachineName), (PChar(UserName)), nil, dwSidSize, nil, dwDomainSize, SidNameUse) and (GetLastError() = ERROR_INSUFFICIENT_BUFFER) then  
  48.   
  49.                                  try  
  50.   
  51.                                    GetMem(Sid, dwSidSize);  
  52.   
  53.                                    GetMem(RefDomainName, dwDomainSize);  
  54.   
  55.                                    if LookupAccountNameA(PChar(MachineName), (PChar(UserName)), Sid, dwSidSize, RefDomainName, dwDomainSize, SidNameUse) then  
  56.   
  57.                                       Result:=SidToString(Sid);  
  58.   
  59.                                  finally  
  60.   
  61.                                    FreeMem(Sid, dwSidSize);  
  62.   
  63.                                    FreeMem(RefDomainName, dwDomainSize);  
  64.   
  65.                                  end;  
  66.   
  67.                               end;     
  68. </span>  
  69.                               


Pascal, C\C++, Assembler, Python
 
delfcode » Delphi » Вирусология Delphi » SID пользователя (получить SID пользователя, если запущен от системы)
Страница 1 из 1 1
Поиск:

delfcode.ru © 2008 - 2017 Хостинг от uCoz