이전에 열린 프로그램으로 Windows를 시작하십시오.


6

Windows 7 64 비트를 실행 중입니다. 컴퓨터를 종료하면 데스크탑에 많은 프로그램이 열려 있습니다. 컴퓨터를 시작할 때이 프로그램들이 자동으로 열리기를 원합니다. SaveMyCache를 알고 있습니다. 컴퓨터를 종료 할 때마다 상자를 선택해야합니다. 자동으로 무언가를 원합니다.


3
나는 Windows가 적어도 기본적으로 이와 비슷한 것을하지 않는다고 생각합니다. 최대 절전 모드 (프로그램이 종료되지 않음) 또는 Startup폴더 사용 (로그인시 다시 시작됨)을 고려 했습니까?
CVn

1
몇 가지 질문이 있습니다 : 재시작 후 일부 프로그램 내에서 열린 파일도이 프로그램에서 열리도록 이전 상태로 완전히 돌아가고 싶습니까? 아니면 이전에 사용한 프로그램을 간단히 시작 하시겠습니까? 두 번째는 종료 절차에 사용자 정의 바로 가기를 사용하려는 경우 수행 할 수 있습니다. 첫 번째는 대부분의 프로그램에서 실제로는 실제로는 거의 없습니다. 숭고한 텍스트는 이전에 사용 된 파일을 자동으로 열지 만 이는 예외이며 다소 드문 동작입니다.
mnmnc

내 해결책은 종료 절차를 수행하는 스크립트를 만드는 것입니다. 그러나 먼저 실행되고 사용자 계정으로 시작된 모든 프로그램을 나열하고 해당 실행 .bat파일 에 대한 경로 목록을 작성하여 사용자 의 시작 폴더에 배치 할 파일에 배치합니다. 이러한 작업이 끝나면 스크립트가 실행 shutdown -s -t 1되고 종료됩니다. 부팅 후 실행중인 모든 프로그램이 다시 시작됩니다.
mnmnc

@mnmnc 나는 단순히 파일이 아닌 프로그램을 열고 싶습니다. 프로그래밍 배경이 없으므로 "종료 절차에 대한 사용자 정의 바로 가기"를 어떻게 사용합니까?
Mowing Bar

@MowingBar 안녕하세요. 나는 당신을 위해 스크립트를 만들었습니다. 아래에서 내 대답을 볼 수 있습니다. 스크립트는 원하는 작업을 수행합니다. 실행중인 프로그램 목록을 저장하고 다음 부팅 후에 시작합니다.
mnmnc

답변:


9

요구 사항에 가장 가까운 것 : 전원 관리에서 최대 절전 모드를 활성화하고 PC를 종료하는 대신 최대 절전 모드 옵션을 사용하십시오. 이렇게하면 PC의 전원이 꺼지고 시스템을 끌 때의 상태로 PC가 복원됩니다.

그 외에는 원하는 기능을 수행하는 기본 제공 기능이 없습니다. Windows 재시작 관리자는 이와 같은 상황에서 작성되었지만 소프트웨어는이를 지원해야하며 이는 일반적으로 새 소프트웨어를 설치하거나 업데이트를 설치할 때만 사용됩니다.


2
방금 업데이트를 적용하거나 설치를 완료하기 위해 PC를 다시 부팅해야하는 경우 최대 절전 모드 대신 PC를 종료해야한다고 덧붙였습니다.
Nolonar

2

그래서 저는이 Powershell 스크립트를 만들기로 결정했습니다.

여기 Github 프로젝트 .

프로세스 인수를 캡처하는 버전도 있습니다.

수행 된 조치 :

  1. 이전 파일을 삭제하십시오.
  2. 실행중인 프로세스를 확인하십시오.
  3. 모든 프로그램이 프로그램 파일 또는 프로그램 파일 (x86)에 설치되어 있다고 가정하는 특정 단어 ( Program ) 가 포함 된 경로로 목록을 필터링하십시오.
  4. 발견 된 프로세스 실행 파일에 대한 절대 경로 확보
  5. temp 디렉토리에 temp 파일의 경로를 씁니다.
  6. 임시 파일을 사용자의 시작 폴더 인 대상 디렉토리로 이동하십시오.

장점 :

  • 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 UnrestrictedY나타나면 입력하고 입력 해야합니다. 그게 다야. 잘 작동합니다.


이것은 멋져 보인다. 그리고 나는 이것을 곧 시험해 볼 것이다. 이 (Get-Process) 프로세스 "D : \ path \ program.exe"만 캡처합니까 아니면 프로세스 전체 명령 줄 또는 명령 줄 인수도 캡처 할 수 있습니까?
Kevin Fegan

@KevinFegan 기본적으로 이것은 명령 줄 인수가 내가 아는 한 Process 객체의 일부가 아니기 때문에 캡처하지 않습니다. 그러나 Edit으로 내 대답확장 하고 명령 줄 인수캡처 하는 코드도 포함했습니다 . 내 측면에서 테스트했으며 정상적으로 작동합니다. 이것이 당신에게 효과가 있는지 알려주세요.
mnmnc

0

또 다른 옵션은 시작 메뉴의 '시작'폴더에서 시작하도록 소프트웨어 링크를 끌어 오는 것입니다. 느리지 만 작동합니다. '이전'열린 프로그램을 열지 않고 사전 설정 세트 만 엽니 다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.