Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помещение программы в реестр (автозагрузку) 
:(
    Опции темы
Zdvig
Дата 27.8.2005, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Сабж. Как это сделать в C# ?
--------------------
Лампочка - ожерелье голых поп. Вся любовь - оп-хоп-хоп!
PM MAIL   Вверх
Spawn™Production®
Дата 27.8.2005, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Тестер ПО, VB.NET Developer
**


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

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



А в MSDN глухо ?

Код
public void WriteKey()
{
  RegistryKey regkey;/* new Microsoft.Win32 Registry Key */
  regkey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run\");
  regkey.SetValue("MyProg",(string)"path");
  Registry.LocalMachine.Flush();
}

Соответственно вместо MyProg напишешь название exe программу, а вместо path - путь к exe.

Это сообщение отредактировал(а) Spawn™Production® - 27.8.2005, 11:32


--------------------
ОС: WinXP SP2 Rus
Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727
Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0)
PM WWW   Вверх
Zdvig
Дата 27.8.2005, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



оооо пасиба большое!!

Только надо что-то добавить в using ?

Это сообщение отредактировал(а) Zdvig - 27.8.2005, 13:05
--------------------
Лампочка - ожерелье голых поп. Вся любовь - оп-хоп-хоп!
PM MAIL   Вверх
Spawn™Production®
Дата 27.8.2005, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Тестер ПО, VB.NET Developer
**


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

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



Код
using Microsoft.Win32;
, так как класс Registry член имеено Win32...

Это сообщение отредактировал(а) Spawn™Production® - 27.8.2005, 13:23


--------------------
ОС: WinXP SP2 Rus
Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727
Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0)
PM WWW   Вверх
Zdvig
Дата 27.8.2005, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ошибка лезет...

An unhandled exception of type 'System.UnauthorizedAccessException' occurred in mscorlib.dll

Additional information: Cannot write to the registry key.



пишу так:
Код

public void WriteKey()    // реестр
        {    
            RegistryKey regkey; /* new Microsoft.Win32 Registry Key */    
            regkey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run\");    
            regkey.SetValue("sdfg",(string)"path");    
            Registry.LocalMachine.Flush();    //тут ругается
        }

        private void Form1_Load(object sender, System.EventArgs e)
        {
            WriteKey();
        }


Это сообщение отредактировал(а) Zdvig - 27.8.2005, 14:50
--------------------
Лампочка - ожерелье голых поп. Вся любовь - оп-хоп-хоп!
PM MAIL   Вверх
Spawn™Production®
Дата 27.8.2005, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Тестер ПО, VB.NET Developer
**


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

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



Так, моя ошибка, в конце не ту ветку реестра указал... да и пару ляпсусов поставил... хм, надо хотя б подучить синаксис C#...
Вот тяк:

Код
public void WriteKey()
{
  RegistryKey regkey;
  regkey = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run\\", true);
  regkey.SetValue("MyProg",(string)"path");
  Registry.CurrentUser.Flush();
}


Это сообщение отредактировал(а) Spawn™Production® - 27.8.2005, 14:54


--------------------
ОС: WinXP SP2 Rus
Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727
Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0)
PM WWW   Вверх
Zdvig
Дата 27.8.2005, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



что-от страннное, всеравно ругается....
--------------------
Лампочка - ожерелье голых поп. Вся любовь - оп-хоп-хоп!
PM MAIL   Вверх
Spawn™Production®
Дата 27.8.2005, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Тестер ПО, VB.NET Developer
**


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

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



Zdvig, я там ещё редактировал, последний вариант попробуй...
Добавлено @ 14:55
Код
public void WriteKey()    
{    
  RegistryKey regkey;    
  regkey = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run\\", true);    
  regkey.SetValue("MyProg",(string)"path");    
  Registry.CurrentUser.Flush();    
}



--------------------
ОС: WinXP SP2 Rus
Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727
Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0)
PM WWW   Вверх
Zdvig
Дата 27.8.2005, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



