我需要我的应用程序在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
文档可在此处找到