http://www.cyberforum.ru/windows-forms/thread1980085.html#taglist НЕ могу извлечь файлы из HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\ выводит файл но в папке Run его нет
Подробное условие: Нужно извлечь файлы автозагрузки отсюда HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\ но вместо видимых мною файлов выводит не эти файлы а какой-то другой, не пойму откуда, в диспетчере задаx -> этот файл есть как и те что в не отображаются в моей программе из папки Run вот файл
вот реестр
RegistryKey current_user,local_machine;
public Form1()
{
InitializeComponent();
current_user = Registry.CurrentUser.CreateSubKey(
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\");
foreach (string valueName in current_user.GetValueNames())
{
listBox1.Items.Add(valueName);
}
local_machine = Registry.LocalMachine.OpenSubKey(
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\",true);
foreach (string valueName in local_machine.GetValueNames())
{
listBox1.Items.Add(valueName);
}
}
private void button_add_Click(object sender, EventArgs e)
{
OpenFileDialog OPF = new OpenFileDialog();
OPF.Multiselect = true;
OPF.ShowDialog();
if (OPF.ShowDialog() == DialogResult.OK)
{
foreach (string file in OPF.FileNames)
{
MessageBox.Show(file);
MessageBox.Show(Path.GetFileNameWithoutExtension(OPF.FileName));
}
}
string file_name = Path.GetFileNameWithoutExtension(OPF.FileName);
string file_path = OPF.FileName;
current_user.SetValue(file_name, file_path);
// current_user.Close();
listBox1.Items.Insert(1,file_name);
}
private void button_delete_Click(object sender, EventArgs e)
{
string file_name = listBox1.SelectedItem.ToString();
current_user.DeleteValue(file_name, false);
// current_user.Close();
listBox1.Items.Remove(file_name);
}
}
как видите эти фалйы видно а из LOCAL_MACHINE не могу вывести
в диспечтере все есть
Реестр
Если какая-то программа использует настройки реестра, то информация может (но не обязана) быть в реестре.
Если в реестре (любой ветке) есть запись о программе, это не означает, что программа существует и корректно установлена на компьютере.
Реестр можно использовать как доверенный справочник по системным настройкам, т.к. это отслеживает сама система, но информацию о программах, которые не являются частью Windows нужно проверять, она вполне может быть неактуальной.
В реестре бывают ошибки, которые не мешают явно работе системы, но могут приводить к ошибкам в различных сторонних программах, если они используют значения реестра без проверки их актуальности и корректности.
Существует 100500 причин по которым в реестре появляются невалидные ключи, от кривого деинсталлятора и/или апдейтера, до багов самой системы.
Некоторые ветви реестра получаются путем объединения пользовательской и системной ветвей, иногда результат объединения может содержать "сюрпризы" разной степени "приятности".
Интересующая вас ветка HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\
содержит только системные записи о запускаемых программах, для текущего активного пользователя нужно искать записи в HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\
. Суммарная информация из этих двух веток будет соответствовать полному списку автозапуска для текущего активного пользователя.
Диспетчер задач
Диспетчер задач может отображать специально заданные для этого имена программ, вместо имен файлов, с помощью которых эти программы запущены.
Диспетчер задач показывает не всегда все, что реально запущено, от него вполне можно скрыть отдельные процессы, но все что отображает диспетчер реально запущено в момент просмотра.
В штатном диспетчере можно включить отображение реальных путей к исполняемым файлам для видимых процессов, но это нужно делать специально, по-умолчанию эта опция отключена. Не знаю какая версия Windows у вас используется, но искать нужно настройки отображаемых столбцов (ориентировочно в меню "Вид" => "Выбрать столбцы"), вам нужен столбец "Путь к образу".
Планировщик задач Windows
Некоторые программы используют для автозапуска системный планировщик задач (апдейтер хрома например), их, разумеется, нет в этих ветках реестра, хотя есть подозрение, что сами задачи все таки хранятся в реестре, но где именно я не знаю, не копал.
Папка "Автозагрузка" (StartUp)
Есть специальные папки: общая и индивидуальные для каждого пользователя
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
C:\Users\UserName\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
(пути к данным папкам могут отличаться, в зависимости от локальных настроек системы и профиля пользователя)
В этих папках могут быть ярлыки для автоматического запуска программ, при входе пользователя в систему.
Также, некоторые программы, могут быть запущены с помощью других программ. Информацию по этим программам так просто получить не удастся, придется экспериментировать и изучать кто, что и зачем запускает. Тоже касается системных процессов, которые запускаются не зависимо от желания и настроек пользователя.
Если остались вопросы - оставьте комментарий или внесите уточнение в вопрос.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
C# практически не знаю, но встала задача реализовать приложениеСуть его в том, чтобы при запуске приложения(только один раз при запуске), через...
На форме есть кнопка и она должна открывать текстовые файлы с помощью OpenFileDialog(то есть текствые файлы разбросаны по компьютеру или же нужно...
В ListBox добавляется музыкаНужно чтобы когда пользователь выберет/выделит музыку в ListBox и после нажмет на Button, то в PictureBox должна отобразится...
ЗдравствуйтеВызывая функцию GetSystemInfo из kernel32 через p/invoke