
我運行的是 Windows 7 64 位元。當我關閉電腦時,桌面上會打開許多程式。當我啟動電腦時,我希望這些程式自動開啟。我知道 SaveMyCache,這要求我每次關閉電腦時都勾選複選框,我想要一些自動的東西。
答案1
接近您所要求的內容:在電源管理中啟用休眠功能,而不是關閉您的電腦,而是使用休眠選項。這會關閉電腦的電源並將電腦恢復到關閉系統時的狀態。
除此之外,沒有任何內建功能可以滿足您的要求。 Windows 重新啟動管理器是為此類情況建立的,但軟體需要支援它,並且通常僅在安裝新軟體或安裝更新時使用。
答案2
所以我決定要建立這個 Powershell 腳本。
執行的操作:
- 刪除先前的檔案。
- 檢查正在運行的進程。
- 按包含特定單字的路徑過濾清單(程式)假設所有程式都安裝在程式檔案或者程序文件(x86)
- 取得找到的進程的可執行檔的絕對路徑
- 將路徑寫入暫存目錄中的暫存檔案。
- 將暫存檔案移到目標目錄,即使用者的啟動資料夾。
優點:
- 使用 powershell 編寫,因此程式碼是本機的,並且應該可以在 Windows Vista 及更高版本中運行。
- 作品。
缺點:
安裝在其他路徑(而不是程式檔案下)的程式將不會在此版本中被擷取。這當然是避免啟動本機 Windows 進程(如 explorer.exe 等)所必需的。但是,如果您有一個類似
D:\Apps
安裝程式的路徑 ,則可以修改該行$_.Path - 符合“程式”
到
$.Path - 符合「程式」 - 或 $.Path - 匹配“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
只需複製此程式碼並將其貼上到桌面上的文件中即可。儲存並關閉該文件。現在建立第二個檔案shutdown.bat
並放入程式碼
powershell shutdown.ps1
shutdown -s -t 1
在這個文件中。儲存並關閉 bat 檔案。現在您可以將這兩個檔案移至首選目錄。之後,您可以點擊Right Mouse Buttonbat 檔案並建立該檔案的捷徑。Right Mouse Button然後單擊捷徑這次並選擇固定到開始功能表。這會將快捷方式新增至您的「開始」功能表。
現在每次當您想要關閉電腦並儲存正在執行的程式以便開機後自動啟動時,您都可以使用此捷徑。
編輯-包括命令列參數
由於您還想保存進程命令列參數,因此必須將填充數組和建立文件部分變更為:
# 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
}
變化在於現在使用 WMI 而不是 get-process。另外,這次必須省略引號。
注意
如果執行腳本時發生錯誤,則可能是 powershell 的執行策略設定不正確。若要變更此設置,您必須以管理員身分開啟 powershell 控制台,然後在要求確認時輸入Set-ExecutionPolicy Unrestricted
並輸入。Y
就是這樣。應該可以正常工作。
答案3
另一種選擇是將要啟動的軟體連結拉到「開始」功能表中的「啟動」資料夾中 - 雖然速度較慢,但可以使用。但它不會打開“以前”打開的程序,而只是打開一組預設。