-
FileExists для файлов, расположенных на расшаренных дисках, возвращает False. Почему так происходит? У пользователя 'system' не хватает каких-то прав? Под обычным админом всё нормально на тех же файлах. Операционка - Win 2003 сервер.
-
проверь, запусти сервис от "обычного админа"...
-
> проверь, запусти сервис от "обычного админа"...
Как? Если просто запустить экзешник - то он не стартует как сервис, но - файлы доступны. Как запустит экзешник как сервис не из-под system?
-
в сервис менеджере, запустить от имени ...
-
вернее "с учетной записью" в "вход в систему"
-
точно, спасибо - попробую
-
и кстати в сервисе еще не помешало бы зависимость от сетевых служб поставить... если проверка идет на старте. ну и если оно вообще там работает, что после пробы выше выяснится.
-
Под администратором - то же самое, FileExists возвращает False. Но - когда я запускаю программу просто из консоли (из Far'а) - то FileExists работает нормально, хотя программа запускается тоже под записью 'Administrator' (смотрю по Task Manager).
-
> и кстати в сервисе еще не помешало бы зависимость от сетевых > служб поставить... если проверка идет на старте
Нет - во время работы.
-
Если это имеет значение - то на сервере поднят домен. Запись админа, под которой я локально вхожу - это скорее всего администратор домена.
-
Предположения тут не катят. Но это должен быть пользователь обладающий достаточными правами, и как минимум право доступа к сети. Я обычно использую NETWORK SERVICES - это как раз запись для подобных дел.
-
То есть - у system может не быть доступа к сети?
-
> Дмитрий Белькевич (24.08.11 21:52) [11] > То есть - у system может не быть доступа к сети?
У него 100% нет доступа по сети и это правильно.
-
Дмитрий Белькевич (24.08.11 17:24) [7]
У тебя есть права на перечисление имен в сетевом каталоге, у сервиса нет. К тому же не озвучено полное имя файла, существование которого ты пытаешься узнать. Фраза "расшаренный диск" может подразумевать несколько толкований, зачем ты заставляешь нас гадать ?
-
> К тому же не озвучено полное имя файла, существование которого > ты пытаешься узнать. Фраза "расшаренный диск" может подразумевать > несколько толкований, зачем ты заставляешь нас гадать ?
Ну вот например: w:\123.txt. Файл существует, расположен на диске 'w', w - это подключенный из сети диск.
-
Но это частный случай. Может быть и так: \\comp1\vol1\123.txt
-
> и кстати в сервисе еще не помешало бы зависимость от сетевых служб поставить...
- для доступа к сетевым ресурсам LanmanWorkstation нужно прописать:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService]
"DependOnService"=hex(7):4c,00,61,00,6e,00,6d,00,61,00,6e,00,57,00,6f,00,72,00,\
6b,00,73,00,74,00,61,00,74,00,69,00,6f,00,6e,00,00,00,00,00
-
> Ну вот например: w:\123.txt. Файл существует, расположен > на диске 'w', w - это подключенный из сети диск.
System-у никто не сказал net use w: а тебе это сказали.
Для того, чтобы видеть файлы в каталогах типа \\server\share сервису лучше всего запускаться от учетной записи, которой даны права на такой каталог.
Собственно я на эти грабли сколько-то лет назад тоже наступал, потому делюсь опытом
-
Спасибо за ответы. Как лучше ситуацию разрешить? А у NETWORK SERVICES будет доступ к w: ? Или лучше под каким-то локальным пользователем стартовать сервис? Или net use делать или еще что-то?
-
> Дмитрий Белькевич (25.08.11 11:09) [18]
> А у NETWORK SERVICES будет доступ к w: ? .....
Ткнуть два раза мышкой не судьба, что бы проверить?
-
> Ткнуть два раза мышкой не судьба, что бы проверить?
Пробовал запустить от NETWORK SERVICE. Результат:
An object(User) with the following name cannot be found: "NETWORK SERVICE".
Гуглю, что серверу не так...
-
> Дмитрий Белькевич (25.08.11 12:10) [20]
Имя не так. Администрирование - > Службы-> Твоя Служба ->Свойства->Вход в систему -> Обзор->Дополнительно->Поиск -> Выбери из списка(не ошибешься в имени)
Или смотри встроенные имена в MSDN в services в user accounts.
-
Пробую запустить тестовое приложение под NETWORK SERVICE на другом компьютере, win 2008 сервер. От 2003-го списка пользователей так и не смог добиться. Результат отрицательный - не видит и w:\ и \\server\folder\
-
Более того - даже под записью Administrator не видит файлов. Только под ограниченным пользователем, из-под которого стартую FAR.
-
Нужно на шару перелогиниваться под админом, тогда файлы нормально видно.
-
У меня сервис работает с шарой под любым именем имеющим права на доступ к нужному мне каталогу, в том числе и под Network Service (NT AUTHORITY\NetworkService). Это уже дело админа с какой учеткой запускать сервис и кому давать права на доступ к каталогу.
-
Хорошо. Как лучше тогда распространять софт - сервис? Устанавливать по дефолту под system (как сейчас), а дальше пусть админы сами разбираются?
-
зачем сервису на "чужой" диск, по расшарке? подумай, может оно и не нужно вовсе. пусть например ставят прямо на том компе для которого диск локальный...
> а дальше пусть админы сами разбираются? не дальше, а прямо сразу, в установщике попросить выбрать юзера с соответствующими правами... и вот если подсунули бесправного, пусть разбираются.
-
> зачем сервису на "чужой" диск, по расшарке? подумай, может > оно и не нужно вовсе.
Надо, можно сказать, что это и есть одна из главных его функций, если не самая - с внешними хранилищами файлов работать.
Сидят два горячих финских парня на берегу озера, рыбу ловят. Тут один и говорит: - Слушай, Куукконнен, я слышал ты построил дом? - Да, Юкканнен, построил. - А сколько комнат в твоем доме? - Одна, Юкканнен, меньше не имело смысла.
> не дальше, а прямо сразу, в установщике попросить выбрать > юзера с соответствующими правами...
Хорошо, а как потом указать, что сервис запускается от определенного пользователя? /install знаю - так он ставится сразу под system. А как его под другим юзером поставить?
-
-
Ясно, буду разбираться, всем спасибо.
|