Using session IDs to check if an executable is running in a service context makes sense on Windows because all services run in session 0 after Vista. However, in Wine, all services are running in session 1. So your changes are not enough. Ideally, for Wine, we move the services to session 0. However, Wine also emulates XP as well, which does run services and applications all in session 0, so checking the session number seems error-prone. Actually, I think I've been working on the same thing and trying to upstream my patches. I later decided to check if the window station name is __wineservice_winstaiton. Steam also uses Chromium sandbox, which is the real issue here. Please see the attached three patches and see if they fix the issue for you.
[0001-win32u-Create-explorer-with-the-thread-effective-acces.txt](/uploads/baa72f744a41e341d4a0c5be6df1dce6/0001-win32u-Create-explorer-with-the-thread-effective-acces.txt)
[0002-win32u-Use-the-window-station-name-to-check-if-an-appl.txt](/uploads/eb422c72a7014ce0a38b4f5e1e6f752d/0002-win32u-Use-the-window-station-name-to-check-if-an-appl.txt)
[0003-server-Allow-creating-an-real-explorer-desktop-window-.txt](/uploads/60dfec7287b17105ec4792621cbc96ed/0003-server-Allow-creating-an-real-explorer-desktop-window-.txt)