【问题标题】:Adding Program to Windows Startup将程序添加到 Windows 启动
【发布时间】:2018-11-07 18:54:33
【问题描述】:

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

【问题讨论】:

  • 尝试给它完整路径

标签: c# visual-studio clickonce


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多