31st
Мар

Функция для удаления любого процесса, в котором включается привилегия доступа SE_DEBUG_NAME

Проблема ешена… дело было в привилегиях доступа…. т.е. я не мог олучить дескриптор системного процесса, а ко всем остальным процессам доступ был…. если кому интересно представляю функцию для удаления ЛЮБОГО процесса, в котором включается привилегия доступа SE_DEBUG_NAME, которая в частности и являлась источником проблемы….
BOOL KillTask(string ExeFileName)
{
bool Co;
HANDLE FS;
HANDLE hProcess = NULL;
DWORD dwError;
int result;
FS = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
ProcEntry.dwSize = sizeof(ProcEntry);
Co = Process32First(FS, &ProcEntry);

while (Co)
{
if ( ProcEntry.szExeFile == ExeFileName )
{
hProcess = OpenProcess(PROCESS_TERMINATE, false, ProcEntry.th32ProcessID);

if (hProcess == NULL)
{
if (GetLastError() != ERROR_ACCESS_DENIED)
return FALSE;

OSVERSIONINFO osvi;

// определяем версию операционной системы
osvi.dwOSVersionInfoSize = sizeof(osvi);
GetVersionEx(&osvi);

// мы больше ничего не можем сделать, если это не Windows NT
if (osvi.dwPlatformId != VER_PLATFORM_WIN32_NT)
return SetLastError(ERROR_ACCESS_DENIED), FALSE;

// включим привилегию SE_DEBUG_NAME и попробуем еще раз

TOKEN_PRIVILEGES Priv, PrivOld;
DWORD cbPriv = sizeof(PrivOld);
HANDLE hToken;

// получаем токен текущего потока
if (!OpenThreadToken(GetCurrentThread(),
TOKEN_QUERY|TOKEN_ADJUST_PRIVILEGES,
FALSE, &hToken))
{
if (GetLastError() != ERROR_NO_TOKEN)
return FALSE;

// используем токен процесса, если потоку не назначено
// никакого токена
if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_QUERY|TOKEN_ADJUST_PRIVILEGES,
&hToken))
return FALSE;
}

_ASSERTE(ANYSIZE_ARRAY > 0);

Priv.PrivilegeCount = 1;
Priv.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &Priv.Privileges[0].Luid);

// попробуем включить привилегию
if (!AdjustTokenPrivileges(hToken, FALSE, &Priv, sizeof(Priv),
&PrivOld, &cbPriv))
{
dwError = GetLastError();
CloseHandle(hToken);
return SetLastError(dwError), FALSE;
}

if (GetLastError() == ERROR_NOT_ALL_ASSIGNED)
{
// привилегия SE_DEBUG_NAME отсутствует в токене
// вызывающего
CloseHandle(hToken);
return SetLastError(ERROR_ACCESS_DENIED), FALSE;
}

// попробуем открыть описатель процесса еще раз
hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, ProcEntry.th32ProcessID);
dwError = GetLastError();

// восстанавливаем исходное состояние привилегии
AdjustTokenPrivileges(hToken, FALSE, &PrivOld, sizeof(PrivOld),
NULL, NULL);
CloseHandle(hToken);

if (hProcess == NULL)
return SetLastError(FALSE), NULL;
}
// пытаемся завершить процесс
if (!TerminateProcess(hProcess, (UINT)-1))
{
dwError = GetLastError();
CloseHandle(hProcess);
return SetLastError(dwError), FALSE;
}
}
Co = Process32Next(FS, &ProcEntry);
}

CloseHandle(FS);
CloseHandle(hProcess);

return TRUE;
}


Перейти к теме на форуме

31st

Зачем делать ADOQuery1.Close перед изменением SQL запроса?

“Хаароший” вопрос…
Вам никогда не приходилось обращаться к встроенной в Дельфи справке?
Ну, тогда приведу пример из нее:

Delphi Object and Component Reference
SQL, ExecSQL example
______________________________________________________
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add(’Delete from Country where Name = ”Argentina”’);
Query1.ExecSQL;

По-простому, попытка любого изменения SQL без этого – сродни попытке замены поршневых колец на работающем двигателе… ©mihali4


Перейти к теме на форуме

30th
Мар

Как отловить капчу вконтакте и потом передать текст с нее опять на сайт?

Был предложен такой вариант:

На сколько мне припоминается то когда капчу можно отловить в исходном коде(то что прийдёт от Get/Post запроса) приходит что то вроди такого:

Код:

{"ok":-2,"captcha_sid":"703109533263","text":"Enter code"}

Парсим значение “captcha_sid”, в данном случае это “703109533263″, далее подставляем в ссылку вида http://vkontakte.ru/captcha.php?s=1&sid=******* (как вы догадались заместь ******* подставляем значение captcha_sid которые мы ранее спарсили) и получаем прямую ссылку на картинку каптчи!
Что бы потом текст картинки отослать ВК нужно сделать следующее:
1) Добавить в конец пост запроса(при логине, отправке сообщения и тд) значение captcha_sid.
2) Непосредственно добавить сам текст с картинки: в параметре captcha_key.
Например: я расмотрю на примере когда каптча “вылазит” при авторизации на сайт, для этого нам нужно отослать пост запрос с таким содержимым:

Код:

 op=a_login_attempt
captcha_sid=captcha_sid
captcha_key=captcha_key

captcha_sid = ранье спарсенное значение
captcha_key = сам текст с картинки

