如何允许我的应用程序在Windows启动时运行(或者更好的是,用户登录),而不会被vista/7阻止



我需要我的应用程序在windows启动时运行。我总是在WindowsXP上使用注册表来做这件事,但这样我就被vista/7屏蔽了。

我该如何避免这种情况?我只能考虑在启动文件夹中写一个快捷方式,但我不知道如何写,也不确定它是否有效。

有什么准则可以让我的应用程序在没有任何与UAC相关的问题的情况下运行吗?在这种情况下与windows启动特别相关

非常感谢任何答案

注意:这是一个WPF应用程序

不知道你对Vista/Windows7的意思,但我在WPF应用程序中使用了以下代码,它在XP/Vista/Win7上工作。

 void InstallMeOnStartUp()
 {
      try
      {
          Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
          Assembly curAssembly = Assembly.GetExecutingAssembly();
          key.SetValue(curAssembly.GetName().Name, curAssembly.Location);
      }
      catch{ 
      }
 }

如果这不是你想要的,请告诉我。

您可以在启动文件夹中放置一个快捷方式。

在C#中,可以使用找到该位置

Environment.SpecialFolder.CommonStartup (all users)
Environment.SpecialFolder.Startup       (current user)

对于C#之外的人来说,这是一篇很好的文章:

驯服所有用户桌面和开始菜单

您可以创建一个在用户登录时运行的计划任务,该任务将启动您的应用程序。

如果在应用程序中执行此操作不是强制性的,则Inno Setup可以在Windows启动时配置运行。

以下是如何编辑setup.iss文件

[Tasks]
...
Name: startup; Description: "Automatically start on login"; GroupDescription: "{cm:AdditionalIcons}"
[Icons]
....
Name: "{userstartup}{#MyAppName}"; Filename: "{app}{#MyAppExeName}"; Tasks: startup

文档可在此处找到

最新更新