Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Автозапуск 
:(
    Опции темы
boobie
Дата 6.12.2011, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 16.9.2011

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



Код

#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<windows.h>
#include<string.h>
using namespace std;
int main()
{
    setlocale(LC_ALL,"Russian");
    //HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
    //HKEY hRootKey - дескриптор корневого раздела
    //                или одна из констант:
    //                HKEY_CLASSES_ROOT, HKEY_CURRENT_USER,
    //                HKEY_LOCAL_MACHINE, HKEY_USERS
    //TCHAR *sKey   - путь к открываемому разделу,
    //                например: "mdpfile\\shell"
    HKEY hKeyResult=NULL;
    LONG rc=RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_ALL_ACCESS,&hKeyResult);
    if(rc==ERROR_SUCCESS)
    {
        cout<<"Ok\n";
        //раздел открыт
        //hKeyResult - дескриптор открытого раздела
        CHAR *sVal="C:\\111.exe";
        //выполнить нужные действия
        LONG rc=RegSetValueEx(hKeyResult,"Eye and ear",0,
                          REG_SZ,          //тип параметра
                          (BYTE*)sVal,     //значение параметра
                          lstrlen(sVal));  //длина параметра
        if(rc==ERROR_SUCCESS)
        {
            cout<<"Ok\n";
        }
        //закрыть раздел
        RegCloseKey(hKeyResult);
    }
    else
    {
        cout<<"Error"<<rc<<endl;
        //ошибка
    }
    system("PAUSE");
    return 0;
}

Программа при запуске должна запихать в реестр строку, которая ставит в автозапуск программу 111.ехе (т.е. та должна стартовать при запуске системы).
user posted image
Прога компилирутся, сточка создается, ошибок нет, но 111.ехе не запускается.
Где ошибка?

Модератор: будь внимательнее при использовании тегов форматирования вручную

Это сообщение отредактировал(а) bsa - 6.12.2011, 16:32
PM   Вверх
bsa
Дата 6.12.2011, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Кейлогер пишешь? Нехорошо!!!
Ты перезагрузиться не пробовал?
Точно есть файл C:\111.exe?
Вручную программа запускается?

Это сообщение отредактировал(а) bsa - 6.12.2011, 16:34
PM   Вверх
volatile
Дата 7.12.2011, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 13
Всего: 85



Цитата(boobie @  6.12.2011,  15:44 Найти цитируемый пост)
LONG rc=RegSetValueEx(hKeyResult,"Eye and ear",0,
                          REG_SZ,          //тип параметра
                          (BYTE*)sVal,     //значение параметра
                          lstrlen(sVal));  //длина параметра


Вот что о последнем аргументе говориться в мсдн:
Цитата

cbData [in]
The size of the information pointed to by the lpData parameter, in bytes. If the data is of type REG_SZ, REG_EXPAND_SZ, or REG_MULTI_SZ, cbData must include the size of the terminating null character or characters.


вывод: не помешало бы прибавить единицу...   smile 
PM MAIL   Вверх
boobie
Дата 7.12.2011, 07:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 16.9.2011

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



Цитата

вывод: не помешало бы прибавить единицу... 

Работать не будет.

Все нормально, код полностью правильный и рабочий - это я тупанул.

Цитата

Кейлогер пишешь? 

Нет.
Цитата

Ты перезагрузиться не пробовал?
Точно есть файл C:\111.exe?

Ну... Я не совсем еще...
Цитата

Вручную программа запускается?

Да.

Прога запускается, но должным образом не работает. Хотя если запустить самому (вручную), то все норм.


Это сообщение отредактировал(а) boobie - 7.12.2011, 07:12
PM   Вверх
boobie
Дата 7.12.2011, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 16.9.2011

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



Код

#include<iostream>
#include<cstdlib>
#include<cstdio>
using namespace std;
int main()
{
    freopen("valavalnam","a+",stdout);
    cout<<"Hello, world\n";
    system("PAUSE");
    return 0;
}

Автозапуск этой программы невозможен.
Т.е. окно появляется, а файл не создается. Вручную все работает нормально.
Если убрать строчку
Код

freopen("valavalnam","a+",stdout);

, то программа работает норм и при автозапуске, выводит "Hello, word" в окне.

Пробовал заменять freopen на другие функции (fprintf и др.) - результат такой же.

В чем проблема?
PM   Вверх
GremlinProg
Дата 7.12.2011, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(boobie @  7.12.2011,  10:52 Найти цитируемый пост)
В чем проблема?

примерно в том же, в чем проблема у пианиста, которому отрезали руки

зачем переподключать stdout?

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


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
boobie
Дата 7.12.2011, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 16.9.2011

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



Это 2 разных программы.

1 - автозапуск, прога, которая прописывает строчку в реестре для автозапуска (автозагрузки) программы 111.ехе по адресу С:\1\

2-я прога - это 111.ехе, она при запуске создает файл и записывает в него "Hello, world".

Блин, че за фигня...
Цитата

примерно в том же, в чем проблема у пианиста, которому отрезали руки

зачем переподключать stdout?

Это ж реально ерунда, она ну никак в данном случае ни на что не влияет...

Цитата

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


Да, я тоже так подумал... Ну что ж, будем танцевать с бубном...
PM   Вверх
xvr
Дата 7.12.2011, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Задай имя файла с полным путем. При автозапуске текущая директория становится где то в недрах папок Windows, не удивительно, что писать туда (и файлы там создавать) не дают

PM MAIL   Вверх
boobie
Дата 11.12.2011, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 16.9.2011

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



Цитата

Задай имя файла с полным путем. При автозапуске текущая директория становится где то в недрах папок Windows, не удивительно, что писать туда (и файлы там создавать) не дают

Немного не понял. На диске С лежит 111.ехе. Я переносил его в другие папки и всегда прописывал путь полностью. Результат  -  0.
PM   Вверх
volatile
Дата 11.12.2011, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 13
Всего: 85



boobie, попробуйте получить ответ на свой вопрос от самого компьютера.
Он точнее знает что там у вас происходит, чем участники форума...
Код

nt main()
{
   FILE * f = freopen("C:\\valavalnam","a+",stdout); // Здесь задать полный путь к "valavalnam"
   if( f == 0 )
   {
      fprintf( stderr, "error on freopen:%d %s\n", errno, strerror( errno ));
      system("PAUSE");
      return 1;
   }
   cout<<"Hello, world\n";
   return 0;
}

Теперь читайте что напишет. Можно запостить ответ сюда, если не понятно.

PM MAIL   Вверх
xvr
Дата 12.12.2011, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(boobie @  11.12.2011,  09:22 Найти цитируемый пост)
 Я переносил его в другие папки и всегда прописывал путь полностью.

'Путь полностью' надо прописывать в freopen, а не при 'перенесении 111.exe в другие папки'.

PM MAIL   Вверх
boobie
Дата 12.12.2011, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 16.9.2011

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



Спасибо! Да, помогло. Нужно задавать полностью путь!!! smile 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

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


 




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


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

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