无法将文件复制到 WPF 中的 Environment.SpecialFolder.Startup

发布于 2024-11-25 14:55:32 字数 1162 浏览 1 评论 0原文

为了让我的应用程序在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

若无相欠,怎会相见 2024-12-02 14:55:32

您是否尝试过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");
}

,它在我的启动时出现

在此处输入图像描述

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

var startup = Environment.GetFolderPath(Environment.SpecialFolder.CommonStartup);
string file = Path.Combine(startup, "MyApp.lnk");
using (StreamWriter sw = new StreamWriter(file))
{
sw.WriteLine("Test");
}

And its coming on my startup

enter image description here

苄①跕圉湢 2024-12-02 14:55:32

您应该使用 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文