Форум: "WinAPI";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
ВнизРабота с сетью из-под сервиса Найти похожие ветки
← →
Sour Smile (2005-04-29 14:30) [0]Мой сервис запускается под правами LocalSystem (всё правильно, так и должно быть), но вот наткнулся на проблему: не получается работать с из-под этого сервиса с сетью; прочитать список открытых ресурсов, покопировать файлы и т.п. (что интересно, список доменов и компьютеров в этих доменах функция NetServerEnum возвращает без вопросов, а вот список открытых ресурсов NetShareEnum уже отвечает "Отказано в доступе")...
Может есть какой нибудь способ обойти эту проблему?
← →
BiN © (2005-04-29 14:40) [1]Administrator, Power User, Print Operator, or Server Operator group membership is required to successfully execute the NetShareEnum function at levels 2 and 502. No special group membership is required for level 0 or level 1 calls.
← →
Набережных С. © (2005-04-29 14:54) [2]A LocalSystem вообще никто в сети. В домене W2k можно дать права учетной записи компьютера, тогда LocalSystem будет представлена этой учеткой. Как и что - это к админам.
← →
Sour Smile (2005-04-29 16:08) [3]
> BiN © (29.04.05 14:40) [1]
> Набережных С. © (29.04.05 14:54) [2]
Это я всё прекрасно знаю и понимаю, но эти знания никак не помогают обойти эту проблему...
ps. гдето я видел пример как запустить процедуру под текущим пользователем, вот хоть убейте не помню где...
И даже при таком подходе тоже проблема полностью не решается - сервис может быть уже запущен, а в систему никто ещё не входил... Впрочем уже былобы легче...
← →
Ученик (2005-04-29 22:34) [4]>Sour Smile (29.04.05 14:30)
Необходимо подключить сетевой ресурс с допустимым пользователем
function ConnectNetResource(const ResourceName : string;
const UserName, Password : string;
Delay : DWORD) : Integer;
var
NetResource : TNetResource;
StartTick : DWORD;
lpUserName, lpPassword : PChar;
begin
FillChar(NetResource, SizeOf(NetResource), 0);
NetResource.dwType := RESOURCETYPE_DISK;
NetResource.lpRemoteName := PChar(ResourceName);
if UserName = "" then
lpUserName := NIL
else
lpUserName := PChar(UserName);
if Password = "" then
lpPassword := NIL
else
lpPassword := PChar(Password);
StartTick := GetTickCount;
repeat
Result := WNetAddConnection2(NetResource, lpPassword, lpUserName, 0);
if (Result = 0) or ((GetTickCount - StartTick) > Delay) then
Break
else
Sleep(10000);
until False
end;
← →
Slym © (2005-05-03 12:34) [5]Делай 2 сервиса.
1. Логика от LocalSystem.
2. Коммуникации от пользователя домена.
Сервисы общаются при помощи:
1. SendMessage
2. MMF+ Mutex (в Samples есть)
3. NamedPipe
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.041 c