Ярлык в папке автозагрузки не загружает правильные настройки для приложения Visual Basic - PullRequest
1 голос
/ 15 ноября 2011

Совсем недавно я начал с Microsoft Visual Basic 2010 Express и создаю приложение, которое загружает URL-адрес в компонент браузера.

Одна из настроек, которые пользователь может настроить, - это 'Запустите приложение, когда Windows запустит ".Когда этот флажок установлен и пользователь сохраняет свои настройки, я создаю ярлык в папке автозагрузки Microsoft, чтобы приложение запускалось при запуске Windows.

Я делаю это, используя следующий код:

My.Computer.Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", True).SetValue(Application.ProductName, Application.ExecutablePath)
Dim startup As String = Environment.GetFolderPath(Environment.SpecialFolder.Startup)
IO.File.Copy(Application.ExecutablePath, startup & "\ApplicationName.exe")

Проблема в том, что когда я использую ярлык, который Visual Basic делает при установке, расположенный на рабочем столе или в папке программ меню Пуск,загружает настройки, определенные пользователем.Но когда запускается ярлык из папки автозагрузки, он загружает совершенно «новое» приложение, со всеми настройками по умолчанию.

Кто-нибудь знает, что я могу делать неправильно?Я много искал в Интернете, а также просматривал темы StackOverflow, такие как копирование ярлыка приложения в папку автозагрузки VB (которая не работала для меня)

Любая помощь будет высоко оценена.Если вам нужна дополнительная информация, пожалуйста, спросите, и я посмотрю ее как можно скорее.

1 Ответ

1 голос
/ 15 ноября 2011

вы не создаете ярлык, вы копируете исполняемый файл в папку автозагрузки !!этот скопированный исполняемый файл не найдет файл конфигурации рядом с ним, поэтому он создаст новый!поэтому он показывает значения по умолчанию .. чтобы сделать быстрый импорт "объектной модели хоста скриптов Windows" из вкладки "COM" в проекте -> ссылки -> добавить ...

Dim oShell As IWshRuntimeLibrary.WshShell
Dim oShortCut As IWshRuntimeLibrary.WshShortcut

oShell = New IWshRuntimeLibrary.WshShell
oShortCut = oShell.CreateShortcut(Environment.GetFolderPath(Environment.SpecialFolder.Startup) & _
                                                    "\" & GetFileName(Application.ExecutablePath) & ".lnk")
Dim s = Environment.GetFolderPath(Environment.SpecialFolder.Startup)
With oShortCut
    .TargetPath = Application.ExecutablePath
    .Arguments = ""
    .WorkingDirectory = GetDirectoryName(Application.ExecutablePath)
End With
oShortCut.Save()
oShortCut = Nothing : oShell = Nothing
...