[vb.net] Проблема с Shell() на Висте

Тема в разделе ".NET", создана пользователем DDK, 2 мар 2008.

Статус темы:
Закрыта.
  1. DDK

    DDK Гость

    Приветствую, господа.

    Сейчас использую такой огород для запуска внешнего приложения:

    Код (Text):
    Dim s As Integer
    Try
    s = Shell(Application.StartupPath() + "\EUU_Vista.exe", AppWinStyle.NormalFocus)
    Catch ex As Exception
    Try
    s = Shell(Application.StartupPath() + "/EUU_Vista.exe", AppWinStyle.NormalFocus)
    Catch ex2 As Exception

    End Try
    End Try
    На XP работает всё в любых случаях замечательно. На Висте же возникает две проблемы:
    1) Так как по умолчанию StartupPath - это папка %TEMP%, а имена юзерских папок могут иногда содержать такие спецсимволы как ®, © и т.д., то в случае, когда в имени папки юзера содержится подобные знаки, Shell отвечает, что не может найти файл.
    2) Если в Висте включена её встроенная жесткая защита (которая еще спрашивает разрешения перед запуском кажлого файла), то огород мой успешно выполняется, моя программа закрывается с чувством выполненного долга, а вот желаемое быть вызванным внешнее приложение так и не запускается.

    Есть идеи ?

    Проблему со спец. символами в path решил так:
    Код (Text):
    s = Shell(Chr(34) + Application.StartupPath() + "/EUU_Vista.exe" + Chr(34), AppWinStyle.NormalFocus)
    (в кавычки путь взял)

    Втоаря проблема с защитой пока актуальна.
     
  2. Engler

    Engler Member

    Регистрация:
    1 июл 2006
    Сообщения:
    8
    Симпатии:
    0
  3. Pasha

    Pasha Гость

    DDK
    1. Используй System.Diagnostics.Process вместо Shell.
    1a. Используй Path.Combine() для построения пути.
    2. UAC в висте не "спрашивает разрешения перед запуском файла". Не глуши все исключения (Catch ex2 As Exception), а если глушишь - выводи ex2.ToString() на экран или в лог. И потом уже по тексту смотри что именно исправлять надо.
     
  4. DDK

    DDK Гость

    Спасибо, буду завтра разбираться и пробовать! Пролистав по-диагонали понял, что вроде то что надо.
     
Статус темы:
Закрыта.

Поделиться этой страницей