无法将文件复制到 WPF 中的 Environment.SpecialFolder.Startup
为了让我的应用程序在 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
“后面”的 Just 1 个文件夹中。
File.Delete(Environment.GetFolderPath(Environment.SpecialFolder.Startup) + "ApplicationName.lnk");
也很“奇怪”。它实际上删除了该文件,但同样不在“启动”文件夹中。
如果我尝试手动将“\Startup”添加到路径中,如下所示:
Environment.GetFolderPath(Environment.SpecialFolder.Startup) + @"Startup\ApplicationName.lnk"
我收到 System.IO.Excseption。
我无法手动输入此路径,我需要我的应用程序在具有不同版本 Windows 的不同 PC 上运行。我也无法使用注册表使我的应用程序随 Windows 启动而启动。
我使用Windows 7、Visual Studio 2010、.NET 4.0,这是一个WPF项目。
有什么想法吗?
To make my application to start on Windows sturup I decided to put a shortcut to Startup folder.
I tried to use:
File.Move(AppDomain.CurrentDomain.BaseDirectory + "ApplicationName.exe", Environment.GetFolderPath(Environment.SpecialFolder.Startup) + "ApplicationName.lnk");
It works, but it moves my shortcut not to the folder I need.
Environment.GetFolderPath(Environment.SpecialFolder.Startup)
works well, it returns:
C:\Users\Germanov\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
But my shortcut appears in
C:\Users\Germanov\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
Just 1 folder "behind".
File.Delete(Environment.GetFolderPath(Environment.SpecialFolder.Startup) + "ApplicationName.lnk");
also works "strange". It actually deletes this file, but again not in "Startup" folder.
If I try to manually add "\Startup" to the path like this:
Environment.GetFolderPath(Environment.SpecialFolder.Startup) + @"Startup\ApplicationName.lnk"
I get a System.IO.Excseption.
I can't type this path manually, I neen my application to work at diferent PCs with different versions of Windows. I also can't use Registry to make my application start with windows startup.
I use Windows 7, Visual Studio 2010, .NET 4.0, this is a WPF project.
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您是否尝试过Environment.SpecialFolder.CommonStartup而不是Startup,我不知道为什么启动不能满足您的要求。大多数安装程序包都会为您完成此操作;你为什么要为自己做这件事?有什么理由不使用注册表?
我在我的机器上尝试了这段代码
,它在我的启动时出现
Did you tried Environment.SpecialFolder.CommonStartup instead of Startup, I don't know why startup is not working for your requirement. Most of installer package do this for you; why do you want to do this for your self? Any reason not for using Registry?
I tried this code on my machine
And its coming on my startup
您应该使用 System.IO.Path.Combine(),这样就不会创建 StartupApplication1.exe。请注意缺少的反斜杠。
You should use System.IO.Path.Combine() so that you won't create StartupApplication1.exe. Note the missing backslash.