1. Акция на весь декабрь! Получай оплату х2 за уникальные статьи, объемом от 200 слов, если в заголовке темы и теле статьи присутствует слово Python
    Скрыть объявление

Написание сервиса

Тема в разделе "MS Visual C++", создана пользователем lifer, 15 апр 2006.

Статус темы:
Закрыта.
  1. lifer

    lifer Гость

    Подскажите, в чем дело: мой сервис не может создать файл на сетевом диске, а на обычных дисках запросто. Причем обычная прога (не сервис) файл на сетевом диске создает.
    Я использовал функции CreateFile и fopen-безрезультатно. Сервис у меня интерактивный, запускается в контексте LocalSystem аккаунта-может в этом дело? Хотя неинтерактивный сервис также не может записать файл на сетевой диск. Помогите, кто знает! Кстати, CreateFile возвращает код 3, который означает The system cannot find the path specified.
     
  2. Barmutik

    Barmutik Гость

    Стандартная проблема ..

    Под каким пользователем запущен сервис? Скорее всего под системным аккаунтом .. так вот .. а замапленные сетевые диски существуют ТОЛЬКО в Вашей сессии..

    Т.е. например если Вы замапили сетевой путь на букву G:, то серис ничего не знает про путь к примеру G:\1.tmp.

    Решение проблемы крайне простое .. сипользуйте для создания UNC пути ... т.е. вместо G:\ пишите \\имя моего сервера\расшаренный ресурс\... ну и дальше куда уже нужно ...

    Само собой достпу в эту шару должен быть разрешеён тому пользователю под которым запущен сервис... существуют гтовые системные функции для перевода пути в UNC путь...
     
  3. lifer

    lifer Гость

    Слушай, Barmutik...Расскажи поподробнее про функции преобразования пути в UNC путь! Допустим, мой сервис из реестра берет строку, которая является путем, но обычным, т.е. имя_диска:\и т.д. Можно ли вызвать функцию, которая определит, является ли диск сетевым, и если да, то автоматически преобразует путь? Я в MSDN глянул по слову UNC, но ничего полезного не нашел:( Помоги плиз, если знаешь!
     
  4. Barmutik

    Barmutik Гость

    Слушаю .. :(

    Вообщем там не всё что бы совсем так всё просто .. используйте... WNetGetUniversalName, под 9х глючит .. но есть воркароунд ...

    Если надо могу привести пример на Паскале всей функции ...
     
  5. lifer

    lifer Гость

    Не, примера не надо. Спасибо большое за подсказку, я нашел все нужные функции, всё работает! Есть функция PathIsNetworkPath,определяющая, является ли путь сетевым, однако из под сервиса она скорее всего не работает, т.к. мой сервис ничего о шарах не знает. Я в своем сервис манаджаре заранее определяю путь, изменяю если надо с помощью WNetGetUniversalName и записываю в реестр. Но если бы ты ты не подсказал насчет системного аккаунта, так и не допер бы. Спасибо!
     
  6. Barmutik

    Barmutik Гость

    Не за что ! Удачи! :)
     
Загрузка...
Похожие Темы - Написание сервиса
  1. wellsun
    Ответов:
    0
    Просмотров:
    126
  2. vladis222
    Ответов:
    1
    Просмотров:
    624
  3. smailvolf
    Ответов:
    1
    Просмотров:
    1.033
  4. faissullin
    Ответов:
    0
    Просмотров:
    1.087
  5. IseLL
    Ответов:
    1
    Просмотров:
    997
Статус темы:
Закрыта.

Поделиться этой страницей