2010-01-13 6 views
1

Winform 앱은 Main.exe와 Launcher.exe로 구성됩니다. Launcher 응용 프로그램의 목적은 Main.exe의 업데이트 된 버전을 확인하는 것입니다."내"네임 스페이스를 사용할 수없는 이유는 무엇입니까?

그것은 System.Diagnostics.Process.Start가 Main.exe를 같은 방법으로 업데이 트 위치에 복사합니다 새 Main.exe를 발견하고 실행하면

(사용 Main.exe를를 시작에는 업데이트를 찾지 못하면 이 경우 Main.exe의 새로운 사본이됩니다).

Dim p As New ProcessStartInfo 
p.FileName = "Main.exe" 
p.WindowStyle = ProcessWindowStyle.Normal 
Process.Start(p) 

이 코드가 갱신되어 항상 성공적으로 Main.exe를을 발사인지 여부를 실행합니다

다음은 Process.Start를 코드입니다.

그러나 우리 Main.exe를, 그것은 처음 (예. 갱신 후) 등 My.Computer.FileSystem을

My.Settings 나, 내 네임 스페이스를 참조하는 모든 줄에 오류가 발생하지에 대한 실행중인 않다면 이 라인은 에러가 발생합니다 예를 들어

: 여기

Msgbox(My.Computer.FileSystem.SpecialDirectories.Desktop) 

오류입니다 :

System.IO.DirectoryNotFoundException: Could not find special directory 'Desktop'. at Microsoft.VisualBasic.FileIO.SpecialDirectories.GetDirectoryPath(String Directory, String DirectoryNameResID) at Microsoft.VisualBasic.FileIO.SpecialDirectories.get_Desktop() at Microsoft.VisualBasic.MyServices.SpecialDirectoriesProxy.get_Desktop()

그러나이 예는 데스크톱을 참조하면서이 중 하나를 찾을 수없는 기억 특별 디렉토리. 데스크톱에만 국한되지 않습니다.

처음 실행될 때 (즉, 업데이트 직후). 그 후에는 잘 돌아갑니다.

프로세스가 더 이상 실패한 경우 파일 시스템 문제, 잠금 또는 스레드와 관련하여 더 쉽게 이해할 수 있습니다. 그러나 왜 My namespace에 대한이 "사소한"문제가 있습니까?

+1

어떤 오류가 발생합니까? – SLaks

+0

Q에 예제 오류를 추가했습니다. – hawbsl

답변

2

나는 심하게 구현 System.Security.Principal.WindowsImpersonationContext 함께 할 수있는 복사 된 파일과는 아무 모든 것이 없었다 지금 알고 있습니다.

게시 후 5 분이 지나면 이러한 것들이 어떻게 지워지는지 깜짝 놀라게합니다.

관련 문제