
Я использую Windows 7 64 бит. Когда я выключаю компьютер, на рабочем столе открывается много программ. Когда я включаю компьютер, я хочу, чтобы эти программы открывались автоматически. Я знаю о SaveMyCache, он требует от меня ставить галочки каждый раз, когда я выключаю компьютер, я хочу что-то автоматическое.
решение1
Что-то близкое к тому, о чем вы спрашиваете: включите спящий режим в управлении питанием и вместо выключения ПК используйте опцию спящего режима. Это отключит питание ПК и восстановит его в состояние, в котором он был, когда вы выключили систему.
Кроме этого, нет встроенной функции, которая делает то, о чем вы просите. Менеджер перезапуска Windows был создан для таких ситуаций, но программное обеспечение должно поддерживать это, и это обычно используется только при установке нового программного обеспечения или обновлений.
решение2
Поэтому я решил создать этот скрипт Powershell.
Версия с захватом аргументов процесса.
Выполненные действия:
- Удалить предыдущий файл.
- Проверьте запущенные процессы.
- Отфильтровать список по пути, содержащему определенное слово (Программа), который предполагает, что все программы установлены либо вПрограммные файлыилиФайлы программ(x86)
- Получить абсолютные пути к исполняемым файлам найденных процессов
- Запишите пути к временному файлу во временном каталоге.
- Переместите временный файл в целевой каталог, то есть в папку «Автозагрузка» пользователя.
Плюсы:
- Написано на PowerShell, поэтому код является родным и должен работать в Windows Vista и выше.
- Работает.
Минусы:
Программы, установленные по другому пути - не в program files - не будут подхвачены в этой версии. Это, конечно, необходимо, чтобы избежать запуска собственных процессов Windows, таких как explorer.exe и т. д. Однако, если у вас есть путь, по которому
D:\Apps
вы также устанавливаете программы, вы можете изменить строку$_.Path -match "Программа"
к
$.Path -соответствует "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
на рабочем столе. Сохраните и закройте этот файл. Теперь создайте второй файл 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
Другой вариант — перетащить ссылки на ПО для запуска в папку «Автозагрузка» в меню «Пуск» — это медленно, но работает. Но это не открывает «ранее» открытые программы, а только предустановленный набор.