2010-11-28 7 views
0
명령 프롬프트를 열 윈도우 (cmd.exe를)에서

, 레지스트리 키를 시작 :cmd.exe를 문제를

HKLM \ 소프트웨어 \ 마이크로 소프트 \ 명령 프로세서
HKCU \ 소프트웨어 \ 마이크로 소프트 \ 명령을 프로세서

값이 "자동 실행"으로 검사됩니다. 발견되면 값에 명명 된 배치 파일이 실행되어 자동 실행과 유사한 기능을 제공합니다. 두 키에 모두 자동 실행 값이 있으면 둘 다 실행됩니다. 굉장해!

Process.Start을 사용하여 cmd.exe를 실행하고 자동 실행 동작이 발생하지 않습니다. 나의 현재 코드는 다음과 같습니다

private openShell(string folder) 
{ 
    ProcessStartInfo startInfo = new ProcessStartInfo() 
     { 
      FileName = Environment.GetEnvironmentVariable("COMSPEC") ?? "cmd.exe", 
      Arguments = "/k cd \"" + folder + "\"", 
      UseShellExecute = true 
     }; 

    try 
    { 
     using (var exeProcess = System.Diagnostics.Process.Start(startInfo)) 
     { 
      exeProcess.WaitForExit(); 
     } 
    } 
    catch 
    { 
     // Log error. 
    } 
} 

나는 또한 간단한 형태로 아래로 감소 시도했다 : 나는 (명령 창이 시작된다는 점에서) 완벽하게 일을하려고

System.Diagnostics.Process.Start("cmd.exe"); 

모든하지만, 자동 실행 행동은 결코 발생하지 않습니다.

+0

레지스트리를 확인하는 코드는 어디에 있습니까? – bitxwise

+0

작동 중입니다. 코드에서 아무런 문제가 발견되지 않았습니다. –

+0

"자동 실행"을 HKLM 키에만 넣었다면 문제가 가상화 일 수 있습니다. HKCU에 뭔가 넣었습니까? 또한 명령 프롬프트를 수동으로 실행하여 테스트 했습니까? 코드를 실행하는 방법 만 문제라는 것을 알고 계십니까? –

답변

2

찾았습니다. 문제는 Windows가 64 비트 버전의 운영 체제에서 레지스트리의 데이터를 저장 (및 검색)하는 방법에있었습니다. 내 코드는 괜찮 았어. article on MSDN에 대해 자세히 설명합니다. 64 비트 윈도우에서 레지스트리 엔트리 부분이 레지스트리 리다이렉터 사용 별도 논리 레지스트리보기로 32 비트 어플리케이션 및 64 비트 애플리케이션 별도로 저장된 매핑된다

: 해당 기사 응용 프로그램의 64 비트 버전은 32 비트 버전보다 다른 레지스트리 키와 값을 사용하기 때문에 레지스트리 이 반영됩니다. 리디렉션되지 않거나 반영된 레지스트리 키도 공유됩니다. 정말 내 염소를 얻을 무엇

HKLM\Software\Wow6432Node\Microsoft\Command Processor 

내가 전에이로 실행 한 것입니다 :

나를 위해이 솔루션은 아래 내 자동 실행 키를 추가하는 것이 었습니다. 나는 거의 레지스트리에 속지 않는다. 나는 그것에 대해 완전히 잊어 버렸다.

관련 문제