Windows 7에서 작업 스케줄러를 사용하여 안전한 USB 자동 실행이 가능합니까?

Windows 7에서 작업 스케줄러를 사용하여 안전한 USB 자동 실행이 가능합니까?

나는 그것을 발견했다Windows 7에서는 USB 드라이브의 자동 실행을 허용하지 않습니다..

USB 드라이브를 삽입할 때 실행되는 작업 스케줄러로 작업을 설정하여 이를 (안전한 방법으로) 피할 수 있습니까? 얼핏 보면 이벤트 뷰어로 관련 이벤트를 찾을 수 없었습니다.

답변1

저도 귀하와 같은 질문을 갖고 있었고 Scripting Guy 블로그의 기술을 사용하여 powershell(Windows 내장 스크립팅)로 문제를 해결했습니다.여기그리고여기. 스크립트는 백그라운드 프로세스로 지속적으로 실행되며 작업 스케줄러를 사용하여 시스템 로그온 시 시작할 수 있습니다. 새 드라이브를 연결한 다음 작업을 수행할 때마다 스크립트에 알림이 표시됩니다(여기에서는 작업이 아닌 스크립트를 구성합니다). 다음 연결 드라이브를 기다리는 동안 기본적으로 일시 중지되므로 많은 리소스를 차지해서는 안 됩니다. 내가 간다:

1) 시작 메뉴의 액세서리/Windows Powershell 아래에서 찾을 수 있는 Powershell ISE를 시작합니다.

2) 다음을 Powershell에 복사하여 붙여넣습니다.

#-버전 2.0 필요
레지스터-WmiEvent -클래스 win32_VolumeChangeEvent -SourceIdentifier VolumeChange
write-host (get-date -format s) " 스크립트 시작 중..."
하다{
  $newEvent = 대기 이벤트 -SourceIdentifier VolumeChange
  $eventType = $newEvent.SourceEventArgs.NewEvent.EventType
  $eventTypeName = 스위치($eventType)
    {
    1 {"구성이 변경되었습니다"}
    2 {"장치 도착"}
    3 {"장치 제거"}
    4 {"도킹"}
    }
  write-host (get-date -format s) " 이벤트 감지 = " $eventTypeName
  if ($eventType -eq 2)
  {
    $driveLetter = $newEvent.SourceEventArgs.NewEvent.DriveName
    $driveLabel = ([wmi]"Win32_LogicalDisk='$driveLetter'").VolumeName
    write-host (get-date -format s) " 드라이브 이름 = " $driveLetter
    write-host (get-date -format s) " 드라이브 레이블 = " $driveLabel
    # 드라이브가 지정된 조건과 일치하면 프로세스를 실행합니다.
    if ($driveLetter -eq 'Z:' -및 $driveLabel -eq '미러')
    {
        write-host (get-date -format s) " 3초 후에 작업 시작..."
     시작-수면 -초 3
        시작 프로세스 "Z:\sync.bat"
    }
  }
  제거 이벤트 -SourceIdentifier 볼륨 변경
} while (1-eq1) #다음 이벤트까지 반복
Unregister-Event -SourceIdentifier 볼륨 변경

3) 어떤 드라이브를 찾고 무엇을 실행할지 스크립트에 알려주려면 위의 스크립트를 수정해야 합니다. 변경할 두 줄은 다음과 같습니다.

  • if ($driveLetter -eq 'Z:' -and $driveLabel -eq 'Mirror')

    'Mirror'라는 이름의 USB 하드 드라이브가 Z: 드라이브로 설정되어 있습니다. if ($driveLabel -eq 'MyDiskLabel')편지에 신경 쓰지 않으면 그냥 사용할 수 있습니다 .

  • start-process "Z:\sync.bat"

    수행하려는 작업의 경로입니다. 내 예에서는 USB 드라이브에 3-4개의 백업 작업을 시작하는 배치 파일을 만들었지만 무엇이든 될 수 있습니다.

4) 완료되면 스크립트를 어딘가(확장자 .ps1)에 저장한 다음 작업 스케줄러에서 작업을 만들어 스크립트가 백그라운드에서 실행되도록 하세요. 내 모습은 다음과 같습니다.

  • 트리거: 로그온 시
  • 조치: 프로그램 시작
  • 프로그램/스크립트: powershell
  • 인수 추가: -ExecutionPolicy Unrestricted -File "D:\Stuff\Backup script.ps1"

5) 짜잔!

6) 추가 사항: 스크립트 창을 숨기려면 다음 인수를 사용하세요.

  • 인수 추가: -WindowStyle Hidden -ExecutionPolicy Unrestricted -File "D:\Stuff\Backup script.ps1"

스크립트 메시지를 로그 파일(스크립트가 시작될 때마다, 즉 로그온할 때 덮어쓰여짐)로 출력하려면 다음 작업 조치를 사용하십시오.

  • 프로그램/스크립트: cmd
  • 인수 추가: /c powershell -WindowStyle Hidden -ExecutionPolicy Unrestricted -File "D:\Stuff\Backup script.ps1" > "D:\Stuff\script log.txt"

실행 중인 숨겨진 스크립트를 종료하려면 언제든지 작업 관리자에서 "Powershell" 프로세스를 종료할 수 있습니다.

답변2

아니요. 작업 스케줄러를 사용할 수 없습니다.

USB 장치를 연결할 때 발생하는 유일한 기록된 이벤트는 '휴대용 장치 열거' 서비스를 시작하는 것입니다. 하지만 다음과 같은 경우 동일한 이벤트가 발생하기 때문에 작업 관리자에서는 사용할 수 없습니다.어느서비스가 시작되었습니다그리고중지되었습니다. (또한 장치를 연결할 때 서비스가 이미 실행 중이면 이벤트가 실행되지 않습니다.)

답변3

USB 안전하게 제거USB 장치를 삽입하면 프로그램을 시작할 수 있는 기능이 있습니다.

유사한 소프트웨어와 구별되는 또 다른 USB 안전 제거 기능은 장치를 연결한 후뿐만 아니라 제거하기 전에 모든 응용 프로그램을 시작한다는 것입니다. 자동 실행 기능을 사용하면 이동식 하드 드라이브를 분리하기 전에 데이터 백업을 설정하고, 펜 드라이브의 콘텐츠로 Total Commander를 실행하고, USB 미디어를 분리하기 전에 암호화된 TrueCrypt 드라이브를 자동으로 마운트 해제할 수 있습니다.

대체 텍스트

답변4

작업 스케줄러가 적절한 도구가 될 것이라고 생각하지 않습니다. 새로운 USB 장치가 추가될 때마다 응답할 무언가가 필요합니다. 이를 위해서는 새로운 USB 장치를 감지할 수 있는 특수 애플리케이션이 필요하므로 Windows 자동 실행 기능을 대체하게 됩니다.

네, 그러한 적용이 가능합니다. 하지만 만드는 것은 어려울 것입니다.

작업 스케줄러를 사용한다는 것은 자동 실행을 계속해서 계속해서 계속해서 계속해서 시작한다는 의미입니다. , 당신은 사진을 얻습니다) 다시. 자동 실행을 두 번 사용하는 것을 방지하는 메커니즘이 필요합니다. 그리고 자동 실행이 가능한지 여부를 감지하는 메커니즘이 필요합니다. 그렇지 않으면 지속적인 오류 메시지가 표시됩니다. 그것은 망치로 벽을 치고 그 사이에 못이 있기를 바라는 것과 같습니다. 스케줄러는 언제 시작하고 언제 중지해야 할지 알 수 없습니다.

관련 정보