Скажите есть ли в Win2000 функция наподобие RegisterServiceProcess, она в 98 находилась в библиотеке kernel32.dll. При попытке вызвать эту функцию возникает ошибка, что такой функции нет. Can't find dll entry point RegisterServiceProcess in kernel32.dll. Или получается что для использования этой функции надо проверять версию ОС. И еще такой вопрос. Можно ли скрыть программу от Дисптчера задач в Win2000. И если да, то как это сделать. Если писать много, то дайте ссылку.
Доброе время суток, Дмитрий! Такой функциинет в win2000 и нет нечего анологичного. ( в рассылке уже поднимался этот вопрос:WinAPI Вопрос №129) Читайте там подробней. Для того, чтобы избежать ошибки,нужно вызывать библиотечную команду програмно и проводить самому обработку искл. ситуаций(зависет от языка реализации). Ответ отправлен: 11.03.2004, 22:07 Отправитель: Pawel Отвечает mr2dark
Здравствуйте, Дмитрий!
В Windows 2000 и следующих версиях совершенно другая архитектура, и процессы-сервисы для них должны иметь определенное внутреннее устройство и использовать соответствующую процедуру установки в системе. Поэтому "функции наподобие RegisterServiceProcess" в W2K быть не может. Если ты хочешь использовать один исполняемый модуль для разных платформ, ты можешь или проверять версию (надежный и более расширяемый варинат) или использовать динамическую загрузку библиотеки и GetProcAddress с соответствующей обработкой ситуации, когда данная функция отсутствует. Про сокрытие процесса можете прочитать здесь: http://www.hackzona.ru/modules.php?name=News&file=article&sid=1300. Мой товарищ проверял, сказал что работает. Ответ отправлен: 12.03.2004, 11:39 Отправитель: mr2dark Отвечает Foamplast
Добрый день, Дмитрий! Для этого нужно понимать логику работы Windows. Дело в том, что там нету такой специальной функции "скрыть процесс от пользователя". Это побочный эффект создания служебного процесса. Просто есть обычные процессы, есть служебные и есть драйверы. В Win9X вторые и третьи не показываются в окошке, которое вызывается по Ctrl-Alt-Del. В Windows NT служебные процессы показываются всегда. Другое дело, что можно запустить служебный процесс, который станет частью менеджера служебных процессов, т.е. его видно не будет, так как менеджер служебных процессов запущен всегда. Это делается без помощи RegisterServiceProcess, поэтому её и нет. В Windows NT служебный процесс должен соответствовать определённым требованиям (иметь в своём коде специальные функции, которые менеджер служб мог бы вызвать и т.п.). При этом пользоваться можно только некоторыми
функциями, например MessageBox(). А в общем окна создавать нельзя, т.е. ограничений на службы дофига. Лучше всего про это прочитать в MSDN. А вот драйверы не показываются нигде. Только с ними запарок ещё больше: пользоваться ничем обычным нельзя, только специальными функциями ядра; сегменты должны называться определённым образом и т.п.
Ответ отправлен: 15.03.2004, 19:07 Отправитель: Foamplast
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.