0
我想讓我的應用程序在用戶登錄(系統啓動)時啓動。 我發現了這樣的解決方案:Windows使應用程序在系統啓動時運行(用戶登錄)
app.manifest
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
PreferencesWindows.xaml.cs
if (ServerSettings.ShouldApplicationAutostart)
{
SystemStartupService.AddThisAppToCurrentUserStartup();
} else
{
SystemStartupService.DeleteThisAppFromCurrentUserStartup();
}
SystemStartupService.cs
public static void AddThisAppToCurrentUserStartup()
{
AddAppToCurrentUserStartup(Assembly.GetExecutingAssembly().GetName().Name,
Assembly.GetExecutingAssembly().Location, true);
}
public static void AddAppToCurrentUserStartup(string appName, string appPath, bool asBackground) {
using (RegistryKey registryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true))
{
registryKey.SetValue(appName, "\"" + appPath + "\"" + (asBackground ? " /background" : ""));
}
}
public static void DeleteThisAppFromCurrentUserStartup()
{
DeleteAppFromCurrentUserStartup(Assembly.GetExecutingAssembly().GetName().Name);
}
public static void DeleteAppFromCurrentUserStartup(string appName)
{
using (RegistryKey registryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true))
{
registryKey.DeleteValue(appName, false);
}
}
問題是此解決方案不適用於我的應用程序,我不知道爲什麼。上面的代碼成功添加條目註冊表和系統配置>啓動
如果它的事項,這是在通知試運行簡單的WPF應用程序。
問題:應用程序無法在用戶登錄時啓動!
我想你的appPath是錯誤的。 –
不,這是正確的,當我複製粘貼它指向與.exe文件的目錄。我認爲也許有調試版本的問題,所以我發佈並將其複製到Program Files,並且它也不起作用 –
如果您將正確的文本放入註冊表項中,此工作方式無需任何代碼,因此您唯一可以做錯了就是路徑錯誤或文件無法訪問。 –