Программа добавленная в автозагрузку не запускаеться C#

146
19 декабря 2021, 15:50

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

  1. Через код: Registry.CurrentUser.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run;

    (не работает) просто не запускает стоит как будто бы есть и включена не запускает пробовал и через другую папку и через флешку четно!

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

примеры ниже тоже не работают. RegistryKey rk = Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true); rk.SetValue("FileName", "FileName.exe");

Если вы руками размещаете полный путь к программе в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run - работает?

Помогите пожалуйста HEEEEEEEEELP!

мой код:

    public bool SetAutorunValue(bool autorun)
    {
        string ExePath = Application.ExecutablePath;
        RegistryKey reg;
        reg = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
        if (autorun)
        {
            if (reg.GetValue(NameApp) == null)
            {
                reg.SetValue(NameApp, ExePath);
                reg.Close();
                return true;
            }
            else
                return false;
        }
        else
        {
            if (reg.GetValue(NameApp) != null)
            {
                reg.DeleteValue(NameApp);
                reg.Close();
                return true;
            }
            else
                return false;
        }
    }
Answer 1

Берем простое консольное приложение для .NET FW. Я вам приведу полностью весь его код

using System;
using System.Windows.Forms;
using Microsoft.Win32;
namespace AutoLoadSample
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            MessageBox.Show("hello");
            SetAutorunValue(true);
        }
        public static bool SetAutorunValue(bool autorun)
        {
            string executablePath = Application.ExecutablePath;
            var nameApp = "AutoLoadSample";
            RegistryKey reg;
            reg = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
            if (autorun)
            {
                if (reg.GetValue(nameApp) == null)
                {
                    reg.SetValue(nameApp, executablePath);
                    reg.Close();
                    return true;
                }
                else
                    return false;
            }
            else
            {
                if (reg.GetValue(nameApp) != null)
                {
                    reg.DeleteValue(nameApp);
                    reg.Close();
                    return true;
                }
                else
                    return false;
            }
        }
    }

Настраиваем 2 вещи:

1) добавляем ссылку на формы, чтобы работал MessageBox

2) В свойствах проекта указываем Windows Application

Запускаем приложение. Проверяем, что оно прописалось в реестре

Всё закрываем, перезапускаем компьютер, при старте получаем

Всё. Проблемы с автозапуском больше нет. У вас проблема где то в другом месте.

Что вы можете сделать:

  1. Добавьте логгирование в ваше приложение, пишите в лог все исключения, что у вас есть
  2. Не надо никаких cmd файлов, если вам надо запускать приложение - запускайте приложение.
READ ALSO
Порядок foreach

Порядок foreach

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

204
Export to DOC-File

Export to DOC-File

Нашла один интересный вариант генерации файла про Word с расширением doc(docx - не получается)

104
PHP. Сортировка в строке [дубликат]

PHP. Сортировка в строке [дубликат]

Есть строка со словами $words = "animal,people,cats,mack,apple,juice,mouse,marvel,keyboard,beer,drug,gun"; Слова разделены запятыми, в конце точка

98
Регулярное выражение просмотр вперёд

Регулярное выражение просмотр вперёд

Можно ли одним регулярным выражением выделить валидную строку в группу, в которых одновременно true оба выражения:

68