Bar

PowerShell スタートアップ フォルダーにアプリケーションのショートカットを作成する

必要になったのでPowerShellを使ってスタートアップ フォルダーにアプリケーションのショートカットを作成するスクリプトを書いてみました。

スタートアップ フォルダーにアプリケーションのショートカットを作成する

function New-StartupApp{
    param(
        [switch]$CurrentUser,

        [parameter(mandatory)]
        [string]$LinkName,

        [parameter(mandatory)]
        [string]$ExeName,

        [parameter(mandatory)]
        [string]$IconName
    )

    # スタートアップ フォルダーを指定
    $Reg = "{0}:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
    if($CurrentUser -eq $true){
        $startupPath = $(Get-ItemProperty ($Reg -f "HKCU")).startup
    }
    else{
        $StartupPath = $(Get-ItemProperty ($Reg -f "HKLM")).'common startup'
    }

    # ショートカット先をチェック
    $ShortCutPath = "{0}\$linkName.lnk" -f $StartupPath

    if((Test-Path -Path $ShortCutPath) -eq $true){
        Write-Host "$LinkName.lnk Existed." -ForegroundColor Yellow
        return
    }

    # ショートカットを作る
    $WsShell = New-Object -ComObject WScript.Shell
    $ShortCut = $WsShell.CreateShortcut($shortCutPath)
    $ShortCut.TargetPath = $exeName
    $ShortCut.IconLocation = $iconName
    $ShortCut.Save()

    Write-Host "$linkName.lnk Created." -ForegroundColor Cyan
}

スクリプトの使い方

愛用しているフリーソフト「SoftTilt」のショートカットをスタートアップに登録するサンプルは以下の通りです。
Current Userのスタートアップを指定したい場合は-Currentuser スイッチをつけます。
New-StartupApp `
    -CurrentUser `
    -LinkName "SoftTilt" `
    -ExeName "C:\My Program\SoftTilt\SoftTilt.exe" `
    -IconName "C:\My Program\SoftTilt\SoftTilt.exe"

全ユーザーにしたい場合は-Currentuser スイッチを付けません。
New-StartupApp `
    -LinkName "SoftTilt" `
    -ExeName "C:\My Program\SoftTilt\SoftTilt.exe" `
    -IconName "C:\My Program\SoftTilt\SoftTilt.exe"