На том же месте...
Additional information: Cannot write to the registry key. smile
--------------------
Лампочка - ожерелье голых поп. Вся любовь - оп-хоп-хоп!
PM MAIL   Вверх
Spawn™Production®
Дата 27.8.2005, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Тестер ПО, VB.NET Developer
**


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

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



Так, а какая у тебя винда ? Может ещё в этом загвоздка...
Вот такой вот код проверь, если не пашет, то в чём ошибка, понятия не имею... Я сам не сишник, но то что пишу ясно и чётко понимаю.
Код
RegistryKey key = Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", true);
// Set value of sub key
key.SetValue("123", "321");



--------------------
ОС: WinXP SP2 Rus
Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727
Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0)
PM WWW   Вверх
Zdvig
Дата 27.8.2005, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Винда XP sp2.
А можно точно, после чего этот код всавить... Я с C# всего недельку сижу...
--------------------
Лампочка - ожерелье голых поп. Вся любовь - оп-хоп-хоп!
PM MAIL   Вверх
Spawn™Production®
Дата 27.8.2005, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Тестер ПО, VB.NET Developer
**


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

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



Можно прямо в Form_Load...


--------------------
ОС: WinXP SP2 Rus
Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727
Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0)
PM WWW   Вверх
Zdvig
Дата 27.8.2005, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Не помогает, все то же. Надо конкретный пример смотреть, работы с реестром.
--------------------
Лампочка - ожерелье голых поп. Вся любовь - оп-хоп-хоп!
PM MAIL   Вверх
Spawn™Production®
Дата 27.8.2005, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Тестер ПО, VB.NET Developer
**


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

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



Zdvig, ну а я по-твоему куда заглядывал ? Сначала конечно из MSDN, а потом уже сверился с примерами, но там написано именно так, как я тебе написал, хех, вот тут смотри - http://www.csharphelp.com/archives2/archive430.html


--------------------
ОС: WinXP SP2 Rus
Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727
Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0)
PM WWW   Вверх
Zdvig
Дата 27.8.2005, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

public void WriteKey()    
{    
    RegistryKey regkey;    
    regkey = Registry.CurrentUserOpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run\\");    
    regkey.SetValue("MyProg","path"); // если это убрать - работает... но ессено не пишет ничего туда :)    
    Registry.CurrentUser.Flush();    
}

--------------------
Лампочка - ожерелье голых поп. Вся любовь - оп-хоп-хоп!
PM MAIL   Вверх
Spawn™Production®
Дата 27.8.2005, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Тестер ПО, VB.NET Developer
**


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

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



Zdvig, блин, вот эта строка
Код
regkey = Registry.CurrentUserOpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run\\"); 

Должна вот так выглядеть.
Код
regkey = Registry.CurrentUserOpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run\\", true); 

Иначе запрещена запись в открываемый ключ реестра...


--------------------
ОС: WinXP SP2 Rus
Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727
Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0)
PM WWW   Вверх
Zdvig
Дата 27.8.2005, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



И где вы взяли тот код smile

Вот правильный вариант:

Код

public void WriteKey()    
        {    
            RegistryKey OurKey = Registry.CurrentUser;
            OurKey = OurKey.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run\",true);
            OurKey.SetValue("{NAME}","{PATCH}");
            OurKey.Flush();
            
        }

--------------------
Лампочка - ожерелье голых поп. Вся любовь - оп-хоп-хоп!
PM MAIL   Вверх
Spawn™Production®
Дата 27.8.2005, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Тестер ПО, VB.NET Developer
**


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

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



Цитата(Zdvig @ 27.8.2005, 16:58)
И где вы взяли тот код smile

Вот правильный вариант:

Код

public void WriteKey()    
        {    
            RegistryKey OurKey = Registry.CurrentUser;
            OurKey = OurKey.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run\",true);
            OurKey.SetValue("{NAME}","{PATCH}");
            OurKey.Flush();
            
        }

Из MSDN родной, из MSDN, а вот ты что-то перемудрил когда копировал.
Эх, в общем разбирайся, может научишься когда...

Это сообщение отредактировал(а) Spawn™Production® - 27.8.2005, 16:02


