그래서 저는이 Powershell 스크립트를 만들기로 결정했습니다.
여기 Github 프로젝트 .
프로세스 인수를 캡처하는 버전도 있습니다.
수행 된 조치 :
- 이전 파일을 삭제하십시오.
- 실행중인 프로세스를 확인하십시오.
- 모든 프로그램이 프로그램 파일 또는 프로그램 파일 (x86)에 설치되어 있다고 가정하는 특정 단어 ( Program ) 가 포함 된 경로로 목록을 필터링하십시오.
- 발견 된 프로세스 실행 파일에 대한 절대 경로 확보
- temp 디렉토리에 temp 파일의 경로를 씁니다.
- 임시 파일을 사용자의 시작 폴더 인 대상 디렉토리로 이동하십시오.
장점 :
- powershell로 작성되었으므로 코드는 고유하며 Windows Vista 이상에서 작동해야합니다.
- 공장.
단점 :
프로그램 파일이 아닌 다른 경로에 설치된 프로그램은이 버전에서 선택되지 않습니다. 물론 explorer.exe 등과 같은 기본 Windows 프로세스가 시작되지 않도록해야합니다. 그러나 D:\Apps
프로그램을 설치하는 위치 와 같은 경로가 있으면
줄을 수정할 수 있습니다
$ _. Path-일치 "프로그램"
에
$ .Path -match "프로그램"또는 $ .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
Simpy는이 코드를 복사 shutdown.ps1
하여 데스크탑 의 파일 에 붙여 넣습니다 . 이 파일을 저장하고 닫습니다. 이제 두 번째 파일을 만들고 shutdown.bat
코드를 넣습니다.
powershell shutdown.ps1
shutdown -s -t 1
이 파일에서. 박쥐 파일을 저장하고 닫습니다. 이제 두 파일을 모두 원하는 디렉토리로 옮길 수 있습니다. 그런 다음 Right Mouse Button박쥐 파일을 클릭 하여이 파일에 대한 바로 가기를 만들 수 있습니다. 그런 다음에 클릭 Right Mouse ButtonA의 바로 가기 이 시간을 선택 시작 메뉴에 고정을 . 시작 메뉴에 바로 가기가 추가됩니다.
부팅 후 자동 시작을 위해 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
나타나면 입력하고 입력 해야합니다. 그게 다야. 잘 작동합니다.
Startup
폴더 사용 (로그인시 다시 시작됨)을 고려 했습니까?