Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск программ... ...своими силами 
:(
    Опции темы
V.Turecky
Дата 26.7.2002, 18:18 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ещё раз здравствуйте.

Мне нужно организовать запуск программ своими силами. Обычно программы запускаються, если в определенном ключе реестра есть значение ("%1" %*"), а если нет, или там себя прописывает вирус, тогда глына... Так вот - хочу сделать в своей программе командную строку, с помощью которой можно запускать программы своими силами. Но как организовать такой запуск? В это, собсвенно, мой вопрос.

Вот часть реестра, которую бомбят некторые вирусы:
 
Код
REGEDIT4

[HKEY_CLASSES_ROOT\exefile\shell\open\command]
@="\"%1\" %*"

  Вверх
Mikel
Дата 26.7.2002, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 882
Регистрация: 30.3.2002
Где: Саратов

Репутация: нет
Всего: 2



Если про запуск программ, то WinExec, ShellExecute. Но что-то я не совсеи понял.


--------------------
...so remember, it's better to burn out than to fade away
PM MAIL ICQ   Вверх
V.Turecky
Дата 26.7.2002, 18:25 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Если в реестре не будет этой херни - ("%1" %*"), то никакой
WinExec или ShellExecute не запустит программу!
  Вверх
Mikel
Дата 26.7.2002, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 882
Регистрация: 30.3.2002
Где: Саратов

Репутация: нет
Всего: 2



WinExec должен запустить, т.к. он использует сам Windows, а не Shell. Можешь попробовать проверить


--------------------
...so remember, it's better to burn out than to fade away
PM MAIL ICQ   Вверх
Vit
Дата 26.7.2002, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 1
Всего: 207



CreateProcess - запустит что угодно при любых ключах реестра (причём именно так как ты хочешь), собственно WinExec и ShellExecute при своём выполнении используют CreateProcess. Только с вирусами сложнее - кто твою программу будет загружать? Может тоже вирус?




--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Baa
Дата 26.7.2002, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: нет
Всего: 12



Наерно он хочет сделать так, что при запуске любой проги запускалась сначала его прога, а потом токо прога, которая должна была запуститься или я не так понял? (сделал вывод из ключа реестра)


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
dr.ZmeY
Дата 27.7.2002, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Политолог
****


Профиль
Группа: Участник Клуба
Сообщений: 3892
Регистрация: 26.3.2002
Где: ..::STALINGRAD::. .

Репутация: нет
Всего: 60



Цитата(Guest @ 26.7.2002, 19:25)
Если в реестре не будет этой херни - ("%1" %*"), то никакой
WinExec или ShellExecute не запустит программу!

Не понял, тебе нужна прога которая прописывала бы в реестр эту хрень, в чём проблема?

Или ты хочешь сделать универсальный кряк, который бы запускал любую не регерную прогу?


--------------------
PM MAIL WWW ICQ Skype   Вверх
Vit
Дата 27.7.2002, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 1
Всего: 207



Думаю что речь идёт о вирусах подобных SirCom - они переадресуют все запуски програм на себя(путем переправления реестра), и товарищ хочет сделать запуск программы в обход указаний реестра, только тут возникает такой проблем - хорошо, такая программа написана, как она сама будет запускаться?


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
dr.ZmeY
Дата 27.7.2002, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Политолог
****


Профиль
Группа: Участник Клуба
Сообщений: 3892
Регистрация: 26.3.2002
Где: ..::STALINGRAD::. .

Репутация: нет
Всего: 60



САМА???
Если не руками, то автозапуском, вместе с системой или по счётчику...
Или я не понял.
Можно проверять уже запущенные процессы, и один из них, типа taskmgr.exe :) и станет причиной запуска, какая разница как заставить прогу запуститься...


--------------------
PM MAIL WWW ICQ Skype   Вверх
Vit
Дата 27.7.2002, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 1
Всего: 207



Там не так всё просто - вирус ассоциирует себя с расширением exe и все файлы запускает из себя, даже таск-менеджер, возможно и можно как-то запустить программу "чисто", как системный сервис или драйвер, но простое прописывание в автозапуск ничего не даст. Я на зараженной системе "чисто" запускал файлы переименовывая их в .сом, но скорее всего появятся клоны вирусов, если уже не появились, которые учтут и эту ситуацию...


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
dr.ZmeY
Дата 28.7.2002, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Политолог
****


Профиль
Группа: Участник Клуба
Сообщений: 3892
Регистрация: 26.3.2002
Где: ..::STALINGRAD::. .

Репутация: нет
Всего: 60



Так, он хочет написать такой вирь, или запустить антивирус
Что конкретно ему надо?


--------------------
PM MAIL WWW ICQ Skype   Вверх
V.Turecky
Дата 30.7.2002, 15:31 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ребята, всем огромное спасибо!!!

WinExec запускает даже, когда реестр поврежден тем способом, о котором я упоминал ранее. Но я решил воспользоваться советом Vit'а и применить функцию CreateProcess, что даже лучше, она тоже запускает без проблем.

Вся хитрость моей программы в том, что у нее расширение не EXE, а CPL, и при ранее упомянутом повреждении реестра там есть такая функция, которая восстанавливает некоторые ассоциации. Можно выбрать какие именно. Пока только три.
  Вверх
Vit
Дата 30.7.2002, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 1
Всего: 207



CPL запускается посредством RunDLL.exe, так что возвращаемся на круги своя.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
V.Turecky
Дата 30.7.2002, 16:13 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
CPL запускается посредством RunDLL.exe, так что возвращаемся на круги своя.


Точно! Только сейчас дошло. Блин, что же делать???
  Вверх
Vit
Дата 30.7.2002, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 1
Всего: 207



Цитата(Guest @ 30.7.2002, 08:13)
Блин, что же делать???

Возможные варианты:

1) Запуск программы как драйвера, системного сервиса и т.п. при старте системы
2) Запуск программы как графической среды по умолчанию
3) Написать программу под ДОС и загружать с дискетты.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
V.Turecky
Дата 30.7.2002, 16:53 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А может лучше написать запускалочку для своей CPL'ки с расширением COM и запускать с помощью CreateProcess или вообще воспользоваться услугами BAT файла?
  Вверх
