Запуск программы при вкл. компьютера
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Дальнейшие комментарии по поводу что могут пользователи с правами локального администратора, а чего не могут в этой теме объявляется оффтопиком, так как на любой отдельно взятый ключ реестра любому пользователю можно дать любые права персонально, в том числе без права изменения этих прав.
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Под откажутся работать я подразумевал, что они не смогут добавить себя в автозапуск, если нет прав за запись в реестр. Я не в коем случае не утверждал, что они вообще перестанут работать. Это должно быть и так понятно." писал(а):Я назвал чушью утверждение о том, что права админа нужны для работы на машине, т.к. дескать не будут работать другие проги. А НЕ про доступ в реестр, как пишеш ты:
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
С правами "Опытного пользователя" в реестр пишется (ф-ия RegSetValue(...)), но при перезагрузке не запускается. Можно здесь что-нибудь сделать?
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
А ты туда верный путь к своей программе записываешь? Выкладывай сюда кусок кода, который производит подготовку данных и запись в реестр. Будем разбираться.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Записываю следующим образом:
и второе … если также записывать вторую программу, то перезаписывается первая, а не добавляется вторая. Как бы дописывать вторую, не затирая первой.
Код: Выделить всё
char aszApp[] = {"C:\\ras_z 1\\ras.exe"};
if( RegSetValue(HKEY_CURRENT_USER,
TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"), REG_SZ,
TEXT( aszApp ), sizeof( aszApp )) == ERROR_SUCCESS)
{
…………………………………….
}
Лена89, Вот тут нашел "исходник" этой самой RegSetValue.
Судя по тексту, во втором параметре надо передавать не только ветку реестра, но и имя переменной, которой присваивается значение (аналогия с файлами: путь [каталог] + имя).
Т.е. твой вызов должен выглядеть так:
MyProggy - это имя переменной реестра. Может быть любое. Для записи еще одной программы в "авто-run" нужно будет использовать какое-то другое (уникальное) имя.
Судя по тексту, во втором параметре надо передавать не только ветку реестра, но и имя переменной, которой присваивается значение (аналогия с файлами: путь [каталог] + имя).
Т.е. твой вызов должен выглядеть так:
Код: Выделить всё
char aszApp[] = {"C:\\ras_z 1\\ras.exe"};
if( RegSetValue(HKEY_CURRENT_USER,
TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\MyProggy"), REG_SZ,
TEXT( aszApp ), sizeof( aszApp )) == ERROR_SUCCESS)
{
…………………………………….
}
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Вот описание спорного параметра из MSDN.
То есть функция RegSetValue предназначена для того, чтобы устанавливать значение всего ключа (папки) в реестре. Значение всего ключа хранится в специальном entry с зарезервированным именем (Default). Таким образом, если к строке добавить ещё MyProggy, то в реестре в ключе Run создастся подключ MyProggy, а в него, в поле (Default) запишется путь к нашей программе. Это не то, что нам нужно.
Опять напоминаю о списке функций, которые я перечислял: там не упоминалась RegSetValue. Правильным будет следующий подход:
Код: Выделить всё
lpSubKey [in, optional]
The name of a subkey of the hKey parameter. The function sets the default value of the specified subkey.
Key names are not case sensitive.
If this parameter is NULL or points to an empty string, the function sets the default value of the key identified by hKey.
Опять напоминаю о списке функций, которые я перечислял: там не упоминалась RegSetValue. Правильным будет следующий подход:
Код: Выделить всё
hKey = RegOpenKeyEx(путь к Run);
Если не смогли открыть (что врядли), то hKey = RegCreateKeyEx();
RegSetValueEx(hKey, "MyProggy", aszApp);
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Спасибо, кстати, можно говорить ещё и специальной кнопочкой "Спасибо" или с изображением весов (зависит от выбранной темы) над понравившемся сообщением 

Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.