2012-04-15 2 views
0

Я сделал свою собственную программу для Windows.Реестр Windows, как добавить свою родную программу для загрузки exectuing?

(который, я скомпилирован с #pragma comment(linker, "/SUBSYSTEM:NATIVE")).

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

Мои точные вопросы:

1). Как это сделать в реестре Windows (я столкнулся с ошибкой в ​​таблице BootExecute/SetupExecute, но программа установки пуста и BootExecute имеет только: autocheck autochk *). Таким образом, я был путать пустые таблицы (потому что, если он пуст, где находятся другие программы автоматического запуска в Windows, которые загружается ntdll.dll?)

2). Неважно, какова версия исполняемой программы: для 32/64 бит системы?

Я положил его в % WINDIR% \ system32, но есть также % WINDIR% \ wow64 папки.

Должен ли я выделить эту деталь в реестре или Windows, загружает каждый драйвер из обеих папок и просто просто добавляет их как * 32 или 64-разрядную программу в taskmgr?

3). Есть ли другие способы сделать это?

Thanks,

С наилучшими пожеланиями!

+0

Я никогда не слышал о том, что кто-то хочет BootExecute программы раньше. Какова ваша цель для этого? – Gabe

+1

@Gabe native-windows development на уровне ntdll.dll, Win32 - это всего лишь один из модулей, который загружает ntdll, google it! http://technet.microsoft.com/en-us/sysinternals/bb897447 или http://hex.pp.ua/nt-native-applications-shell-eng.php –

+1

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager –

ответ

2

1) Вам необходимо поместить его в значение реестра BootExecute. Это многострочное значение, и вам нужно сохранить все строки уже (как правило, только «autocheck autochk *») и просто добавить имя своей программы без расширения.

2) Вы должны скомпилировать 32-битный двоичный код для 32-разрядной ОС и 64-битный двоичный код для 64-разрядной ОС. Binary должны быть помещены в% WINDIR% \ system32

3) Это единственный путь, насколько я знаю,

PS - для пример установки любой файловой системы или дефрагментатор реестра, который имеет функцию загрузки Defrag, включите его, и посмотреть, как он изменяет BootExecute.

+0

Я попытался добавить, но не успел :(Я добавляю только имя программы на второй строке из «autocheck autochk *» - не работал, также просто с пространством - тоже не работал! полный путь к программе или просто имя без extenstion. Все варианты не работают :( –

+0

Это означает, что, скорее всего, программа скомпилирована неправильно. Убедитесь, что она не связана ни с какой другой библиотекой, кроме ntdll.dll (используйте Depends viewer для проверьте его), также, что он соответствует архитектуре ОС (32/64 бит). – Isso

+0

Также вам нужно указать #pragma comment (linker, "/ BASE: 0x00010000"), #pragma comment (linker, "/ ENTRY : your_entry_function_name "), отключить проверку безопасности буфера (/ GS-) – Isso

Смежные вопросы