2012-09-18 3 views
-1

이벤트에서 사용자 정의 파일에 을 실행하는 CLI 프로그램을 작성하고 있습니다. 이 경우는 %PATH%이지만, File.Open()은 그렇지 않습니다.PATH 환경 변수가있는 File.Open()

기본적으로 프로그램이 실행되면 다양한 검사가 실행됩니다. 예외도 Process.Start()시 처리

try 
{ 
    fs = File.Open(Run, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); 
    Run = args[++i]; 
} 
catch(TheVariousExceptions){ .... } 
finally 
{ 
    if(fs != null) 
     fs.Close(); 
} 

,하지만 잠시 후까지 주장 될 수 없다 : 내가 원하는 검사 중 하나는이 파일이 존재하고 현재 사용자, ALA 열 수 있다는 것입니다 , 사용자가 프로그램을 구성하고 실행하도록 남겨 두었을 때. 먼저 위와 같은 검사를 실행하고 싶습니다. 문제는 %PATH%을 고려하지 않습니다.

아이디어가 있으십니까?

+0

경로에만 열 및 텍스트 파일/워드 문서/데이터베이스 등이 @bugfinder – BugFinder

+0

는 '실행 파일'입니다 ... 보통 .EXE와 같은 읽을 수없는 파일, 실행 파일에 적용 . 어쩌면 때때로 .bat –

+0

어쩌면 코드가 더 필요 하겠지만 file.open은 텍스트 파일 등의 파일을 여는 것입니다. – BugFinder

답변

0

내가 관리하는 방법입니다.

static Process TestProc = new Process(); 
static ProcessStartInfo TestProcStart = new ProcessStartInfo(); 
try 
{ 
    TestProcStart.WindowStyle = ProcessWindowStyle.Hidden; 
    TestProcStart.FileName = args[++i]; 
    TestProc.StartInfo = TestProcStart; 
    TestProc.Start(); 
    TestProc.Kill(); 
    Run = args[i]; 
} 
catch(Win32Exception e) 
{ 
    switch(e.NativeErrorCode) 
    { 
     case 2: Console.WriteLine("ERROR: File " + args[i] + " not found!"); return; 
     case 5: Console.WriteLine("ERROR: Access denied to " + args[i] + "!"); return; 
     default: Console.WriteLine("ERROR " + e.NativeErrorCode + ": " + e.Message); return; 
    } 
} 
0

수동으로해야한다고 생각합니다.

Environment.GetEnvironmentVariable을 사용하여 PATH을 검색 할 수 있습니다. 그런 다음 ; 초로 분할하고 결과를 List에 보관합니다. 그런 다음 파일 이름이 각 경로에 Combine 있어야하고 생성 된 각 조합에 대한 File.Open 검사를 수행하십시오.

이 체크를 할 가치가 있습니까?

관련 문제