Vit
Дата 30.7.2002, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 1
Всего: 207



Цитата(Guest @ 30.7.2002, 08:53)
А может лучше написать запускалочку для своей CPL'ки с расширением COM и запускать с помощью CreateProcess или вообще воспользоваться услугами BAT файла?

BAT работает через тот же ShellExecute

COM - в принципе возможно, но кто поручится, что и это расширение ассоциированно с вирусом?


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
V.Turecky
Дата 30.7.2002, 17:30 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Для открытия файлов BAT, COM, EXE в реестре прописано одно и тоже - "%1" %*.

Вот ещё один вариант: написать, как я уже упоминал ранее, запускалочку, но только с любым другим расширением, а в реестре прописать для её открытия - "%1" %* и всё. Как идея?

Кстати, а какой метод запуска CPL файлов у RunDLL.exe? Я могу воспользоваться CreateProcess?
  Вверх
Vit
Дата 30.7.2002, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 1
Всего: 207



Цитата(Guest @ 30.7.2002, 09:30)
Кстати, а какой метод запуска CPL файлов у RunDLL.exe?

Rundll32.exe shell32.dll,Control_RunDLL <AppletName>


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Monty
Дата 26.7.2004, 03:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Advanced Lamer
****


Профиль
Группа: Участник Клуба
Сообщений: 3511
Регистрация: 3.4.2003
Где: Гваделупа

Репутация: нет
Всего: 27



Код
function RunProcess(FileName: string; ShowCmd: DWORD; wait: Boolean; ProcID:
 PDWORD): Longword;
var
 StartupInfo: TStartupInfo;
 ProcessInfo: TProcessInformation;
begin
 FillChar(StartupInfo, SizeOf(StartupInfo), #0);
 StartupInfo.cb := SizeOf(StartupInfo);
 StartupInfo.dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
 StartupInfo.wShowWindow := ShowCmd;
 if not CreateProcess(nil,
   @Filename[1],
   nil,
   nil,
   False,
   CREATE_NEW_CONSOLE or
   NORMAL_PRIORITY_CLASS,
   nil,
   nil,
   StartupInfo,
   ProcessInfo)
   then
   Result := WAIT_FAILED
 else
 begin
   if wait = FALSE then
   begin
     if ProcID <> nil then
       ProcID^ := ProcessInfo.dwProcessId;
     result := WAIT_FAILED;
     exit;
   end;
   WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
   GetExitCodeProcess(ProcessInfo.hProcess, Result);
 end;
 if ProcessInfo.hProcess <> 0 then
   CloseHandle(ProcessInfo.hProcess);
 if ProcessInfo.hThread <> 0 then
   CloseHandle(ProcessInfo.hThread);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 ProcID: Cardinal;
begin
 ProcID := 0;
 if OpenDialog1.Execute then
   RunProcess(OpenDialog1.FileName, SW_SHOW, CheckBox1.Checked, @ProcID);
 ShowMessage(IntToStr(ProcID));
end;


by Michael Puff


--------------------
...
О, вещая моя печаль,
О, тихая моя свобода
И неживого небосвода
Всегда смеющийся хрусталь!
PM MAIL ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.1377 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.