启动应用程序与系统和加载文件
本文关键字:加载 文件 系统 应用程序 启动 | 更新日期: 2023-09-27 18:02:54
我的应用程序从系统开始,我通过:
RegistryKey rkApp = Registry.CurrentUser.OpenSubKey("SOFTWARE''Microsoft''Windows''CurrentVersion''Run", true);
rkApp.SetValue("Monitor", BaseDir+"''Monitor.exe");
然后我想加载一个位于路径下的文件:
string configPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "''settings.jsn";
问题是变量configPath
在启动时是空的,如果我关闭应用程序并手动,路径似乎不知道为什么当应用程序自动启动时它不工作。
更新:这是我的类
public partial class MainWindow : Window
{
class MySettings : AppSettings<MySettings>
{
public string filePath = null;
public string interval = "0";
}
public class AppSettings<T> where T : new()
{
private static readonly string DEFAULT_FILENAME = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "''settings.jsn";
public void Save(string fileName = null)
{
File.WriteAllText(DEFAULT_FILENAME, (new JavaScriptSerializer()).Serialize(this));
}
public static void Save(T pSettings, string fileName = null)
{
File.WriteAllText(DEFAULT_FILENAME, (new JavaScriptSerializer()).Serialize(pSettings));
}
public static T Load(string fileName = null)
{
T t = new T();
if (File.Exists(DEFAULT_FILENAME))
t = (new JavaScriptSerializer()).Deserialize<T>(File.ReadAllText(DEFAULT_FILENAME));
return t;
}
}
MySettings settings = MySettings.Load();
public MainWindow()
{
try
{
RegistryKey rkApp = Registry.CurrentUser.OpenSubKey("SOFTWARE''Microsoft''Windows''CurrentVersion''Run", true);
rkApp.SetValue("Monitor", BaseDir+"''Monitor.exe");
string configPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "''settings.jsn";
string configPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "''settings.jsn"
statusLabel.Content = configPath;
Console.WriteLine("Path: " + configPath); //is empty
InitializeComponent();
int inter = settings.interval; // is empty
}catch(Exception e)
{
System.Windows.Forms.MessageBox.Show(e.Message);
}
}
这是我读取设置的代码。如果每次系统未加载时自动启动,则在手动启动程序时读取设置,并且文件所在路径为空。
我找到了这个页面:https://msdn.microsoft.com/en-us/library/system.environment.specialfolder(v=vs.110).aspx
表示
ApplicationData:作为公共存储库的目录当前漫游用户的应用程序特定数据。漫游用户在网络上的多台计算机上工作。漫游用户的个人资料保存在网络上的服务器上,并在时加载到系统。用户登录。
我的猜测是,当你的应用程序在系统启动时启动时,没有用户登录,它不能得到这个文件夹。这也解释了为什么你不能重现这个问题,因为你已经登录了。
也许换个系统文件夹就可以了