Ti avevo già detto nell'altro thread che, a determinate condizioni, avresti potuto direttamente utilizzare l'array di byte ... ma neanche hai provato a farlo ...

codice:
	BYTE ProgramPath[MAX_PATH];
	GetModuleFileName(NULL, (LPSTR)ProgramPath, sizeof(ProgramPath));