mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-02 19:26:32 +00:00
[RUNDLL32] -Load and activate the manifest of the hosted dll before loading the library.
svn path=/trunk/; revision=73799
This commit is contained in:
@@ -346,6 +346,11 @@ int WINAPI _tWinMain(
|
||||
int i;
|
||||
size_t nStrLen;
|
||||
|
||||
ACTCTXW ActCtx = {sizeof(ACTCTX), ACTCTX_FLAG_RESOURCE_NAME_VALID};
|
||||
HANDLE hActCtx;
|
||||
ULONG_PTR cookie;
|
||||
BOOL bActivated;
|
||||
|
||||
// Get command-line in argc-argv format
|
||||
argv = CommandLineToArgv(GetCommandLine(),&argc);
|
||||
|
||||
@@ -381,6 +386,11 @@ int WINAPI _tWinMain(
|
||||
else
|
||||
lptCmdLine = _T("");
|
||||
|
||||
ActCtx.lpSource = lptDllName;
|
||||
ActCtx.lpResourceName = (LPCWSTR)123;
|
||||
hActCtx = CreateActCtx(&ActCtx);
|
||||
bActivated = (hActCtx != INVALID_HANDLE_VALUE ? ActivateActCtx(hActCtx, &cookie) : FALSE);
|
||||
|
||||
// Everything is all setup, so load the dll now
|
||||
hDll = LoadLibrary(lptDllName);
|
||||
if (hDll) {
|
||||
@@ -429,6 +439,8 @@ int WINAPI _tWinMain(
|
||||
if (!RegisterBlankClass(hInstance, hPrevInstance))
|
||||
{
|
||||
FreeLibrary(hDll);
|
||||
if (bActivated)
|
||||
DeactivateActCtx(0, cookie);
|
||||
return 0;
|
||||
}
|
||||
// Create a window so we can pass a window handle to
|
||||
@@ -476,6 +488,9 @@ int WINAPI _tWinMain(
|
||||
free(lptMsgBuffer);
|
||||
}
|
||||
|
||||
if (bActivated)
|
||||
DeactivateActCtx(0, cookie);
|
||||
|
||||
if (argv) free(argv);
|
||||
return 0; /* rundll32 always returns 0! */
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user