2009-04-11 2 views
4

В моем коде я делатьFile.Exists on network == неправильно?

if (!File.Exists(getSomePath())) 
    { 
     MessageBox.Show("... existing" + " " + getSomePath()); 
     this.Close(); 
    } 

Я могу видеть getSomePath() правильно, но когда я открыть приложение в сети он говорит, оно не существует. Когда я копирую папку на свой локальный диск, она говорит, что она существует.

Что происходит?

+0

Просто уведомление из моего опыта: в случае, если ваш код выполняется в качестве службы Windows, помимо настройки безопасности & Sharing, вам также необходимо сделать учетную запись для входа в свой сервис (в services.msc). Эта учетная запись LogOn должна существовать как на вашем локальном компьютере, так и на удаленном компьютере и иметь тот же пароль. Если у вас есть пользователь домена, тогда все будет проще: просто дайте этому пользователю право доступа к обеим системам. –

ответ

1

Вы упомянули, что он работает нормально локально, но не тогда, когда вы запускаете его из сетевой папки. Имеет ли ваше приложение соответствующие разрешения безопасности для доступа к файловой системе? По умолчанию приложения, запущенные из сетевого ресурса, имеют уменьшенные разрешения безопасности.

2
+0

Из моего собственного тестирования это, похоже, не так. – Turnor

+0

что «похоже, не так»? –

+0

Когда вы запускаете приложение .NET из сетевого ресурса, а не из локального диска, оно выполняется в контексте безопасности этого общего ресурса, но это не значит, что C: \ относится к этому сетевому ресурсу. C: \ все еще относится к локальному диску. – Turnor

3

Если вы используете его из сетевой папки, то вам нужно будет иметь пользователям добавлять скомпилированную сборку как доверенный в .net. Способ сделать это - это «сильное именование» вашей сборки, и это надежное имя доверено на компьютере каждого пользователя.

Редактировать: Причина этого в безопасности, поэтому неосторожный пользователь не получает вирус, который запускается из удаленного (сетевого и т. Д.) Местоположения. Это происходит только тогда, когда пользователь запускает приложение, которое живет в удаленном месте. Он не может ни получить доступ к файлам или даже своей собственной локальной системе из этого удаленного приложения.

+0

, но, похоже, это случайный случай ... у меня есть сервис, который для 90% файлов в том же каталоге File.exists хорош, и я могу просматривать их в проводнике из моего машина .... но иногда некоторые расширения не работают. – FlavorScape

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