Today’s Little Program executes a file as if it were a program,
even though its extension is not EXE.
The idea here is to prevent somebody from running your program
by accident, so you give it an extension like .MOD.
This is great for preventing somebody from running the program
by mistake, but how do you do it on purpose?
#define STRICT
#include <windows.h>
#include <shellapi.h>
int WINAPI WinMain(
HINSTANCE hinst, HINSTANCE hinstPrev,
LPSTR lpCmdLine, int nCmdShow)
{
SHELLEXECUTEINFO sei = { 0 };
sei.cbSize = sizeof(sei);
sei.nShow = SW_SHOWNORMAL;
sei.lpFile = TEXT("C:\\full\\path\\to\\program.mod");
sei.fMask = SEE_MASK_CLASSNAME;
sei.lpVerb = TEXT("open");
sei.lpClass = TEXT("exefile");
ShellExecuteEx(&sei);
return 0;
}
We’re merely
using the lpClass member of the
SHELLEXECUTEINFO structure
to force the file to be interpreted as the type we specify,
overriding the default type inference code.
0 comments