将程序添加到Windows启动

时间:2015-02-10 19:41:19

标签: c# visual-studio clickonce

我的程序将用户的输入保存到其当前位置的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启动路径是不同的。我应该如何更改我的启动代码以避免这个

1 个答案:

答案 0 :(得分:1)

您可以尝试使用特定目录。例如,您可以将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