Конференция "WinAPI" » Странное поведение FileExists в сервисе.
 
  • Дмитрий Белькевич (24.08.11 17:04) [0]
    FileExists для файлов, расположенных на расшаренных дисках, возвращает False. Почему так происходит? У пользователя 'system' не хватает каких-то прав? Под обычным админом всё нормально на тех же файлах. Операционка - Win 2003 сервер.
  • sniknik © (24.08.11 17:07) [1]
    проверь, запусти сервис от "обычного админа"...
  • Дмитрий Белькевич (24.08.11 17:08) [2]

    > проверь, запусти сервис от "обычного админа"...


    Как? Если просто запустить экзешник - то он не стартует как сервис, но - файлы доступны. Как запустит экзешник как сервис не из-под system?
  • sniknik © (24.08.11 17:11) [3]
    в сервис менеджере, запустить от имени ...
  • sniknik © (24.08.11 17:12) [4]
    вернее "с учетной записью" в "вход в систему"
  • Дмитрий Белькевич (24.08.11 17:16) [5]
    точно, спасибо - попробую
  • sniknik © (24.08.11 17:23) [6]
    и кстати в сервисе еще не помешало бы зависимость от сетевых служб поставить... если проверка идет на старте. ну и если оно вообще там работает, что после пробы выше выяснится.
  • Дмитрий Белькевич (24.08.11 17:24) [7]
    Под администратором - то же самое, FileExists  возвращает False. Но - когда я запускаю программу просто из консоли (из Far'а) - то FileExists работает нормально, хотя программа запускается тоже под записью 'Administrator' (смотрю по Task Manager).
  • Дмитрий Белькевич (24.08.11 17:25) [8]

    > и кстати в сервисе еще не помешало бы зависимость от сетевых
    > служб поставить... если проверка идет на старте


    Нет - во время работы.
  • Дмитрий Белькевич (24.08.11 17:31) [9]
    Если это имеет значение - то на сервере поднят домен. Запись админа, под которой я локально вхожу - это скорее всего администратор домена.
  • Anatoly Podgoretsky © (24.08.11 19:21) [10]
    Предположения тут не катят. Но это должен быть пользователь обладающий достаточными правами, и как минимум право доступа к сети. Я обычно использую NETWORK SERVICES - это как раз запись для подобных дел.
  • Дмитрий Белькевич (24.08.11 21:52) [11]
    То есть - у system может не быть доступа к сети?
  • DVM © (24.08.11 22:23) [12]

    > Дмитрий Белькевич   (24.08.11 21:52) [11]
    > То есть - у system может не быть доступа к сети?

    У него 100% нет доступа по сети и это правильно.
  • Игорь Шевченко © (24.08.11 23:41) [13]
    Дмитрий Белькевич   (24.08.11 17:24) [7]

    У тебя есть права на перечисление имен в сетевом каталоге, у сервиса нет.
    К тому же не озвучено полное имя файла, существование которого ты пытаешься узнать. Фраза "расшаренный диск" может подразумевать несколько толкований, зачем ты заставляешь нас гадать ?
  • Дмитрий Белькевич (25.08.11 08:44) [14]

    > К тому же не озвучено полное имя файла, существование которого
    > ты пытаешься узнать. Фраза "расшаренный диск" может подразумевать
    > несколько толкований, зачем ты заставляешь нас гадать ?


    Ну вот например: w:\123.txt. Файл существует, расположен на диске 'w', w - это подключенный из сети диск.
  • Дмитрий Белькевич (25.08.11 08:45) [15]
    Но это частный случай. Может быть и так: \\comp1\vol1\123.txt
  • han_malign (25.08.11 08:49) [16]

    > и кстати в сервисе еще не помешало бы зависимость от сетевых служб поставить...

    - для доступа к сетевым ресурсам 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

  • Игорь Шевченко © (25.08.11 09:57) [17]

    > Ну вот например: w:\123.txt. Файл существует, расположен
    > на диске 'w', w - это подключенный из сети диск.


    System-у никто не сказал net use w: а тебе это сказали.

    Для того, чтобы видеть файлы в каталогах типа \\server\share
    сервису лучше всего запускаться от учетной записи, которой даны права на такой каталог.

    Собственно я на эти грабли сколько-то лет назад тоже наступал, потому делюсь опытом
  • Дмитрий Белькевич (25.08.11 11:09) [18]
    Спасибо за ответы. Как лучше ситуацию разрешить? А у NETWORK SERVICES будет доступ к w: ? Или лучше под каким-то локальным пользователем стартовать сервис? Или net use делать или еще что-то?
  • Вариант (25.08.11 11:51) [19]

    > Дмитрий Белькевич   (25.08.11 11:09) [18]


    >  А у NETWORK SERVICES будет доступ к w: ? .....

    Ткнуть два раза мышкой  не судьба, что бы проверить?
 
Конференция "WinAPI" » Странное поведение FileExists в сервисе.
Есть новые Нет новых   [134431   +10][b:0][p:0.001]