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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2009, 15:20   #1
AnKor94
Пользователь
 
Регистрация: 24.11.2009
Сообщений: 54
Стрелка Windows 7

Здравствуйте Программисты.
Когда я писал шуточную программу для друзей (в общем говоря троян только с ограниченными возможностями (например открыть/закрыть привод)) я столкнулся со следующей проблемой. Программа была написана и полностью работала на Windows 7. То есть запускалась где угодно, копировалась на диск С, запускалась и прописывалась в автозагрузку. Но когда я запустил её для проверки на Windows XP то она запустилась и процесс стал размножаться посекундно, пока не перезагрузишь компьютер. Попробовал опять на "семёрке" - всё ОК!..

Код:
function ApplicationPath: string;            
begin
  Result := ExtractFilePath(ParamStr(0));
end;

procedure TForm1.FormCreate(Sender: TObject); 
if ApplicationPath<>'C:\' then begin
copyFile(pchar(paramstr(0)), 'C:\Proga.exe', true);
ShellExecute(Form1.Handle, nil, 'c:\Proga.exe', nil, nil, SW_RESTORE); 
end;
end;
Вот часть кода, отражающая копирование файла на диск С и его запуск.

В чём может быть причина такой несовместимости?
141.116.168.135 : damiu2d449028.dami.army.pentagon.mi l (.MIL | US Military)

Последний раз редактировалось Stilet; 27.11.2009 в 15:24.
AnKor94 вне форума Ответить с цитированием
Старый 27.11.2009, 15:24   #2
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Ну дык первая программа никогда не будет иметь ApplicationPath=C:\ и в связи в этим она будет постоянно запускать своих сородичей. Советую после ShellExecute(Form1.Handle, nil, 'c:\Proga.exe', nil, nil, SW_RESTORE); дописать Close.
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 27.11.2009, 15:37   #3
AnKor94
Пользователь
 
Регистрация: 24.11.2009
Сообщений: 54
По умолчанию

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

Но по прежнему есть вопрос как это исправить и почему же всё таки на семёрке всё так, как и задумано..
141.116.168.135 : damiu2d449028.dami.army.pentagon.mi l (.MIL | US Military)
AnKor94 вне форума Ответить с цитированием
Старый 27.11.2009, 15:40   #4
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Попробуйте так:
Код:
if ansiuppercase(ApplicationPath)<>ansiuppercase('C:\') then begin
Если не выйдет, то посмотрите что возвращает ApplicationPath
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 27.11.2009, 15:49   #5
AnKor94
Пользователь
 
Регистрация: 24.11.2009
Сообщений: 54
По умолчанию

Пробовал ApplicationPath вставить в другую программу, положить программу в С и отобразить результат функции в едите. В едите было просто "C:/". Предложенную строку сейчас попробую.
141.116.168.135 : damiu2d449028.dami.army.pentagon.mi l (.MIL | US Military)
AnKor94 вне форума Ответить с цитированием
Старый 27.11.2009, 15:52   #6
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

А лучше её вообще поменять на:
Код:
if not fileexists('C:\Proga.exe') then begin
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 27.11.2009, 16:11   #7
AnKor94
Пользователь
 
Регистрация: 24.11.2009
Сообщений: 54
По умолчанию

ansiuppercase работает на ХР на 5 с плюсом, спасибо)
но что это такое, что на семёрке всё работало и без этого..?
141.116.168.135 : damiu2d449028.dami.army.pentagon.mi l (.MIL | US Military)
AnKor94 вне форума Ответить с цитированием
Старый 27.11.2009, 16:18   #8
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Это перевод букв в верхний регистр.
Т.е. семёрка возвращала путь как C:\, в то время как XP c:\. А с точки зрения строк, они разные.
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 27.11.2009, 16:18   #9
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Мот в XP ApplicationPath был "c:\" маленькой c.
Hollander вне форума Ответить с цитированием
Старый 27.11.2009, 16:29   #10
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Добавлю к флуду, странно что вообще севен разрешала без спросу копировать что-либо на диск C:\ это ведь "священная зона". Без спросу туда не зайти (ну как видно вы пишите прямо в корень)

Последний раз редактировалось mihali4; 27.11.2009 в 17:42.
BOBAH13 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Правда ли что Windows xp 64 определяет болше Оперативки чем Windows xp 32 subbota Операционные системы общие вопросы 4 03.06.2012 17:29
Как загрузить Windows-приложение без Windows alexray Компоненты Delphi 4 30.04.2010 14:38
Разница исполнения под Windows XP и Windows Server 2003? -Nast- Общие вопросы Delphi 0 02.06.2009 09:20
Проблемма с Windows Xp SP3 and Windows eXPended 2008 Feban Windows 5 25.12.2008 17:38
удалить из Windows XP sp2 Windows Movie Maker ZOMBIE Софт 1 03.10.2007 08:27