Не удается заставить process.start () работать с UNC-путями в домене клиента - PullRequest
0 голосов
/ 17 ноября 2010

В приложении winforms я пытаюсь открыть документ, хранящийся на общем диске, доступ к которому имеет UNC. Он отлично работает в моей сети, но не работает в сети моего клиента. Если я проверяю, чтобы убедиться, что файл существует, он говорит, что он есть, но когда я пытаюсь открыть его, я получаю сообщение об ошибке, говорящее

System.ComponentModel.Win32Exception: Система не может найти файл указано в System.Diagnostics.Process.StartWithShellExecuteEx (ProcessStartInfo startInfo)

Вот код ...

// path = "\\server\folder with spaces\"
// fileName = "test.txt"

if (!System.IO.File.Exists(path + fileName)) {
  MessageBox.Show("The file " + fileName + " cannot be found.", "Remove File", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
  System.Diagnostics.Process myProcess = new System.Diagnostics.Process();
  myProcess.StartInfo.FileName = path + fileName;
  myProcess.Start();    // FAILS HERE WITH 'SYSTEM CANNOT FIND THE FILE SPECIFIED' ERROR ON CUSTOMER'S NETWORK, WORKS FINE ON MY NETWORK
}

Я перепробовал все возможные варианты StartInfo и не могу понять, почему он находит файл с System.IO.File.Exists(), но не находит его на process.Start();

Есть предложения?

Ответы [ 2 ]

0 голосов
/ 17 ноября 2010

Я не уверен, относится ли это к тому, что вы видите, но отметьте это , чтобы доверить долю. Соответствующая информация:

Поскольку сетевые ресурсы по умолчанию получают только разрешения LocalIntranet, довольно часто хочется использовать CasPol, чтобы полностью доверять некоторым акции, которые вы контролируете и знаете, безопасны. Тем не менее, синтаксис CasPol как бы то ни было, команда сделать это не сразу очевидна. Если бы я хотел доверять всему на общей папке \ ShawnFa-Srv \ Tools, Команда:

CasPol.exe -m -ag 1.2 -url файл: // \ ShawnFa-Srv / Tools / * FullTrust

Установил бы политику, чтобы делать то, что мне нужно. Давайте разберемся с этим Команда:

-m - изменить уровень политики политики. Это необходимо, поскольку на уровне машины находятся все политики по умолчанию. На NT Платформы это также уровень по умолчанию, с которым работает CasPol, однако в Win9x CasPol будет по умолчанию установлен на уровне пользователя, поэтому в командная строка явно указывает CasPol использовать правильный уровень.

-ag 1.2 - добавить кодовую группу в группу 1.2. В политике по умолчанию группа 1.2 является группой LocalIntranet, поэтому новая группа кода, которую мы создание будет проверено только в том случае, если файл поступил из интрасети.

-url file: // \ ShawnFa-Srv / Tools / * - Условие членства для новой группы кодов должно быть UrlMembershipCondition и должно соответствовать что-нибудь с URL, начинающимся с file: // ShawnFa-Srv / Tools, что означает что любой файл в общей папке \ ShawnFa-Srv \ Tools будет соответствовать этому коду группа.

FullTrust - набор разрешений для предоставления сборок, соответствующих кодовая группа. В этом случае FullTrust.

Обратите внимание, что .NET 3.5 SP1 исправлено это. Предполагается, что это только для исполняемых файлов .NET, запущенных из общего ресурса, но не помешает увидеть, поможет ли это вашей ситуации. Вэнс Моррисон заявляет:

Поэтому я советую вам загрузить пакет обновления .NET 3.5 SP1 . Это это очень низкий риск, обновление для среды выполнения. Как только вы это сделаете, вы получаете запуск сети бесплатно. Поскольку это сервисный пакет, вы также можно просто подождать и автоматически получить обновление в Следующие несколько недель через обновление Windows. Таким образом, если вы программное обеспечение довольно скоро, с большой вероятностью, ваши клиенты есть эта новая среда выполнения.

0 голосов
/ 17 ноября 2010

Итак, попытка доступа к файлу по UNC-пути не удалась.Переключение на использование отображенного пути сработало.Я ненавижу делать это таким образом, но отображение является частью корпоративной среды, поэтому я не думаю, что оно скоро изменится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...