C# 我应该在哪里存储我的应用程序';是特拉伊孔吗?

C# 我应该在哪里存储我的应用程序';是特拉伊孔吗?,c#,wpf,C#,Wpf,我仍然有一个问题,我不知道在哪里存储我的TrayIcon。 基本上,如果Windows要从“autostart”启动我的程序。。。它坠毁了。我发现问题出在我指定的通往TrayIcon的道路上。我在C#WPF中使用以下命令加载TrayIcon: 因为整个手动启动过程没有问题(双击.exe文件)。但是,当我试图让程序在启动时从Windows注册表启动时,程序崩溃了。问题似乎是autostart进程找不到图标。接下来我尝试了这个: NotifiIcon.Icon = new System.Drawin

我仍然有一个问题,我不知道在哪里存储我的
TrayIcon
。 基本上,如果Windows要从“autostart”启动我的程序。。。它坠毁了。我发现问题出在我指定的通往TrayIcon的道路上。我在C#WPF中使用以下命令加载TrayIcon:

因为整个手动启动过程没有问题(双击.exe文件)。但是,当我试图让程序在启动时从Windows注册表启动时,程序崩溃了。问题似乎是autostart进程找不到图标。接下来我尝试了这个:

NotifiIcon.Icon = new System.Drawing.Icon(Environment.CurrentDirectory + @"\icon.ico");
但是同样的事情发生了

所以,有两件事我会找到最好的方法(希望如此):

  • 有没有办法解决这个问题而不使用Windows目录来存储图标,或者
  • 在任何Windows系统上是否有存储我的图标的保存位置

  • 您可能不应该使用
    Environment.CurrentDirectory
    ,而应该使用
    Application.StartupPath

    如果您执行以下操作,它将起作用:

     _trayIcon = new NotifyIcon
            {
                Text = "Some application text",
                Icon = new Icon(Path.Combine(Application.StartupPath, "icon.ico"), DefaultMaximumSize),
                Visible = true
            };
    

    您可以将图标作为嵌入式资源或在资源文件中存储和访问。这基本上包括生成的程序集中的图标本身。除了程序集的命名空间之外,您不需要知道任何路径。这两个代码段是相同的,并且有完全相同的问题,即当CurrentDirectory不是您希望的位置时。请先使用资源,然后是程序集。然后是位置。谢谢您的帮助。我解决了这个问题,通过使用“拖放”将图标添加到我的“图像”文件夹中。接下来,我正在设置路径:
    Stream iconStream=System.Windows.Application.GetResourceStream(新Uri()pack://application:,,,,/Images/sqldbmb.ico”).Stream成功了!
    
     _trayIcon = new NotifyIcon
            {
                Text = "Some application text",
                Icon = new Icon(Path.Combine(Application.StartupPath, "icon.ico"), DefaultMaximumSize),
                Visible = true
            };