![]() |
Autorun (C#)
Думаю, поднимается вопрос весьма интересный для многих начинающих программистов.
Допустим, имеется некоторый проект приложения. Требуется добавить в проект возможность автозапуска приложения. Желаемая реализация: 1. Прописывать приложение в [HKEY_CURRENT_USER/.../Windows/CurrentVersion/Run] при запуске exe-файла, при условии отсутствия такого ключа. Весьма желательно присутствие в настройках приложения возможности выключать автозапуск при помощи установки/снятия одной единственной галочки. Также весьма и весьма желательно иметь возможность запуска приложения в свёрнутом режиме, например многие Tools полезно держать только в Taskbar. 2. Ничуть не хуже вариант с созданием ярлыка к приложению в папке "Автозагрузка", пожелания те же. По собственному опыту - работа с реестром в MSDN освещена не особенно ясно, поэтому автозапуск был решён при помощи создания ключа в реестре вида [ApplicationFolder]/<AppName>.exe при инсталляции. Такая возможность довольно явна видна при добавлении в Solution ещё одного проекта - инсталляционного. Других воможностей быстрый взгляд не нашёл, кроме того приложение запускается в развёрнутом виде, что открыто противоречит его функционалу... Заранее благодарю всех отписавшихся. С уважением. |
Второй номер ezine журнала Хакер:
http://www.xakep.ru/post/33603/default.asp Качаем номер (бесплатно) и читаем статью "Кодим твикер". Там как раз то, что доктор прописал: http://www.xakep.ru/post/33603/X-magazine02.zip |
Anton Papin, хакер, пишущий кейлоггер?
Вариант первый - Process Start или Application Run в C#, который генерирует файл стандартными средствами командной строки и копирует его куда надо. Читать мануалы по перенаправлению вывода: echo Текст_который_нам_нужен > файл_который_нам_нужен. Так можно сгенерировать .reg файл, запустить его в невидимом режиме: @ имя_команды >null а затем удалить del имя_файла. Вариант второй - создать средствами C# bat-файл в папке C:\Documents and Settings\All Users\...\Автозагрузка. Вас этому обучали - как записать обычный текст в файл. Чтобы приложение запускалось не развёрнуто - это в настройках формы. А именно: WindowState=Minimazed ShowInTaskBar=false |
Что касается реестра - Скопировано из MSDN
Example 2 The following code example stores values of several data types in an example key, creating the key as it does so, and then retrieves and displays the values. The example demonstrates storing and retrieving the default (nameless) name/value pair, and the use of defaultValue when a name/value pair does not exist. Код:
using System;Код:
this.ShowInTaskbar = false;Не надо сразу ругать MSDN, не жалейте времени на поиск.... |
Эх... а в наше наше время люди еще умели юзать поиск.
Код:
RegistryKey hk = Registry.CurrentUser;http://www.csharphelp.com/archives2/archive430.html |
Цитата:
А про реестров, то согласен с решением. Но лутче копировать файл в авторан. |
Цитата:
hk = hk.OpenSubKey("не помню положение Run"); Мне именно это не понравилось... Результат функции присваивать объекту... Раз уж субкей, могло бы и само как-то присвоиться... |
2 Eclipse
В данное время все ООП языки работают с объектами. Так и функции могут возвращать объекты. ИМХО, возвращение объекта через функцию делает код более устойчивым. |
C реестром всё шоколадно, правда немного нелогично устроено удаление ключей из реестра - Registry.CurrentUser.CreateSubKey(...).DeveteValue("Value") - то есть мы создаём-удаляем ключ... Напоминает незабвенный машинный перевод хелпа о мыши в Win95, где download было переведено как вниз-грузить, если не ошибаюсь.
С созданием ярлыка всё не так шоколадно. Я открыл в блокноте произвольный файл lnk и нашёл там кроме прямой ссылки на файл ещё кучу нечитаемых символов - судя по всему это дополнительные свойства ярлыка, вроде иконки, хотя в принципе должна содержаться только ссылка, никаких нетекстовых параметров... MSDN по этому поводу подавленно молчит, по крайней мере та версия, что есть у меня (2005). Что писать в файл я не очень понимаю честно говоря... Вот пример содержания файла lnk: Код:
L А F“ рЦ1ЫИЙЄ[xЏЙћЙьШИЙ љ « PаOР к:iўШ +00ќ /E:\ @ 1 '9ПH Internet ( пѕм8›Є'9#r I n t e r n e t < 2 љ '9©H hfs.exe & пѕ'9«H'9jW h f s . e x e I 4 H КЈ9 Install E:\Internet\hfs.exe E : \ I n t e r n e t ` X lights ШѕИ<л~CЉkCНOYBvчјвЬё|ЭҐ~ ЫNh*FSMбI*RGЇ.GжH%wмјвЬё|ЭҐ~ ЫNh*P.S. никаких кейлоггеров я не пишу, программы у меня вполне открытые, а у автозупаска чисто практическое применение. P.P.S. был очень удивлён, когда Kaspersky 6 просто пропустил момент, когда моё приложение лезло в реестр. Ни одного предупреждения! А на инсталлятор ругается... Видимо уровень обращения к реестру более низкий, чем у антивируса... опасно блин! |
| Текущее время: 00:40. Часовой пояс GMT +5. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод:
OOO «Единый интегратор UZINFOCOM»