--------------------
ОС: WinXP SP2 Rus
Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727
Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0)
PM WWW   Вверх
Zdvig
Дата 27.8.2005, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



еще вопрос теперь не понимает строчку

Код

string PathInApp = Application.StartupPath+"\"+Application.ProductName+".exe"; // - подчеркивает .exe


Код

string PathInApp = Application.StartupPath+"/"+Application.ProductName+".exe"; // - все нормально....


Почему так может быть?


Цитата
Эх, в общем разбирайся, может научишься когда...


Вот я и научился smile Код выше.

Это сообщение отредактировал(а) Zdvig - 27.8.2005, 16:25
--------------------
Лампочка - ожерелье голых поп. Вся любовь - оп-хоп-хоп!
PM MAIL   Вверх
Spawn™Production®
Дата 27.8.2005, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Тестер ПО, VB.NET Developer
**


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

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



Модератор: Пожалуйста, один топик - один вопрос.


--------------------
ОС: WinXP SP2 Rus
Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727
Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0)
PM WWW   Вверх
Zdvig
Дата 27.8.2005, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Сам на свой вопрос отвечу, может кому нужно будет

Код

string PathInApp = Application.StartupPath+"\\"+Application.ProductName+".exe";

--------------------
Лампочка - ожерелье голых поп. Вся любовь - оп-хоп-хоп!
PM MAIL   Вверх
mr.DUDA
Дата 27.8.2005, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Zdvig, это называется "экранирование слэшей".



--------------------
user posted image
PM MAIL WWW   Вверх
Bounz
Дата 28.8.2005, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Zdvig @ 27.8.2005, 14:47)
Ошибка лезет...

An unhandled exception of type 'System.UnauthorizedAccessException' occurred in mscorlib.dll

Additional information: Cannot write to the registry key.

С реестром ещё не доводилось работать, но судя по названию ошибки UnauthorizedAccessException я думаю проблема в том, что у текущего пользователя нет прав для записи в эту ветку реестра... Попробуй провентилировать эту тему.

Это сообщение отредактировал(а) Bounz - 28.8.2005, 09:06
PM MAIL ICQ   Вверх
Zdvig
Дата 28.8.2005, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



mr.DUDA
Расскажи пожалуйста, для чего это. И зачем перед строкой ставится знак @


Bounz

Небыли выставлены "права" на запись в ветку. Уже все работает, код выше.
--------------------
Лампочка - ожерелье голых поп. Вся любовь - оп-хоп-хоп!
PM MAIL   Вверх
Spawn™Production®
Дата 28.8.2005, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Тестер ПО, VB.NET Developer
**


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

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



Цитата(Zdvig @ 28.8.2005, 13:47)
Расскажи пожалуйста, для чего это. И зачем перед строкой ставится знак @

Точно я не знаю, но судя по виду со знаком и без, чисто логически получается, что знак @ нужен для того, чтобы не писать двоный слешы.
Цитата(Zdvig @ 28.8.2005, 13:47)
Небыли выставлены "права" на запись в ветку. Уже все работает, код выше.

У меня код был один в один...


--------------------
ОС: WinXP SP2 Rus
Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727
Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0)
PM WWW   Вверх
Zdvig
Дата 28.8.2005, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Интересно, но в этой строке

Код

string PathInApp = Application.StartupPath+"\\"+Application.ProductName+".exe";


знак @, неработает...
--------------------
Лампочка - ожерелье голых поп. Вся любовь - оп-хоп-хоп!
PM MAIL   Вверх
Дрон
Дата 28.8.2005, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

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



Zdvig
И где же ты в той строке его ставишь? smile

И вообще не извращайтесь, а пишите:
Код

Path.Combine(Application.StartupPath, Application.ProductName+".exe");



--------------------
Да. Именно так.
PM   Вверх
luxadevianta
Дата 27.6.2009, 01:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А кто подскажет, как связать свою программу с типом файлов (чтобы файлы из проводника открывались моей программой)?
PM   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




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


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

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