C#のWinFormsプロジェクトで、Windowsのサインイン時にアプリが実行されるスタートアップを設定する場合の方法について備忘録的に投稿します。
スタートアップにショートカットを保存
Windowsのサインイン時に実行されるためのスタートップの仕組みは、レジストリやタスクスケジューラなどの複数の方法があります。
最も簡単なのはアプリのショートカットを所定のフォルダーに追加する方法です。
汎用化するために、こんな感じにクラス化してみました。
using System;
using System.IO;
using System.Reflection;
using IWshRuntimeLibrary;
// 参照追加が必要(Windows Script Host Object Model)
namespace Sample
{
internal class WinAppStartUp
{
private readonly string _appName;
private readonly string _exePath;
private readonly string _shortcutPath;
public WinAppStartUp(string? appName = null)
{
_exePath = Application.ExecutablePath;
_appName = appName ?? Path.GetFileNameWithoutExtension(_exePath);
string startupDir = Environment.GetFolderPath(Environment.SpecialFolder.Startup);
_shortcutPath = Path.Combine(startupDir, _appName + ".lnk");
}
/// <summary>
/// スタートアップ登録状態の確認
/// </summary>
public bool IsStartUp()
{
if (!System.IO.File.Exists(_shortcutPath))
{
return false;
}
try
{
var shell = new WshShell();
var shortcut = (IWshShortcut)shell.CreateShortcut(_shortcutPath);
return string.Equals(
shortcut.TargetPath,
_exePath,
StringComparison.OrdinalIgnoreCase);
}
catch
{
return false;
}
}
/// <summary>
/// スタートアップ登録・解除
/// </summary>
/// <param name="enable">true:登録 / false:解除</param>
/// <returns>true:成功 / false:失敗</returns>
public bool SetStartUp(bool enable)
{
try
{
if (enable)
{
var shell = new WshShell();
var shortcut = (IWshShortcut)shell.CreateShortcut(_shortcutPath);
shortcut.TargetPath = _exePath;
shortcut.WorkingDirectory = Path.GetDirectoryName(_exePath);
shortcut.Description = _appName;
shortcut.Save();
}
else
{
if (System.IO.File.Exists(_shortcutPath))
{
System.IO.File.Delete(_shortcutPath);
}
}
return true;
}
catch
{
return false;
}
}
}
}
利用する場合は、クラスをインスタンス化して、IsStartUpプロシージャーで確認、SetStartUp プロシージャーでスタートアップフォルダーへのショートカットの追加と削除を行います。
var winappstartUp = new WinAppStartUp("アプリ名");
bool isStartUp = winappstartUp.IsStartUp();
winappstartUp.SetStartUp(!isStartUp);
まとめ
今回は短い記事ですが、Windowsのサインイン時にアプリが実行されるスタートアップを設定する場合の方法について書きました。
Windowsのサインイン時に実行されるスタートアップは、レジストリやタスクスケジューラなど複数の方法が用意されていますが、所定のフォルダーにアプリへのショートカットを追加する方法が分かりやすく簡単です。
Windowsのサインイン時にアプリが実行されるスタートアップへの登録や解除をしたい人の参考になれば幸いです。
スポンサーリンク
最後までご覧いただき、ありがとうございます。
