[BROWSER][BOOTDATA] Make the Browser service start properly

- Implement SvchostPushServiceGlobals() to make svchost happy.
- Add the Browser service to the netsvcs group.

CORE-18262
This commit is contained in:
Eric Kohl
2025-08-10 10:47:03 +02:00
parent d4d52e1529
commit 88325f637b
4 changed files with 25 additions and 5 deletions

View File

@@ -15,6 +15,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(browser);
/* GLOBALS ******************************************************************/
HINSTANCE hDllInstance;
PSVCHOST_GLOBAL_DATA lpServiceGlobals;
static WCHAR ServiceName[] = L"browser";
@@ -31,7 +32,12 @@ UpdateServiceStatus(
{
ServiceStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
ServiceStatus.dwCurrentState = dwState;
ServiceStatus.dwControlsAccepted = 0;
if (dwState == SERVICE_RUNNING)
ServiceStatus.dwControlsAccepted = SERVICE_ACCEPT_SHUTDOWN | SERVICE_ACCEPT_STOP;
else
ServiceStatus.dwControlsAccepted = 0;
ServiceStatus.dwWin32ExitCode = 0;
ServiceStatus.dwServiceSpecificExitCode = 0;
ServiceStatus.dwCheckPoint = 0;
@@ -87,6 +93,8 @@ ServiceControlHandler(
case SERVICE_CONTROL_SHUTDOWN:
TRACE(" SERVICE_CONTROL_SHUTDOWN received\n");
/* Stop listening to incoming RPC messages */
RpcMgmtStopServerListening(NULL);
UpdateServiceStatus(SERVICE_STOPPED);
return ERROR_SUCCESS;
@@ -125,8 +133,8 @@ ServiceInit(VOID)
VOID
WINAPI
ServiceMain(
_In_ INT ArgCount,
_In_ PWSTR *ArgVector)
_In_ DWORD ArgCount,
_In_ LPWSTR *ArgVector)
{
DWORD dwError;
@@ -158,6 +166,16 @@ ServiceMain(
}
VOID
WINAPI
SvchostPushServiceGlobals(
_In_ PSVCHOST_GLOBAL_DATA lpGlobals)
{
TRACE("SvchostPushServiceGlobals(%p)\n", lpGlobals);
lpServiceGlobals = lpGlobals;
}
BOOL
WINAPI
DllMain(

View File

@@ -1,3 +1,3 @@
@ stub I_BrowserServerEnumForXactsrv
@ stdcall ServiceMain(long ptr)
@ stub SvchostPushServiceGlobals
@ stdcall SvchostPushServiceGlobals(ptr)

View File

@@ -18,12 +18,14 @@
#include <winbase.h>
#include <winreg.h>
#include <winsvc.h>
#include <svc.h>
#include <browser_s.h>
#include <wine/debug.h>
extern HINSTANCE hDllInstance;
extern PSVCHOST_GLOBAL_DATA lpServiceGlobals;
DWORD
WINAPI

View File

@@ -2031,7 +2031,7 @@ HKLM,"SOFTWARE\Microsoft\Ole","EnableRemoteConnect",0x00000000,"N"
; SvcHost services
HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SvcHost",,0x00000012
HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SvcHost","DcomLaunch",0x00010000,"DcomLaunch","PlugPlay"
HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SvcHost","netsvcs",0x00010000,"BITS","DHCP","lanmanserver","lanmanworkstation","Schedule","seclogon","Themes","W32Time","winmgmt","wuauserv"
HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SvcHost","netsvcs",0x00010000,"BITS","Browser","DHCP","lanmanserver","lanmanworkstation","Schedule","seclogon","Themes","W32Time","winmgmt","wuauserv"
HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost","NetworkService",0x00010000,"DnsCache"
; Win32 config