На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! user posted image
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

Соблюдайте общие правила форума

Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как запустить программу/файл? (и дождаться ее завершения)
5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры - внедрение в удаленное адресное прстранство)
... (продолжение следует) ...

Внимание:
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки - бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Rouse_, user posted image Krid

Модераторы: Rouse_, Krid
  
> Запуск сервиса от администратора? , Что делаю неправильно?
    (Win2K)
    У меня так сказать 2 проблемы вероятно вторая связана с первой. Суть такая:

    Требуется из службы подключить сетевой ресурс. по умолчанию как я понял служба запускается от SYSTEM у которой нет на это прав, по крайней мере при попытке подключить диск выдается код ошибки "5" а при попытке подключить IPC$ код ошибки "0" но всеравно ничег оне подключается.

    Попробовал подключить сетевой диск из программы запущенной от администратора все подключилось нормально. Следовательно думаю...
    Вероятно надо запустить сервис от администратора. Как прочитал 2 последних параметра это Username и Password

    - создал учетку "test" c паролем "test" добавил в группу "администраторы"
    - Указал эти данные при создании сервиса.
    - Запустил сервис
    - Результат подключения сетевого диска "5" (отказано в доступе.)

    Или я совсем ничего не понял или я что-то не так делаю...

    подскажите пожалуйста:
    Можно ли как нибудь добавить права что бы сервис запущенный от SYSTEM мог подключать сетевые ресурсы? (это более хотелось бы)
    И собственно сам сабж что я вообще туда куда надо и в том виде запихнул данные от кого запускать сервис?

    ExpandedWrap disabled
      sHndl:=CreateService(SCHndl,PChar(ServiceName),PChar(ServiceDisplayName),SERVICE_ALL_ACCESS,ServiceType,SERVICE_DEMAND_START,SERVICE_ERROR_NORMAL, PChar(ParamStr(0)),Nil,Nil,nil,'test,'test');
      А для кого сервис подключает диски? для себя?
      если попробовать CreateProcessWithLogonW + "net use"?
        CreateProcessWithLogonW - это функция типа CreateProcess?

        Просто я не особо хочу из сервиса стартовать какие то .exe .bat и тп

        Да сервис подключает ресурс для себя.

        Попробовал запустить сервис с указанием Domain\Login (.\Login) и Password с учетки в домене имеющую админские права на локальном компе и являющуюся админом домена написало что "logon failure" при запуске сервиса
        в рабочей группе сервис хоть запускается но похоже игнорирует Login и Password

        Вообще задача следующая: Я пытаюсь поставить сервис удаленно для этого надо подключить шару IPC$ после этого при использовании OpenScManager будут использоваться учетные данные которые были использованы для подключения IPC$ (первое подключение) может есть и другие способы решения проблемы но я не в курсе. вот и пробую решить проблему... Сервис написал... Вручную шару подключил, сервис поcтавился куда было указано ок.

        Теперь проблема подключить шару IPC$ (автоматом)
        Сообщение отредактировано: Gen -
          Цитата
          Требуется из службы подключить сетевой ресурс. по умолчанию как я понял служба запускается от SYSTEM у которой нет на это прав


          Доступ к сети из под SYSTEM - не самая удачная идея. SYSTEM - это самая высокопривелегированная учётная запись. Соответственно, есть мнение, что такой мощный компонент от сети может изолироваться (точно не уверен).

          Для работы с сетью есть учётная запись NetworkService, которая не обладает столь высокими полномочиями как SYSTEM.

          В некоторых случаях правильным решением будет иметь две программы (либо служба + программа, либо служба + служба), общающиеся через IPC.

          Вторая возможная причина - ты неверно указываешь учётку при подключении ресурса.
            Ну то что она совсем с сетью не совмещается это уж не так... черзе сервис спокойно копируется на сетевые ресурсы туда и обратно...
            без проблем получаются список доменов и компьютеров... перечисляются расшаренные ресурсы...

            Неужели нельзя сделать что бы подключать как то ресурсы...

            вот к примеру

            в семерке не пашет WNetOpenEnum из под SYSTEM пишет нет сети или чтото в этом духе...
            добавив в прогу

            ExpandedWrap disabled
              if not LogonUser('Администратор', 'WORKGROUP', 'XXXXXXXXXXXXXXXX', LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, hUserToken) then begin {WriteResDisk} End;
              ImpersonateLoggedOnUser(hUserToken);


            WNetOpenEnum начинает работать

            но все равно сетевые ресурсы не подключаются в 2К все это пашет и без этого но так же сетевые ресурсы не подключаются.

            Может быть можно какие то привилегии поставить я вижу каких то куча есть но с ними ни разу не работал не знаю дает ли чтото из этого нужное или нет
            ExpandedWrap disabled
              //"SeCreateTokenPrivilege"
              //"SeAssignPrimaryTokenPrivilege"
              //"SeLockMemoryPrivilege"
              //"SeIncreaseQuotaPrivilege"
              //"SeUnsolicitedInputPrivilege"
              //"SeMachineAccountPrivilege"
              //"SeTcbPrivilege"
              //"SeSecurityPrivilege"
              //"SeTakeOwnershipPrivilege"
              //"SeLoadDriverPrivilege"
              //"SeSystemProfilePrivilege"
              //"SeSystemtimePrivilege"
              //"SeProfileSingleProcessPrivilege"
              //"SeIncreaseBasePriorityPrivilege"
              //"SeCreatePagefilePrivilege"
              //"SeCreatePermanentPrivilege"
              //"SeBackupPrivilege"
              //"SeRestorePrivilege"
              //"SeShutdownPrivilege"
              //"SeDebugPrivilege"
              //"SeAuditPrivilege"
              //"SeSystemEnvironmentPrivilege"
              //"SeChangeNotifyPrivilege"
              //"SeRemoteShutdownPrivilege"


            В то м то и дело что интересно сделать без дополнительных сервисов и прог.
            Сообщение отредактировано: Gen -
              вот тут Открытие шары на ПК в домене с ПК в воркгруппе Rouse посоветовал WNetAddConnection2() (сам с ней связываться не стал потому что шары мне не нужны, а имперсонализация это крутовато для моей проги :) )
              Сообщение отредактировано: antonn -
                Цитата
                WNetOpenEnum начинает работать


                Есть мнение, что это указывает на то, что ты неверно подключаешь ресурсы. LogonUser и ImpersonateLoggedOnUser работают исключительно локально. Если с ними работает, то это значит, что в функцию подключения ресурсов ты не передал учётку (или передал неправильно), поэтому функция использовала активный аккаунт.

                Цитата
                но все равно сетевые ресурсы не подключаются в 2К все это пашет и без этого но так же сетевые ресурсы не подключаются


                Отсыпь, чего курил.
                  Цитата

                  Отсыпь, чего курил.


                  :)

                  Сорри я просто совсем плохо в этом всем разбираюсь по этому выражаюсь своими словами (что вероятно совсем не значит то что я думаю, хотя я думаю что это значит то что я думаю)

                  Попробую переформулировать
                  Служба запущена от SYSTEM
                  В Win2K Без всяких LogonUser и ImpersonateLoggedOnUser перечисляются домены, компьютеры, шары на них открытые и тп
                  в Windows 7 без LogonUser и ImpersonateLoggedOnUser не перечисляются ...

                  При указании логина и пароля при запуске сервиса происходит одно и то же что в Windows 7 что Win2K

                  ExpandedWrap disabled
                    Ставлю сервис на локальный комп. Учетка test добавлена в группу администраторы.
                     
                    sHndl:=CreateService(SCHndl,PChar(ServiceName),PChar(ServiceDisplayName),SERVICE_QUERY_CONFIG Or SERVICE_CHANGE_CONFIG,ServiceType,SERVICE_DEMAND_START,SERVICE_ERROR_NORMAL, PChar(ParamStr(0)),Nil,Nil,Nil,'test','test');
                    sHndl:=CreateService(SCHndl,PChar(ServiceName),PChar(ServiceDisplayName),SERVICE_QUERY_CONFIG Or SERVICE_CHANGE_CONFIG,ServiceType,SERVICE_DEMAND_START,SERVICE_ERROR_NORMAL, PChar(ParamStr(0)),Nil,Nil,Nil,'.\test','test');
                    sHndl:=CreateService(SCHndl,PChar(ServiceName),PChar(ServiceDisplayName),SERVICE_QUERY_CONFIG Or SERVICE_CHANGE_CONFIG,ServiceType,SERVICE_DEMAND_START,SERVICE_ERROR_NORMAL, PChar(ParamStr(0)),Nil,Nil,Nil,'WORKGROUP\test','test');
                    sHndl:=CreateService(SCHndl,PChar(ServiceName),PChar(ServiceDisplayName),SERVICE_QUERY_CONFIG Or SERVICE_CHANGE_CONFIG,ServiceType,SERVICE_DEMAND_START,SERVICE_ERROR_NORMAL, PChar(ParamStr(0)),Nil,Nil,Nil,PChar('test'),PChar('test'));
                    sHndl:=CreateService(SCHndl,PChar(ServiceName),PChar(ServiceDisplayName),SERVICE_QUERY_CONFIG Or SERVICE_CHANGE_CONFIG,ServiceType,SERVICE_DEMAND_START,SERVICE_ERROR_NORMAL, PChar(ParamStr(0)),Nil,Nil,Nil,PChar('.\test'),PChar('test'));
                    sHndl:=CreateService(SCHndl,PChar(ServiceName),PChar(ServiceDisplayName),SERVICE_QUERY_CONFIG Or SERVICE_CHANGE_CONFIG,ServiceType,SERVICE_DEMAND_START,SERVICE_ERROR_NORMAL, PChar(ParamStr(0)),Nil,Nil,Nil,PChar('WORKGROUP\test',PChar('test'));
                    (так пробовал)
                     
                     
                    D:\PROGRAMS\TEST>test.exe install \\COMPUTER test
                    Connecting Service Control Manager...Ok
                    Creating service database record...Failed!
                    Error: 1057 Имя учетной записи задано неверно или не существует, или же неверен
                    указанный пароль.
                     
                    Если сначала поставить сервиc потом заменить exe на ту где в CreateService указаны Login и Password
                    то происходит:
                     
                    D:\PROGRAMS\TEST>net start test
                    Служба "test" запускается.
                    Служба "test" успешно запущена.
                     
                    Но запущена от SYSTEM


                  Вроде один из вариантов указания должен был быть правильным.

                  Подключение шары вроде тож пробовал и так и сяк (периодически выдает результат 0, но но net use не видно ничего)

                  ExpandedWrap disabled
                    netresource.dwtype := resourcetype_ANY;
                    netresource.lplocalname := '';
                    netresource.lpremotename := '\\COMPUTER';
                    netresource.lpprovider := '';
                    Status:=wnetaddconnection2(netresource, 'test', 'test', connect_update_profile);
                     
                    что без LogonUser и ImpersonateLoggedOnUser что с LogonUser и ImpersonateLoggedOnUser, что на win7 xnj yf Win2K результат выполнения всегда "0" по net use ничего не видно
                     
                    Status:=0;
                    netresource.dwtype := resourcetype_ANY;
                    netresource.lplocalname := 'R:';
                    netresource.lpremotename := '\\COMPUTER\c$';
                    netresource.lpprovider := '';
                    Status:=wnetaddconnection2(netresource, 'test', 'test', connect_update_profile);
                     
                    Без LogonUser и ImpersonateLoggedOnUser результат выполнения "5" отказано в доступе
                    по net use ничего есесно не видно либо при использовании того что выше результат выполнения "0" но опять же по net use ничего не видно
                     
                    (Ну пробовал на всякий случай так же как и при CreateService пробовал варианты с PChar('R:');например)


                  Разьве я неправильно указываю?

                  Цитата

                  >>To CodeMonkey
                  служба + служба общающиеся через IPC.
                  (сорри если я опять правильно понимюа суть написаного)
                  я и пытаюсь подключить IPC$ из службы



                  Добавлено
                  Таааааааааакккк )))))))))))

                  Сорри а вообще оно должно быть видно по "net use" то что я там пытаюсь подключить?

                  Попробовал файл скопировать с R: вроде все копируется )))
                  Сообщение отредактировано: Gen -
                    В общем не понимаю ничего все кажется оказалось проще чем я думал...

                    IPC$ подключается от системы спокойно без свякого пароля если на удаленном компе есть такой же юзер если в домене то тож подкючается спокойно, ну если нет такого юзера надо указывать Login и Password и использовать эти LogonUser и ImpersonateLoggedOnUser

                    А Самое главное оказалось что оно при запуске от SYSTEM не отображается по "net view" я сегодня весь день извращался пытаясь соединение увидеть глазами вместо того что бы проверить а существует ли оно реально или нет.

                    Вроде на текущий момент вопрос решился (вроде как)

                    спасибо CodeMonkey за мыслю

                    Цитата

                    Есть мнение, что это указывает на то, что ты неверно подключаешь ресурсы.


                    если я все подключаю правильно и код ошибки "0" логично предположить было сразу что все работает (ну почти все)

                    спасибо
                    1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0,0402 ]   [ 15 queries used ]   [ Generated: 17.09.25, 17:37 GMT ]