2016-11-26 7 views
-2

안녕하세요, 제발 VB에서 파일을 여는 응용 프로그램을 만들고 있어요.다른 장치에서 VB 응용 프로그램을 실행하는 동안 Win32 예외

Public Class Form1 

Private Sub Form1_click(sender As Object, e As EventArgs) Handles MyClass.Click 
    Dim myProc As New System.Diagnostics.Process() 
    myProc.StartInfo.FileName = "E:\ex.txt" 'The file in a flash drive 
    myProc.Start() 
    Me.Hide() 
End Sub 
End Class 

것은 프로그램이 내가 다른 사무실을하려고 할 때, 그것은 그 예외를 제공, (나는 .NET 프레임 워크의 최신 버전이) 나를 위해 잘 작동하지만 것입니다 "시스템 : 여기에 내 코드입니다 .ComponentModel.Win32Exception 0x80004005 : 지정한 파일을 찾을 수 없습니다 ". 제발, 다른 장치 (x86 또는 x64, 최신 버전의 .net 프레임 워크 포함 여부)에서 어떻게 작동시킬 수 있습니까? 감사합니다.

UPDATE 1 : 나는 예외 코드 추가 : 0X80004005

업데이트를 2 : 예전 그냥 내 질문에 설명하기 때문에 난 그냥, 내 코드의 경로를 편집 할 수 있지만 그것은 듯 매우 나쁜 생각 이었으므로 방금 내 projet (E : \ ex.txt)에서 실제 경로로 경로를 수정했습니다.

+0

.. ? 또한 대상 컴퓨터에 .NET Framework가 설치되어 있는지 확인하십시오 .. .Net을 최신 .NET Framework 설치 방법에 대해 – MethodMan

+1

다른 모드 ('x86' 및'x64')로 컴파일/디버깅을 시도했는지 확인하십시오. 그게 효과가 있니? – devRicher

+0

1 헤더에 가져 오기가 없습니다. 2 잘 이해하지 못했습니다. 두 번째 요점은 3 - 제 질문입니다. .NET이 설치되지 않았거나 작동하지 않는 많은 장치에서 작동시키고 싶습니다. 존재하지 않습니다! –

답변

0

특히 이동식 저장소가있는 모든 컴퓨터에서 드라이브 문자가 항상 같지는 않습니다.
System.IO.DriveInfo.GetDrives는 모든 논리 드라이브에 대한 정보를 얻고 파일을 찾을 수 있습니다 :

또한 수동으로 프로젝트의 참조 노드에 해당 참조를 추가하는 등의 헤더보기에 수입 섹션을 무엇
For Each driveInfo In System.IO.DriveInfo.GetDrives ' loop all logical drives on the computer 

    If driveInfo.DriveType = System.IO.DriveType.Removable Then ' optional check if removable storage device 

     Dim fileInfos = driveInfo.RootDirectory.GetFiles("ex.txt") ' search for driveLetter:\ex.txt 

     If fileInfos.Length > 0 Then 

      System.Diagnostics.Process.Start(fileInfos(0).FullName) ' start the file 

      Exit For ' optional to leave the For loop 

     End If 
    End If 
Next 
+0

대답 해 주셔서 감사합니다. @Slai! 그것은 아주 잘 작동했습니다! 사실, 전체 문제는 파일 경로의 드라이브 문자에있었습니다! –