Based on my understanding, you should be able to register or inject views in a dynamically created shell in the same way you would do with a typical single-shell Prism application. Also, as far as I know, both dynamically created window and popup windows
should be able to support regions without problems.
As mentioned previously by Agustin, the only additional step to use regions in those windows is to set a
RegionManager in them manually.
In the following link you can find a sample application, which uses a dynamically created view as a shell:
In the application you will find a HiddenShell window (which would be the hidden shell you mentioned above) with a button to shown the
MainShell (this could be instead done by a menu option in a system tray icon). Using the
WindowService shared service, the MainShell window is displayed and a view is added (which was registered by the
SecondaryModule). This view has another region in which you can inject views.
Also, check the Bootstrapper included with the sample application, as it overrides the
ConfigureDefaultRegionBehaviors method in order to avoid a known issue in Prism.
As a side note, take into account that as far as I know there is not official Prism guidance for scenarios such as running applications without an initial shell or with a icon in the system tray.
I hope you find this useful,