Windows에서 광학 드라이브 트레이를 닫는 방법?


6

나는 항상 Windows가 왜 그런지 궁금해했습니다. 꺼내기 옵션에는 해당 옵션이 포함되지 않습니다. 트레이 닫기 / 닫기 광학 드라이브의 상황에 맞는 메뉴에서 옵션을 선택하십시오.

광학 드라이브 트레이를 닫을 수있는 방법이 있습니까? 없이 Windows에서 타사 소프트웨어 사용?


1
컴퓨터에 원격으로 액세스하는 경우이 옵션을 원하셨습니까?
Christopher Chipps

3
@ChristopherChipps 그는 원격으로 CD를 트레이에 넣을 예정입니까?
cutrightjm

1
Touche @ekaj. 물론, 사용자가 트레이를 열 필요가 심각하게 자신을 열 수 없습니다. 어떤 경우에는 이것이 필요합니다. 나는 확신 할 수 없습니다.
Christopher Chipps

2
트레이가 자동으로 수축 할 수 없으므로 노트북 광학 드라이브를 밀어야합니다 (대부분은 아닐지라도 대부분). 나는 그들이 어떻게해서든지 자동 트레이 수축을 지원하는지 여부를 알리는 드라이브를 광고하게 만들 수 있었고 운영 체제가 이것을 기반으로 Close 옵션을 표시하거나 숨길 수 있었지만 실제로는 너무 많은 시간과 리소스가 무언가에 소비되었을 것입니다. 너무 사소하고 거의 쓸모가 없습니다.
Karan

2
+1 질문. @ekaj는 원격으로 디스크 트레이를 닫아야하는 경우는 드물지만 그러한 기능이 편리한 경우가 있습니다. 필자는 클라이언트 용 CD를 원격으로 제작했으며 레코딩 소프트웨어가 디스크를 자동으로 꺼내었지만 레코딩이 성공적인지 확인하려고했습니다. 집에서, 리눅스 서버에서 비디오 립의 인코딩에 만족하지 않는다면, 다음과 같이 입력 할 수 있습니다. eject -t 내 랩톱에서 가져온 다음 트레이를 수동으로 닫으려면 서버 실에 걸어 가지 않아도 다시 인코딩 할 수 있습니다. 약간의 편의는 있지만, 아마도 아래 표와 같이 불합리하지는 않습니다.
jthetzel

답변:


11

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

물론 클릭 또는 키 조합을 사용하여 트레이를 열거 나 닫을 수있는 바로 가기도 만들 수 있습니다.

CD Tray Shortcuts

추가 할 수도 있습니다. 닫기 명령을 사용하여 다음 .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 이상에서만 사용할 수 있습니다.)


2
PowerShell 스크립트를 +1하고 레지스트리 아이디어를 다시 +1합니다.
palswim

업데이트 중 하나를 사용하여 Windows 10에서 내 Drive.CDROM 키를 레지스트리에서 가져옵니다. 나는 그것을 다시 SystemFileAssociations 이 솔루션은 여전히 ​​작동합니다.
palswim

4

이리 예입니다. 이리 C #에서의 구현입니다 (DLL이 필요할 수도 있고 2 개가 필요할 수도 있음).

그들 중 많은 수가 있으므로, 당신을 위해 일하지 않으면 다른 사람을 시도하십시오.


글쎄, 나는 수색을했다. 그러나 뭔가를 다운로드하는 것 이외에 찾을 수 없습니다. 커맨드 라인 것은 유용합니다, 고마워요.
Reza M.

2

나는 나 자신을 시도하지 않았지만 이것이 도움이 될지도 모른다. 링크
하지만 당신은 dll을 다운로드해야한다.
다음은 C 소스 코드를 직접 컴파일하려는 경우 수행 할 작업이지만 CD 드라이브의 Windows 탐색기 오른쪽 클릭 메뉴에 컴파일 된 프로그램을 통합하는 방법을 찾아야합니다 C 코드


링크 할 CDR 프로그램에는 C 소스 코드 외에 실행 파일이 포함됩니다. 명령 행에서, CDR close D: 디스크 트레이를 원격으로 닫아야하는 문제를 해결했습니다.
jthetzel

0

그럴 수 있습니다. Eject 버튼은 원래 하드웨어 오류가 발생하여 하드웨어 버튼이 더 이상 응답하지 않는 경우를 위해 설계되었습니다.

다른 한편으로는 일반적으로 드라이브를 밀어 넣는 것만으로 닫을 수 있습니다. 아마도 클로즈를 추가하지 않은 이유 일 수 있습니다.

또한 꺼내기는 가상 / 장착 된 드라이브 (Mac dmg, 장착 된 드라이브), USB 드라이브 (안전하게 제거 할 수있는 드라이브 등)에서 잘 작동합니다.


허, 하드웨어 고장 부분에 대한 좋은 지적. 그것에 대해 생각하지 않을 것입니다. 원래 디자인 / 목표가 더 이상 적용되지 않지만 계속 유지되는 경우가 많다는 사실을 알 수있었습니다.
Reza M.

0

리눅스에서 (따라서 OSX와 BSD, UNIX 등에서) "거기에 맞는 앱이있다":

eject -t

0

실행중인 Windows의 버전을 지정하지 않았습니다. 방금 Windows 2000 시스템에서 CD 플레이어 프로그램 (시작 & gt; 보조 프로그램 & 엔터테인먼트) 아래에 꺼내기 버튼이 있습니다. 해당 배출 버튼을 클릭하면 트레이가 닫혀있는 경우 트레이가 열리고 트레이가 열려 있으면 트레이가 닫힙니다.


0

다른 방법이 있습니다. Windows Media Player (최소 12 개)에서 맨 위를 클릭하고 재생, 다음 꺼내기를 클릭하여 드라이브를 선택할 수 있습니다. 이미 배출되면 아무 일도 일어나지 않을 것입니다. 그럼 다시해라. 그러면 드라이브를 닫아야한다. :)

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