Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1088
  • Last Modified:

What are the 1, 2, 3 sections in the Windows .rc file? (Related to adding an App.exe.manifest)

Hi,

I am facelifting the old application (C++, native code) -- literally, adding the "new" visual appearance known from XP and Vista enabled applications.

I have found the following elsewhere in the Microsoft documentation...

     Add the manifest to your application's resource file as follows:
     CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "App.exe.manifest"

(By the way, do you prefer to keep the convention for naming the manifest file App.exe.manifest? Isn't the App.manifest more appropriate?)

So, wrote the manifest and added it via the above command into the App.rc file. However, I did not find how exactly (to what section or using what tools) I should do it. Therefore, I just put the line via text editor near the beginning of the file.

When observing the resources via the Resource View panel inside VS 2008, I can see that the RT_MANIFEST "folder" was added and it contains the item "2". After some other work with the .rc file and after saving it, I could observe that the line

CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "App.exe.manifest"

was converted to

2 RT_MANIFEST "App.exe.manifest"

My question is: Which way should the CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "App.exe.manifest" be put into .rc (more correctly)? What are the numbered parts of the .rc file?

Thanks,
   Petr
0
pepr
Asked:
pepr
  • 4
1 Solution
 
DanRollinsCommented:
That is the numeric ID of the resource. Resources can be identified by a string of text or an integer number. See:
   FindResource Function
   http://msdn.microsoft.com/en-us/library/ms648042.aspx
The value 2 (ISOLATIONAWARE_MANIFEST_RESOURCE_ID) has special significance, in how the resource manager locates the data.  See:
   http://blogs.msdn.com/junfeng/archive/2007/06/26/rt-manifest-resource-and-isolation-aware-enabled.aspx
These special codes are #DEFINE'd in WinUser.h

0
 
peprAuthor Commented:
Thanks, Dan, for the info. I clearly need to learn that. On the other hand, I would like to solve the following situation quickly.

The main reason I am asking the question is that I am not able to enhance the visual style of the application so that it would work both on Windows Vista and Windows XP. On Vista, if I do not add the manifest file, the look is "the classic one" with sharp rectangular, not shaded buttons, etc. Then the application runs on Vista, on XP, and on Win 2000. When I add the manifest, it runs only on Windows Vista and not on XP (Win2000 not tested for that). Apparently, I am doing something wronly (and that is because I do not understand it).

 I have added the 2 RT_MANIFEST "Market.manifest" line (see below and/or the attached Market.rc file) by hand (text editor). It is likely that it is placed wrongly in the .rc file.


====================================================================
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "winres.h"

2 RT_MANIFEST "Market.manifest"

(continues)
====================================================================

The code snippet contains the exact content of the manifest file. The attached files show the almost full content of the .rc and .rc2 files.

Thanks for any help,
    Petr


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <description>APS Marketing 3</description>
    <!-- Identify the application security requirements (Vista): -->
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
            <requestedPrivileges>
                <requestedExecutionLevel
                    level="asInvoker"
                    uiAccess="false"
                />
            </requestedPrivileges>
         </security>
    </trustInfo>
    <!-- Activate Windows Common Controls v6 usage (XP and Vista): -->
    <dependency>
        <dependentAssembly>
            <assemblyIdentity 
                type="win32" 
                name="Microsoft.Windows.Common-Controls" 
                version="6.0.0.0"
                processorArchitecture="X86" 
                publicKeyToken="6595b64144ccf1df" 
                language="*" 
            />
        </dependentAssembly>
    </dependency>
</assembly>

Open in new window

Market.rc.txt
Market.rc2.txt
0
 
peprAuthor Commented:
Many thanks, CoolleoMod and DanRollins. ;)

Petr
0
 
peprAuthor Commented:
Not complete, but the good answer, anyway. Having full pocket of point,... enjoy ;)
0
 
peprAuthor Commented:
to modus_operandi: No need for apology. Thanks for the help. The answer by DanRollins still leads to the sources. Thanks again.
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now