【问题标题】:Launch Window on Windows startup在 Windows 启动时启动窗口
【发布时间】:2015-03-03 15:33:25
【问题描述】:

我希望我的应用程序(WPF Window)在 Windows 启动时启动。我尝试了不同的解决方案,但似乎没有一个有效。我必须在我的代码中写什么才能做到这一点?

【问题讨论】:

  • 你尝试过哪些解决方案?
  • 我试着写了一个密钥注册表:HKCU\Software\Microsoft\Windows\CurrentVersion\Run
  • 你有日志吗?无论如何,您在注册表项中存储了什么?该解决方案应该有效。
  • 是的,我必须登录,这是我的代码:RegistryKey app = Registry.CurrentUser.OpenSubKey("HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); app.SetValue("timer", AppDomain.CurrentDomain.BaseDirectory);
  • 基本目录?您还需要包含您希望启动的可执行文件。 BaseDirectory 只返回目录,不包括 exe 本身。

标签: c# wpf startup


【解决方案1】:

您说的必须向注册表添加一个键是正确的。

将密钥添加到:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

如果您想为当前用户启动应用程序。

或者:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 

如果你想为所有用户启动它。

例如为当前用户启动应用程序:

var path = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Run";
RegistryKey key = Registry.CurrentUser.OpenSubKey(path, true);
key.SetValue("MyApplication", Application.ExecutablePath.ToString());

只需将第二行替换为

RegistryKey key = Registry.LocalMachine.OpenSubKey(path, true);

如果您想在 Windows 启动时为所有用户自动启动应用程序。

如果您不想再自动启动应用程序,只需删除注册表值即可。

这样:

var path = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Run";
RegistryKey key = Registry.CurrentUser.OpenSubKey(path, true);
key.DeleteValue("MyApplication", false);

此示例代码针对 WinForms 应用程序进行了测试。如果您需要确定 WPF 应用程序的可执行文件的路径,请尝试以下操作。

string path = System.Reflection.Assembly.GetExecutingAssembly().Location;

只需将“Application.ExecutablePath.ToString()”替换为可执行文件的路径即可。

【讨论】:

  • Application 没有 ExecutablePath。
  • 此示例代码适用于 Windows 窗体应用程序。对于 WPF 应用程序,您需要以不同的方式获取可执行文件的路径。
  • 有效!如果我想删除这种行为,我必须删除密钥吗?你能告诉我怎么做吗?
  • Idd,您只需删除密钥。我已经在我的答案中包含了这个。
  • WPF 应用程序需要在哪里编写此代码?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-06
相关资源
最近更新 更多