Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2016, 22:15   #1
Djanius
Пользователь
 
Аватар для Djanius
 
Регистрация: 24.01.2009
Сообщений: 16
Вопрос Скомпилированная программа не подключается к процессу.

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

Делфи запущена от админа? + Делфи для отладки полачает доп. права и разрешения. Вы этого явно не делает, вот и нет доступа к чужому процессу.
p51x на форуме Ответить с цитированием
Старый 16.10.2016, 23:11   #3
Djanius
Пользователь
 
Аватар для Djanius
 
Регистрация: 24.01.2009
Сообщений: 16
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Делфи запущена от админа? + Делфи для отладки полачает доп. права и разрешения. Вы этого явно не делает, вот и нет доступа к чужому процессу.
Спасибо за наводку мыслей в нужном направлении. Разобрался, добавив дебаг привилегии.
Вот сам код, может кому пригодится.

Код:
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;
Вкл/выкл:
Код:
EnableDebugPrivilege(True);
EnableDebugPrivilege(False);

Последний раз редактировалось Djanius; 16.10.2016 в 23:20.
Djanius вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сделать, чтобы класс был в отдельном модуле и была программа, к которой он подключается romantik1993 Помощь студентам 3 28.11.2014 20:31
программа подключается к базе (Firebird, SQLite) только на компе с Microsoft Visual C# nestor_petrovitch C# (си шарп) 1 11.02.2014 17:51
Скомпилированная программа не меняет системное время xunicorn WPF, UWP, WinRT, XAML 2 22.11.2012 15:10
Скомпилированная программа требует CC32100MT.DLL и BORLANDMM.DLL NewBoy Общие вопросы C/C++ 4 02.08.2012 14:39
Программа не подключается к серверу kta87 Общие вопросы Delphi 1 03.06.2010 22:48