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