Solved

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

Posted on 2009-04-02
11
903 Views
Last Modified: 2013-12-03
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
Comment
Question by:pepr
  • 4
11 Comments
 
LVL 49

Accepted Solution

by:
DanRollins earned 500 total points
ID: 24055396
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
 
LVL 28

Author Comment

by:pepr
ID: 24058686
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
 
LVL 28

Author Comment

by:pepr
ID: 24084336
Many thanks, CoolleoMod and DanRollins. ;)

Petr
0
 
LVL 28

Author Closing Comment

by:pepr
ID: 31565705
Not complete, but the good answer, anyway. Having full pocket of point,... enjoy ;)
0
 
LVL 28

Author Comment

by:pepr
ID: 24155361
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

The Eight Noble Truths of Backup and Recovery

How can IT departments tackle the challenges of a Big Data world? This white paper provides a roadmap to success and helps companies ensure that all their data is safe and secure, no matter if it resides on-premise with physical or virtual machines or in the cloud.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

NTFS file system has been developed by Microsoft that is widely used by Windows NT operating system and its advanced versions. It is the mostly used over FAT file system as it provides superior features like reliability, security, storage, efficienc…
Join Greg Farro and Ethan Banks from Packet Pushers (http://packetpushers.net/podcast/podcasts/pq-show-93-smart-network-monitoring-paessler-sponsored/) and Greg Ross from Paessler (https://www.paessler.com/prtg) for a discussion about smart network …
The goal of the tutorial is to teach the user how to use functions in C++. The video will cover how to define functions, how to call functions and how to create functions prototypes. Microsoft Visual C++ 2010 Express will be used as a text editor an…
This is used to tweak the memory usage for your computer, it is used for servers more so than workstations but just be careful editing registry settings as it may cause irreversible results. I hold no responsibility for anything you do to the regist…

773 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question