LINUX.ORG.RU

WIne запустить приложение от LocalSystem

 ,


1

2

Столкнулся с одной проблемкой: Служба проверяет, что она запущена от системной учётной записи, и если это не так - не работает. Пробовал и утилиту от Nirsoft, и ProcessHacker, runassystem, powerrun, и т.д. Но добился только что ProcessHacker пишет

fixme:advapi:LsaEnumerateAccounts (000000000000CAFE,000000000011D370,000000000011D2F8,256,000000000011D368) stub
:fixme:service:QueryServiceConfig2W Level 3 not implemented
02b4:fixme:service:QueryServiceConfig2W Level 8 not implemented
02b4:fixme:service:QueryServiceConfig2W Level 8 not implemented
:fixme:sync:NtConnectPort (0x14015f1c0,L"\\BaseNamedObjects\\ProcessHackerDTGSOHCDONXFINV",0x11ce40,0x11ce68,0x11ce50,0x11ced8,0x11ced0,0x11cec8),stub!
02b4:fixme:eventlog:ControlTraceW (cafe4242, (null), 00000000033B3B80, 3) stub
02a0:fixme:sync:NtConnectPort (0x14015f1c0,L"\\BaseNamedObjects\\ProcessHackerDTGSOHCDONXFINV",0x11ce40,0x11ce68,0x11ce50,0x11ced8,0x11ced0,0x11cec8),stub!
02a0:fixme:sync:NtConnectPort (0x14015f1c0,L"\\BaseNamedObjects\\ProcessHackerDTGSOHCDONXFINV",0x11ce40,0x11ce68,0x11ce50,0x11ced8,0x11ced0,0x11cec8),stub!

А runassystem:

0800:fixme:security:ImpersonateLoggedOnUser (0000000000000060)
0800:fixme:advapi:CreateProcessWithTokenW 0000000000000060 0x00000000 L"C:\\windows\\system32\\cmd.exe" L"\"C:\\windows\\system32\\cmd.exe\"" 0x00008000 0000000000000000 L"Z:\\media\\data\\1.my" 000000000011ED20 000000000011ED00 - semi-stub

И создаётся 1 фиг от текущего пользака. Ещё одна программа как-то ругалась на отсутствие службы, которая в виндах позволяет смену пользователя.

AdvancedRun (в вайн не запускается), если запускать на винде, пишет ошибку 1063 (0x427), которая обозначает ERROR_FAILED_SERVICE_CONTROLLER_CONNECT The service process could not connect to the service controller. Т.е. запускать нужно именно как службу, что ограничивает манёвр для отладки.

Стал гуглить - варианты мульти-юзерства только с выносом .wineprefix в /etc/ или шару, копированием каждому реестра, сознанием симлинков и прочая веселуха. В-принципе для 1й программы такое сделать можно, реестры не разбегутся со временем.

Но, может быть есть более элегантное решение? Есть способ заставить программу думать, что она запущена от LocalSystem?

P.S. Пробовал менять Environment -

export COMPUTERNAME=TEST; export USER="NT AUTHORITY\SYSTEM" ;export  USERNAME="NT AUTHORITY\SYSTEM" ; export LOGNAME="NT AUTHORITY\SYSTEM" ; export USERPROFILE=C:\Windows\system32\config\systemprofile ; wine regedit

Не помогло. Хотя у всех программ и служб username и wineusername меняется на SYSTEM. ProcessHacker показывает в колонке username Real_pc_name\real_user_name Видимо так просто эту проверку не обойти. При поиске по string-ам в библиотеках и программе нашёл только LookupAccountSidW и LookupAccountNameW . Своё ПО для проверки писать что ли? Дак ProcessHacker и не обманывается. Если кто знает, где пропатчить вайн, чтобы UID, GID и username поменять на SYSTEM - пишите, вариант тоже рассматривается.



Последнее исправление: c0unt0 (всего исправлений: 1)

Сделал вчера пользователя System, общий префикс со своим, и общий ~/.Xauthority , чтобы приложения с интерфейсом, запущенные под

sudo -u System wine regedit

было видно у меня. ProcessHacker пишет user-a RealPC\System, служба всё равно считает, что это не настоящий системный пользователь. Значит палит по UID/GID. Остаётся зимовааать, остаётся патчить вайннн…

c0unt0
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.