Более подробно о пост запросе вы можете узнать в любом HTTP снифере(HTTPAnalyzer и прочие аналоги)

Приступить к обсуждению темы на форуме.

29th
Мар

Первый выпуск журнала “ПРОграммист”

Здравствуйте, уважаемые форумчани, коллеги!
Сегодня у нас радостное событие- выход первого номера журнала “ПРОграммист”!
Как и было запланировано журнал был с нуля сделан за 1 месяц, даже немного меньше =)
В нашем журнале, состоящего из 47 страниц формата А4, Вы найдете много интересной, эксклюзивной(все статьи авторские), и, надеемся, полезной информации.
В первый номер вошли статьи касающиеся правил правильного написания программ, работе с графикой в Delphi, для новичков в программировании вошла статья про создание простейшей программы на
WinAPI, а также статья посвященная быстрым преобразованиям Фурье (БПФ).
Также на страницах нашего журнала Вы увидите много интересных фактов и еще много много всего

Хочу поблагодарить всех участников, работающих над нашим первым выпуском, а именно:
Редакторов:
Utkin, JTG, Сергей Бадло aka raxp
Дизайнеров/верстальщиков:
Егор Горохов aka Revival001, Indian, Сергей Бадло aka raxp
И, конечно же, авторов, которые написали замечательные статьи:
Utkin, Виктор Кон, Владимир Дегтярь,
Дмитрий Федорков, Руслан Аблязов,
Сергей Бадло

Особенно хочу поблагодарить Сергея, ибо без него журнала не было бы.

С уважением, член редакторского состава журнала Шульга Алексей aka Levsha100.

Скачать 7 мб
Скачать и оставить отзыв на форуме.

28th
Мар

Эквалайзер собственными руками

Эта тема уже поднималась на форуме.
В этот раз за нее взялись серьезно:)
Поучаствуйте в обсуждении.

28th

TCUI – библиотека графического интерфейса для J2ME

TCUI (TomClaw User Interface), библиотека графической оболочки, остова, при помощи которого можно легко, без особых усилий собрать полноценный интерфейс для Вашего приложения, написанного на Java 2 Microedition. Оговорюсь сразу, данная библиотека не сотрудничает с иными поставщиками, не является модификацией, подобием или иным подражанием. Авторство принадлежит одному лицу, Солкину Игорю Викторовичу. Распространяется оболочка по zlib/libpng лицензии с открытыми исходными кодами.

(читать всё…)

28th

Fortress 2 – бета-тестирование

Только закончился конкурс по созданию бота для игры Fortress.

(читать всё…)

27th
Мар

Корректное перетаскивание прозрачной формы

невероятно, но я смог сам разобраться! вылаживаю код может кому нибуть поможет…

(читать всё…)

27th

Игра Fortress. Конкурс на создание лучшего бота. Итоги

Места распределились следующим образом

(читать всё…)

26th
Мар

Выбор названия журнала форума

И так, оригинал-макет журнала сверстан (на данный момент 43 страницы объема и ждем опоздавших), осталась сущая безделица – выбрать название журнала. Как и договаривались, от каждого участника первого номера был получен один вариант названия в качестве пункта опроса …голосуют все.

(читать всё…)

25th
Мар

Рассылка!! №51

redaktor От редактора.

(читать всё…)

25th

Технология CUDA

Технология CUDA — это программно-аппаратная вычислительная архитектура NVIDIA, основанная на расширении языка Си, которая даёт возможность организации доступа к набору инструкций графического ускорителя и управления его памятью при организации параллельных вычислений. CUDA помогает реализовывать алгоритмы, выполнимые на графических процессорах видеоускорителей GeForce восьмого поколения и старше (серии GeForce 8, GeForce 9, GeForce 200), а также Quadro и Tesla.

(читать всё…)

25th

Грабить выделенный текст

(читать всё…)

23rd
Мар

Октлючить спящий режим на ноутбуке

Параметры энергоуправления в панели управления. Что-то такое должно быть. По крайней мере под хрюшей было. Там ставишь “Не выключать” везде.

(читать всё…)

23rd

Как сравниваются картинки.

Предположим, у вас есть картинка, и еще  много других.  Как же их сравнить между собой (например, для обхода капчи)?

(читать всё…)

22nd
Мар

Что означает буква A в именах параметров?

В методах стандартных классов VCL часто в имени параметров, особенно если это имя пересекается с именем какого нибудь поля, вначале добавляют букву A (например AWidth, ACanvas и т.д.). Для чего она понятно, чтобы не было конфликта имен, вопрос в другом – как расшифровывается. Казалось бы, не все ли равно? А вот мне давно интересно какое сокращение скрывается под этой буквой.

Присоединится к обсуждению

22nd

Отслеживание процесса

Значит есть такая вот функа:

(читать всё…)

22nd

Конкурс подходит к концу! Создание лучшего бота для игры Fortress.

Присылаем ботов до субботы на майл – gruzino-abhaz@rambler.ru
В субботу 27.03 будет производится битва Dll ботов.

(читать всё…)



Облако меток

процессы паскаль Fortress дата и время bmp Edit мультимедиа конкурс шифрование функция регулярные выражения строки Топик-обзор папка MySQL игры word поиск Image delphibasics ListBox assembler си шарп алгоритмы StringGrid canvas база данных форма html сеть функции компоненты indy ассемблер memo советы программы php Файлы графика макросы Win Api office мысли C/C++ winapi excel интернет журнал ПРОграммист Delphi