locked
Vista themes work from console but not via RDC RRS feed

  • Question

  • I was very pleased to see the ability to add Vista themes to the Server 2008 experience.  As a user who uses Remote Desktop Connection (RDC) quite heavily, I prefer to use the Vista UI, or in the case of a Server 2003 system, the XP Luna theme.

     

    According to this TechNet article (http://technet2.microsoft.com/windowsserver2008/en/library/f6dc3107-81dc-4827-8f07-75241ed351761033.mspx?mfr=true) I should be able to use Vista themes in Server 2008.

     

    I followed all of the steps carefully.  I enabled the Desktop Experience feature and rebooted.  After the reboot, I went into Services and enabled and started the Themes service.  I was now able to enable the Windows Vista desktop experience, yielding the Vista Basic look and feel.

     

    In Server 2003, if I enable XP themes on the server, I am able to use those themes via RDC (provided I have "Themes" checked under Experience in the RDC client).  According to the aforementioned article, if I enable the feature and service as indicated above, I should be able to use RDC to connect to my Server 2008 system and see the Vista themes.  I am able to use Vista Basic at the console, and I would like to be able to do so via RDC.

     

    Unfortunately this does not seem to be the case.  Instead, the desktop is rendered in the Windows Classic display, with thick gray borders around the windows.  If I change the theme to Windows Classic and try to put it back to Windows Vista, I get the following error:

     

    "The theme could not be loaded because the theme service is not running.  File: C:\Windows\Resources\Themes\aero.theme"

     

    Furthermore, a pair of Information entries appear in the Application event log:

     

    ID 9003 - "The Desktop Window Manager was unable to start because a composited theme is not in use"

    ID 9009 - "The Desktop Window Manager has exited with code (0x80070224)"

     

    I went back to the Services control panel and verified that the Themes service is indeed started.  Furthermore, I verified that the Desktop Experience feature is installed.  Lastly, if I return to the server's console, I can use the Vista themes just fine.

     

    I tried manually launching the Desktop Window Manager by running dwm.exe but it doesn't do any good.

     

    I am running Windows Server 2008 RTM.  I tried accessing the server via RDC 6.0 from Vista and RDC 6.1 from Server 2008.  I verified that all Experience features are checked so the theme should work.

     

    If anyone knows what I am missing or doing wrong, or if any additional insight can be provided, I would really appreciate it.

     

    UPDATE:  I need to clarify that I am running the server as "Remote Desktop for Administration."  I just enabled the full Terminal Services on the server and the Vista themes work now.  However, I don't want to run a full Terminal Server.  The server is used by just one other person and me, so we just want Remote Desktop for Administration.  If there's a way to get Vista themes working in Remote Desktop for Administration, that would be great.

     

    Best regards,

    Matt

    Tuesday, February 12, 2008 7:40 PM

Answers

All replies

  •  

    Hi,

     

    Check this : http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=2819488&SiteID=17

     

    _____________________________

    Tarek Majdalani
    Computer Engineer, CIW, MCSA: Security 2000/2003, TS: Windows Vista
    MVP -- ISA Firewalls
    Website : http://www.elmajdal.net/Win2k8

     

    Wednesday, February 13, 2008 1:30 PM
  • Thanks, I saw this one but unfortunately it's not what I was looking for.  In fact I responded to that one after I found it.

     

    The issue here is that themes do work when the Server 2008 is configured as a Terminal Server.  I don't want to use it as a full TS; I just want the Remote Desktop for Administration mode.

     

    I've been using Mark Russinovich's tool Procmon and running it against processes like dwm.exe and images like dwmredir.dll when the server is configured both as a TS as well as Remote Desktop for Administration.  I am hoping I can capture differences in files and/or Registry entries to determine exactly what needs to be done to get themes to work via Remote Desktop for Administration.

     

    From a purely technological point of view, themes do work via Remote Desktop in Server 2008.  But they only work in full Terminal Server.  The question here to be answered is "what is happening in TS that isn't happening in Remote Desktop for Administration and what can I do to make it happen in Remote Desktop for Administration?"

     

    I'm hoping it's something simple like a registry value needing to be changed.

     

    Best regards,

    Matt

    Wednesday, February 13, 2008 1:35 PM
  •  

    Hello Matt, I assume when you say you are using Remote Administration you are using the /admin switch.

    The Remote Administration mode in WS08 has been optimized for administration. i.e. features that are intended purely for better user experience such as Themes have been disabled since these are not necessary for the administration of the server.

    You can read our blog post on WS08 Remote Administration behavior here: http://blogs.msdn.com/ts/archive/2007/12/17/changes-to-remote-administration-in-windows-server-2008.aspx

    Monday, February 18, 2008 5:30 PM
  • Thank you Ayesha.  I kind of figured that's what happened.  I was just hoping that perhaps there was some registry key I could change that would allow me to use the themes anyway.  I am aware that Microsoft made the change to optimize the administration and thus disabled the themes.  However, I was hoping that there was a change I could make that would allow me to override this behavior and enable the use of the themes anyway.  Since this is just a test/development server used solely by me and not a production server, I would much prefer to use the themes.  From what it sounds like, unless I install Terminal Services (which requires licensing and CALs), this won't be very practical.

     

    Best regards,

    Matt

    Monday, February 18, 2008 6:31 PM
  • All you need to do is edit the local GPO of the Server to always use the Aero theme.


    Start > Run > mmc

    Add Group Policy Object Editor to the Snap-In.

    Go to User Config > Admin Templates > Control Panel > Display > Desktop Themes

    Enable the Load a specific visual style or force Windows Classic and use the following path to load Aero for all users all the time

    %windir%\resources\Themes\aero\aero.msstyles

    That should do it. Worked for me.
    Monday, October 20, 2008 3:26 PM
  • Hi !

    Interesting idea, the local policy, I gave it a try:But even this does not work [also made the machine a full terminal server before].

    Nothings works, really a big pain....

    br--mabra
    Sunday, February 22, 2009 3:51 AM
  • I am setting up a new Terminal Server and looked back on this post for reference.

    For this to work you have to turn on the Themes service, and add the Desktop Expirience Feature on the Server.

    Works great. Just got done building my 2nd one. :)
    Thursday, June 11, 2009 3:44 AM

  • I too was dissapointed in using rdp to perform remote admin on a 2008 server from the aero themed workstation i spend most of my day behind to find the claasic theme. Having tried all options, after enabling the theme feature in 2008 i created a small win32 console app that runs on login which fixes it. Now i can rdp in for remote admin, without terminal services loaded and have the aero interface.

    Heres the code, past it into a win32 app and build. and set your login to run the tiny exe

     

    using System;
    using Microsoft.Win32;
    using System.Runtime.InteropServices;
    
    class ThemeFix
    {
        [DllImport("UxTheme.Dll", EntryPoint = "#65", CharSet = CharSet.Unicode)]
    public static extern int SetSystemVisualStyle(string pszFilename, string pszColor, string pszSize, int dwReserved);
    
    
        public static void Main(string[] args)
        {
            RegistryKey HKCU = Registry.CurrentUser ;
            try
            {
                HKCU.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\ThemeManager\\Remote",true);
            }
            catch
            {
                Console.WriteLine("Unable to Open HKCU\\Microsoft\\Windows\\CurrentVersion\\ThemeManager\\Remote subkey!");
                return;
            }
            try
            {
                Registry.CurrentUser.DeleteSubKeyTree("Software\\Microsoft\\Windows\\CurrentVersion\\ThemeManager\\Remote");
            }
            catch
            {
                Console.WriteLine("Unable to DeleteSubKeytree Remote");
                HKCU.Close();
                return;
            }
    
            try
            {
                SetSystemVisualStyle("C:\\WINDOWS\\resources\\Themes\\Aero\\aero.msstyles", "NormalColor", "NormalSize", 32);
            }
            catch
            {
                Console.WriteLine("Unable to Load Theme!");
            }
            HKCU.Close(); 
        }
    }

     

     

     

    Sunday, September 13, 2009 12:44 PM
  • AlistairR, Can you double check your script and maybe tell us what compiler you used? I am trying to compile this, but I'm getting the following errors:

    theme.c:1: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘System’
    theme.c:2: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘Microsoft’
    theme.c:3: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘System’
    theme.c:5: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ThemeFix’

    I am compiling using gcc and the following syntax:

    gcc -o theme.exe theme.c -Wl,--subsystem,windows -luser32

    and using the code you indicated above.

     

    Please advise.

     

    Monday, April 26, 2010 7:16 PM
  • Hi ttyp00,

    It might be easier to paste the above code into visual express c# and build the exe.

    regards

    Monday, April 26, 2010 8:11 PM