将程序添加到 Windows 启动

Adding Program to Windows Startup

我的程序将用户的输入保存到当前位置的 txt 文件

TextWriter ts = new StreamWriter("url.txt");
ts.WriteLine(textBox2.Text.ToString());
ts.Close();

应用程序启动时显示

if (File.Exists("url.txt")) {
    TextReader tr = new StreamReader("url.txt");
    readUrl = tr.ReadLine().ToString();
    textBox2.Text = readUrl;

    tr.Close();
}

我使用这些代码将此程序添加到 Windows 启动程序

using (RegistryKey key = Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true)) {
    key.SetValue("House Party Protocol", "\"" + Application.ExecutablePath + "\"");
}  

我用 ClickOnce 发布了它并将它安装到我的计算机上。它在 windows 启动时启动,但不读取 txt 文件。当我手动打开它时,它起作用了。我认为 ClickOnce 安装路径和 windows 启动路径不同。我应该如何更改我的启动代码以避免这种情况

您可以尝试使用特定目录。例如,您可以将 url.txt 文件保存到 LocalApplicationData(当前非漫游用户使用的应用程序特定数据的目录)。

    static void Main(string[] args)
    {
        string inputText = string.Empty;

        //string directory = Environment.CurrentDirectory;
        string directory = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
        string path = Path.Combine(directory, "url.txt");

        if (File.Exists(path))
        {
            TextReader tr = new StreamReader(path);
            string readUrl = tr.ReadLine().ToString();
            inputText = readUrl;

            tr.Close();
        }

        string text = "abc";
        TextWriter ts = new StreamWriter(path);
        ts.WriteLine(text);
        ts.Close();
    }

如果你真的想使用应用程序所在的目录 运行 那么你可以尝试使用 Environment.CurrentDirectory (在上面的示例代码中被注释掉)。这可能会给您带来与之前相同的错误(使用相对路径时),但它可能会通过显示它尝试使用的目录来帮助您解决问题。

这是其他特殊文件夹的列表: Environment.SpecialFolder