2016-11-26 9 views
-2

Добрый вечер, Прошу, я делаю приложение в VB, которое открывает файл. Вот мой код:Win32 Исключение при работе моего приложения VB на разных устройствах

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 Framework), но, когда я пытаюсь его в другом офисе, это дает, что исключение «System .ComponentModel.Win32Exception 0x80004005: система не может найти указанный файл ". Как я могу заставить его работать на другом устройстве (x86 или x64, с или без последней версии .NET Framework)? Спасибо.

UPDATE 1: Я добавил код исключения: 0x80004005

UPDATE 2: я просто редактировал путь в моем коде, так как старый был просто объяснить, на мой вопрос, но это казалось что это была очень плохая идея, поэтому я просто изменил путь к реальному пути в моем проекте (E: \ ex.txt)

+0

что делает ваш Imports раздел в виде заголовка, как и вы вручную добавив, что ссылку на узел References в проекте .. ? также убедитесь, что на целевом компьютере установлена ​​.NET Framework. google для установки последней .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 за ваш ответ! Это сработало очень хорошо! На самом деле вся проблема была в буквах диска на пути к файлу! –

 Смежные вопросы

  • Нет связанных вопросов^_^