以前開いたプログラムでWindowsを起動する

以前開いたプログラムでWindowsを起動する

私は Windows 7 64 ビットを使用しています。コンピューターをシャットダウンすると、デスクトップに多くのプログラムが開きます。コンピューターを起動すると、これらのプログラムが自動的に開くようにしたいです。SaveMyCache については知っていますが、コンピューターをシャットダウンするたびにボックスにチェックマークを付ける必要があります。自動化したいです。

答え1

質問に近いものは次のとおりです。電源管理で休止状態を有効にし、PC をシャットダウンする代わりに休止状態オプションを使用します。これにより、PC の電源がオフになり、システムの電源をオフにしたときの状態に PC が復元されます。

それ以外に、あなたが求めている機能を実行する組み込み機能はありません。Windows 再起動マネージャーはこのような状況のために作成されましたが、ソフトウェアがそれをサポートする必要があり、これは通常、新しいソフトウェアをインストールするとき、または更新プログラムをインストールするときにのみ使用されます。

答え2

そこで、この Powershell スクリプトを作成することにしました。

Githubプロジェクトはこちら

プロセス引数もキャプチャするバージョン。

実行されたアクション:

  1. 以前のファイルを削除します。
  2. 実行中のプロセスを確認します。
  3. 特定の単語を含むパスでリストをフィルタリングします(プログラム)は、すべてのプログラムがプログラムファイルまたはプログラムファイル(x86)
  4. 見つかったプロセスの実行可能ファイルへの絶対パスを取得します
  5. 一時ディレクトリ内の一時ファイルへのパスを書き込みます。
  6. 一時ファイルをユーザーのスタートアップ フォルダーにある宛先ディレクトリに移動します。

長所:

  • PowerShell で記述されているため、コードはネイティブであり、Windows Vista 以降で動作するはずです。
  • 動作します。

短所:

  • プログラムファイル下ではない別のパスにインストールされたプログラムは、このバージョンでは取得されません。これは、explorer.exeなどのネイティブWindowsプロセスの開始を避けるために必要です。ただし、 D:\Appsプログラムもインストールするパスがある場合は、次の行を変更できます。

    $_.Path -match "プログラム"

    $.Path -match "Program" -または$.Path -match "D:\Apps"

    そしてそれはすべて同じように動作します。

スクリプトコードは次のようになります。

###############################
# AUTOMATIC STARTUP GENERATOR #
# ASGEN v.1.0 by mnmnc @ 2014 # 
###############################

# VARIABLES

    # CURRENT PATH
    $current = $(pwd).ToString()

    # DESTINATION PATH
    $destination_path = "$env:userprofile\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\programs.bat"

# MOVING TO TEMP    
cd $env:systemroot\Temp

# REMOVING OLD FILE
del $destination_path

# EMPTY ARRAYS
$arr_names = @()
$arr_paths = @()

# FILLING ARRAYS
Get-Process | Where-Object {$_.Path -match "Program" } | foreach { $arr_names += $_.Name; $arr_paths += $_.Path }

# CREATING FILE
for($i = 0; $i -le $arr_names.count -1; $i++) 
{ 
    $out = "`"" + $arr_paths[$i] + "`""
    write-output $out | out-file "programs.bat" -append -Encoding ascii
}

# INFO
Write-host "`nFolowwing programs will be started on next boot:`n"
cat programs.bat
Write-host "`n"

# MOVING TO STARTUP FOLDER
mv programs.bat "$destination_path"

# RETURNING
cd $current

exit

shutdown.ps1このコードをコピーしてデスクトップのファイルに貼り付けます。このファイルを保存して閉じます。次に2つ目のファイルを作成しshutdown.bat、コードを貼り付けます。

powershell shutdown.ps1
shutdown -s -t 1

このファイルで、batファイルを保存して閉じます。これで両方のファイルを任意のディレクトリに移動できます。その後、Right Mouse Buttonbatファイルをクリックしてこのファイルへのショートカットを作成できます。次にRight Mouse Buttonショートカット今回は選択してスタートメニューにピン止めするこれにより、スタート メニューにショートカットが追加されます。

これで、PC を閉じて起動後に実行中のプログラムを保存し、自動的に起動するたびに、このショートカットを使用できるようになります。


編集-コマンドライン引数を含める

プロセスのコマンドライン引数も保存したいので、配列の入力とファイルの作成のセクションを次のように変更する必要があります。

# FILLING ARRAYS
Get-WmiObject Win32_Process | Where-Object { $_.Path -match "Program" } | foreach { $arr_names += $_.Name; $arr_paths += $_.CommandLine;  }

# CREATING FILE
for($i = 0; $i -le $arr_names.count -1; $i++) 
{ 
    $out =  $arr_paths[$i] 
    write-output $out | out-file "programs.bat" -append -Encoding ascii
}

変更点は、get-process の代わりに WMI を使用することです。また、今回は引用符を省略する必要があります。


知らせ

スクリプトの実行時にエラーが発生した場合は、PowerShell の実行ポリシーの設定が間違っている可能性があります。これを変更するには、管理者として PowerShell コンソールを開き、入力して、確認を求められたらSet-ExecutionPolicy Unrestricted入力します。これで完了です。問題なく動作するはずです。Y

答え3

もう 1 つのオプションは、起動するソフトウェアへのリンクをスタート メニューの [スタートアップ] フォルダーに取り込むことです。これは遅いですが機能します。ただし、以前に開いたプログラムは開かれず、プリセット セットのみが開きます。

関連情報