3을 사용하지 않고이 IMO를 수행하는 유일한 방법 rd 타사 유틸리티 (예 : NirCmd 과 위즈모 ) via via VBScript 또는 PowerShell . 지금까지 본 모든 VBScript 솔루션은 오래된 Windows Media Player OCX를 사용합니다. WMP의 최신 버전에 유사한 기능을 가진 OCX가 포함되어 있는지 여부와 함께 비활성화 / 제거 여부 Windows 기능 어쨌든 스크립트의 기능을 방해 할 수 있습니다.
코드를 통해이 기능을 구현하는 일반적인 방법은 MCI (Media Control Interface) API (구체적으로 세트 명령 ). 그러나 VBScript 지원하지 않는다. 일반적인 Windows API 함수 또는 임의의 DLL에서 함수를 호출하여 PowerShell로 남겨 둡니다. 따라서 다음은 PS가 사전 설치된 Windows 7+ 및 PS를 설치 한 후에 XP / Vista에서 바로 사용할 수 있습니다. MCI DLL 즉, Windows \ System32 \ WinMM.dll은 XP +의 기본 설치의 일부로 사용할 수 있어야합니다.
1) 다음을 다음과 같이 저장하십시오. CD_Open.ps1 :
$cd = Add-Type -memberDefinition @"
[DllImport("winmm.dll", CharSet = CharSet.Ansi)] public static extern int mciSendStringA(string lpstrCommand, string lpstrReturnString, int uReturnLength, IntPtr hwndCallback);
"@ -passthru -name mciSendString
$cd::mciSendStringA('set cdaudio door open', $null, 0, 0);
2) 다음을 다음과 같이 저장하십시오. CD_Close.ps1 :
$cd = Add-Type -memberDefinition @"
[DllImport("winmm.dll", CharSet = CharSet.Ansi)] public static extern int mciSendStringA(string lpstrCommand, string lpstrReturnString, int uReturnLength, IntPtr hwndCallback);
"@ -passthru -name mciSendString
$cd::mciSendStringA("set cdaudio door closed", $null, 0, 0);
이제 문제가 생깁니다. 보안상의 이유로 기본적으로 서명되지 않은 PS 스크립트는 Windows에서 실행할 수 없습니다. 유형 get-help about_signing
PS 프롬프트에서 스크립트에 자체 서명하는 방법을 포함하여 자세한 내용을 알 수 있습니다.
다행히도 도움 받기 명령은 위의 상태 :
TO PERMIT SIGNED SCRIPTS TO RUN
-------------------------------
When you start Windows PowerShell on a computer for the first time, the
Restricted execution policy (the default) is likely to be in effect.
The Restricted policy does not permit any scripts to run.
To find the effective execution policy on your computer, type:
get-executionpolicy
To run unsigned scripts that you write on your local computer and signed
scripts from other users, use the following command to change the execution
policy on the computer to RemoteSigned:
set-executionpolicy remotesigned
For more information, see Set-ExecutionPolicy.
3) 그래서 높은 명령 프롬프트에서 다음 명령을 실행합니다.
powershell 집합 실행 정책 remotesigned
(당신은 powershell set-executionpolicy restricted
기본 설정으로 되돌립니다.)
이 명령은 한 x 만 실행해야하며 실행 정책을 다시 변경할 때까지 적용됩니다.
4) 이제 광학 드라이브 트레이를 열거 나 닫을 때 다음 명령을 사용할 수 있습니다 (승격되지 않은 명령 프롬프트에서도 가능).
powershell -file CD_Open.ps1
powershell -file CD_Close.ps1
물론 클릭 또는 키 조합을 사용하여 트레이를 열거 나 닫을 수있는 바로 가기도 만들 수 있습니다.
추가 할 수도 있습니다. 닫기 명령을 사용하여 다음 .REG 파일을 사용하여 광학 드라이브의 상황에 맞는 메뉴로 이동하십시오.
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\SystemFileAssociations\Drive.CDROM\shell]
@="none"
[HKEY_CLASSES_ROOT\SystemFileAssociations\Drive.CDROM\shell\closetray]
@="Close"
[HKEY_CLASSES_ROOT\SystemFileAssociations\Drive.CDROM\shell\closetray\command]
@="C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\Powershell.exe -windowstyle hidden -file I:\\CD_Close.ps1"
(필요에 따라 경로를 수정하십시오. -WindowStyle 매개 변수는 PS 2.0 이상에서만 사용할 수 있습니다.)