1. Benjamin Hübner
  2. PowerBuilder
  3. Thursday, 6 June 2024 09:22 AM UTC

Hello everyone,

We have been creating our programs with ORCA for years - more or less without any problems.
Now we have switched to PB version 2022/R3 Build 3356 and have the problem that the EXE we created no longer works.

If we look at the EXE file in an editor, we can see that the entry in the manifest information area is not correct.
The attributes "level" and "uiAccess" of the entry "requestedExecutionLevel" are no longer written correctly.

EXE file created with the PB version 2022/R3 Build 3356:

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
	version="1.0.0.0"
	processorArchitecture="x86"
	name="Sybase.PB"
	type="win32"
/>
<description>PowerBuilder</description>
<dependency>
	<dependentAssembly>
		<assemblyIdentity
			type="win32"
			name="Microsoft.Windows.Common-Controls"
			version="6.0.0.0"
			processorArchitecture="x86"
			publicKeyToken="6595b64144ccf1df"
			language="*"
		/>
	</dependentAssembly>
</dependency>
<ms_asmv3:trustInfo xmlns:ms_asmv3="urn:schemas-microsoft-com:asm.v3">
<ms_asmv3:security xmlns:ms_asmv3="urn:schemas-microsoft-com:asm.v3">
	<requestedPrivileges>
		<requestedExecutionLevel level="?????½??" uiAccess="">
		</requestedExecutionLevel>
	</requestedPrivileges>
</ms_asmv3:security>
</ms_asmv3:trustInfo>
</assembly>

The header file "pborca.h" states that the structure "pborca_exeinfo" contains the parameter "lpszManifestInfo".

/* ************************************************************************************* */
/* Structure to pass executable version information to PBORCA_ExecutableCreate           */
/* ************************************************************************************* */
typedef struct pborca_exeinfo
{
LPTSTR         lpszCompanyName;  
LPTSTR         lpszProductName;        
LPTSTR         lpszDescription;        
LPTSTR         lpszCopyright;
LPTSTR         lpszFileVersion;
LPTSTR         lpszFileVersionNum;
LPTSTR         lpszProductVersion;
LPTSTR         lpszProductVersionNum;
LPTSTR         lpszManifestInfo;
pborca_exeinfo()
{
	        lpszCompanyName = NULL;  
	        lpszProductName = NULL;        
	        lpszDescription = NULL;        
	        lpszCopyright = NULL;
	        lpszFileVersion = NULL;
	        lpszFileVersionNum = NULL;
	        lpszProductVersion = NULL;
	        lpszProductVersionNum = NULL;
	        lpszManifestInfo = NULL;
}
} PBORCA_EXEINFO;

We have been filling the parameter with the value "1,asInvoker,0" for years.

The first element "GenerateOptions" value set to "1".
The second element "ExecutionLevel" value set to "asInvoker".
The third element "AllowAccessToProtectedSystemUI" value set to "0" (false).

As you can see, the information has been written correctly to the EXE so far (PB 2021 Build 1509):

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
    version="1.0.0.0"
    processorArchitecture="x86"
    name="Sybase.PB"
    type="win32"
/>
<description>PowerBuilder</description>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="X86"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        />
    </dependentAssembly>
</dependency>
<ms_asmv3:trustInfo xmlns:ms_asmv3="urn:schemas-microsoft-com:asm.v3">
<ms_asmv3:security xmlns:ms_asmv3="urn:schemas-microsoft-com:asm.v3">
	<requestedPrivileges>
		<requestedExecutionLevel level="asInvoker" uiAccess="false">
		</requestedExecutionLevel>
	</requestedPrivileges>
</ms_asmv3:security>
</ms_asmv3:trustInfo>
</assembly>

Does anyone know how to call the ORCA function "ExecutableCreate" with the manifest information?
Does anyone know if there is any documentation on how to fill the parameters of the "pborca_exeinfo" structure?

Can anyone help in any way?

Thank you very much.




There are no replies made for this question yet.
However, you are not allowed to reply to this question.