2013-08-23 1 views
1

У меня есть приложение Windows в VS2010 с использованием VB.NET и .NET 3.5. Он бесформен и очень прост, он «запустит» содержимое буфера обмена, считая его строкой. Обратите внимание, что это не ASP.NET и не имеет ничего общего с веб-приложением.System.Diagnostics.Process не удалось запустить файл с Mapped Drive в приложении Windows Form

Вот сердце код:

Dim proc As New Process() 
proc.StartInfo.FileName = strClipboard 
proc.StartInfo.UseShellExecute = True 
proc.StartInfo.CreateNoWindow = True 
proc.Start() 

В течение многих лет он работал просто отлично. Если у пользователя есть путь к файлу, скажем, «c: \ temp \ file.txt», сохраненный в виде строки в системном буфере обмена, они могут запускать это приложение (напр., Назначив его кнопке мыши), и это будет похоже на Пуск> Выполнить, вставить текст и нажать Enter.

Недавно что-то изменилось с нашими системами. Не уверен, что, но я подозреваю, что он имеет что-то со всеми нашими новыми конфигурациями серверов, изменяющими и/или групповыми политиками, потому что теперь он не будет работать на любом подключенном диске.

Например, это работает просто отлично:

C:\Temp\test.txt 

, но не так:

L:\Temp\test.txt 

с L быть Подключенный диск на нашем локальном файловом сервере. Ошибка, которую я получаю от исключения, просто состоит в том, что она не может найти файл:

System.ComponentModel.Win32Exception was caught 
    ErrorCode=-2147467259 
    Message=The system cannot find the path specified 
    NativeErrorCode=3 
    Source=System 
    StackTrace: 
     at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo) 
     at VS10_Launch_Clipboard.Launch_Clipboard.Main() in C:\Users\user\Documents\Visual Studio 2010\Projects\VS10_Launch_Clipboard\VS10_Launch_Clipboard\Module1.vb:line 21 
    InnerException: 

Любые идеи?

Благодаря

Эрни

+1

Попробуйте \\ 000.000.00.00 \ temp \ test.txt. Я имею в виду попытку с IP. Или имя сервера \\ myserver \\ test.txt –

+0

Отображения дисков являются собственностью каждого пользователя. Поэтому, если он был помещен в буфер обмена процессом, а не запущен с другой учетной записью пользователя, у вас возникнет проблема. –

+0

@kostasch. Хорошее предложение спасибо. Это действительно работает, если я выполняю полный UNC, поэтому это работает: \\ fsservername \ Data \ Temp \ test.txt, но L: \ Temp \ test.txt НЕ ИМЕЕТ, что если я затем скопирую/вставлю эту точную строку в start> run он работает нормально (все это делается на моей машине с сохранением EXE на моем диске c). – Ernie

ответ

1

Я проверил ваш код и он работает нормально для меня. Единственный способ, которым я мог воспроизвести вашу ошибку, - запустить ее с помощью unmapped-диска (изменен на z: \ text.txt, который не отображается).

Убедитесь, что компьютер RUNNING программы имеет указанный сопоставленный диск на своем компьютере. Просто потому, что программа может находиться на сервере, а сервер имеет необходимые подключенные диски, не означает, что клиенты, запускающие программу, имеют одинаковые подключенные диски.

+0

Спасибо Николаю. Это ВСЕ работает на моей локальной машине с EXE на моем жестком диске. Единственный раз, когда файловый сервер вступает в игру, я пытаюсь и строка, на которую он указывает, как «L: \ Temp \ test.txt». Все остальное на моем диске. – Ernie

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

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