Я нашел этот хороший фрагмент кода онлайн:
rkApp = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
Что отлично работает, но, увы, на Windows 7 и Vista я подозреваю, что происходит сбой, потому что у него нет разрешения на запись туда.
Итак, я исследую (конечно же, стекопоток), как избежать этого, самый быстрый метод:
rkApp = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
Достаточно просто! Хотя есть еще две проблемы. Один из них связан с обоими методами (на XP Box), поэтому программа считает, что ее относительный путь находится где-то в папке C: \ windows ... так что, т.е. он не находит мои пути относительно файлов справки и т. д. Вторая проблема заключается в том, что в Windows 7 моя программа не запускается, пока я не войду в систему. Я хочу, чтобы она запускалась в фоновом режиме, если это возможно, прежде чем кто-либо войдет в систему.
Это простой .exe-файл, который зависает в системном окне при его запуске. Я не хотел создавать это чудовище установщика, чтобы обойти эти проблемы администрирования и пути.
Думаю, мне нужно было бы создать его как службу (не знаю, как это сделать), чтобы запустить его при перезагрузке машины до того, как кто-нибудь войдет в систему. Во-вторых, для этого я должен выяснить, привилегии администратора, и, поскольку я не хочу допускать, чтобы программа запускалась при каждом запуске, это звучит так, как будто мне придется выяснять ее права администратора во время установки, но, увы, установщика нет.
Так что просто любопытно, какие маршруты я мог бы использовать, чтобы заставить это работать. Я даже могу допустить, чтобы это происходило только после того, как пользователь войдет в систему, но мои текущие методы, которые работают таким образом, действительно портят путь моей программы, так как она пытается записать материал в новый каталог (а не тот, который я изначально запустил EXE от). И т.д. ... и я не имею ни малейшего понятия, как решить эту проблему.