Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.10.2016, 22:12
djanius djanius вне форума
Прохожий
 
Регистрация: 08.01.2016
Сообщения: 2
Версия Delphi: Delphi XE8
Репутация: 10
Стрелка Скомпилированная программа не подключается к процессу

Доброго времени суток! Уважаемые, нужна ваша помощь или дельный совет.
Написал небольшую программку которая показывает информацию о состоянии игрока в онлайн игре, но почему-то она не может подключиться к процессу игры. Т.е. она подключается, но только если ее запустить из под Delphi, то она работает отлично. А если запустить уже скомпилированную программу, то она не подключается. Хотя видно, что находит ID процесса.
Может кто сталкивался с таким или просто знает в чем может быть проблема. Буду признателен вашим советам и помощи!
Чтобы все было более наглядно, я записал видео: https://www.youtube.com/watch?v=fjZnavjs6AU
Ответить с цитированием
  #2  
Старый 16.10.2016, 23:18
djanius djanius вне форума
Прохожий
 
Регистрация: 08.01.2016
Сообщения: 2
Версия Delphi: Delphi XE8
Репутация: 10
По умолчанию

Все, всем спасибо за просмотр моей темы. Разобрался сам. Нужно было дать привилегии. Добавил функцию в код и все заработало.

Код:
function EnableDebugPrivilege(const Value: Boolean): Boolean;
const
  SE_DEBUG_NAME = 'SeDebugPrivilege';
var
  hToken: THandle;
  tp: TOKEN_PRIVILEGES;
  d: DWORD;
begin
  Result := False;
  if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, hToken) then
  begin
    tp.PrivilegeCount := 1;
    LookupPrivilegeValue(nil, SE_DEBUG_NAME, tp.Privileges[0].Luid);
    if Value then
      tp.Privileges[0].Attributes := $00000002
    else
      tp.Privileges[0].Attributes := $80000000;
    AdjustTokenPrivileges(hToken, False, tp, SizeOf(TOKEN_PRIVILEGES), nil, d);
    if GetLastError = ERROR_SUCCESS then
    begin
      Result := True;
    end;
    CloseHandle(hToken);
  end;
end;
Ответить с цитированием
Этот пользователь сказал Спасибо djanius за это полезное сообщение:
Admin (17.10.2016)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:29.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter