Не удается скопировать файлы в Environment.SpecialFolder.Startup в WPF
Чтобы приложение запускалось в Windows, я решил добавить ярлык в папку "Автозагрузка".
Я пытался использовать:
File.Move(AppDomain.CurrentDomain.BaseDirectory + "ApplicationName.exe", Environment.GetFolderPath(Environment.SpecialFolder.Startup) + "ApplicationName.lnk");
Это работает, но он перемещает мой ярлык не в нужную мне папку.
Environment.GetFolderPath(Environment.SpecialFolder.Startup)
хорошо работает, возвращается
C:\Users\Germanov\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Но мой ярлык появляется в
C:\Users\Germanov\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
Просто 1 папка "сзади".
File.Delete(Environment.GetFolderPath(Environment.SpecialFolder.Startup) + "ApplicationName.lnk");
тоже работает "странно". Он фактически удаляет этот файл, но снова не в папке "Автозагрузка".
Если я попытаюсь вручную добавить "\Startup" к пути, как это:
Environment.GetFolderPath(Environment.SpecialFolder.Startup) + @"Startup\ApplicationName.lnk"
Я получаю System.IO.Excseption.
Я не могу набрать этот путь вручную, я настроил свое приложение для работы на разных ПК с разными версиями Windows. Я также не могу использовать Registry для запуска моего приложения при запуске Windows.
Я использую Windows 7, Visual Studio 2010, .NET 4.0, это проект WPF.
Есть идеи?
2 ответа
Вы пробовали Environment.SpecialFolder.CommonStartup вместо Startup, я не знаю, почему запуск не работает по вашему требованию. Большая часть установочного пакета делает это для вас; почему ты хочешь сделать это для себя? Любая причина не для использования реестра?
Я попробовал этот код на моей машине
var startup = Environment.GetFolderPath(Environment.SpecialFolder.CommonStartup);
string file = Path.Combine(startup, "MyApp.lnk");
using (StreamWriter sw = new StreamWriter(file))
{
sw.WriteLine("Test");
}
И это идет на моем запуске
Вы должны использовать System.IO.Path.Combine(), чтобы не создавать StartupApplication1.exe. Обратите внимание на отсутствующую обратную косую черту.