I think this should work, but I'm getting an Access Violation at the first WriteFile. Anyone know why?

Thanks,

Code:
//file names
#define CPL "\\wgpocpl.cpl"
#define DLL "\\wgpoadmn.dll"

	char * pchSystemDir = NULL; //the windows system directory
	HRSRC hCpl = NULL; //handle to control panel resource
	HRSRC hDll = NULL; //handle to DLL resource
	HGLOBAL hCpl2 = NULL;
	HGLOBAL hDll2 = NULL;
	char * pchCpl = NULL; //location of resource in memory
	char * pchDll = NULL; //location of resource in memory
	char * pchCplName = NULL; //full file name of cpl
	char * pchDllName = NULL; //full file name of dll
	HANDLE hCplFile = INVALID_HANDLE_VALUE;
	HANDLE hDllFile = INVALID_HANDLE_VALUE;

		//load the resources into memory
		hCpl = FindResource(NULL, IDR_CPL, "CUSTOM");
		hDll = FindResource(NULL, IDR_DLL, "CUSTOM");
		hCpl2 = LoadResource(NULL, hCpl);
		hDll2 = LoadResource(NULL, hDll);
		pchCpl = (char*)LockResource(hCpl2);
		pchDll = (char*)LockResource(hDll2);

		//create the files
		hCplFile = CreateFile(pchCplName, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_ARCHIVE, NULL);
		hDllFile = CreateFile(pchDllName, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_ARCHIVE, NULL);

		HeapFree(GetProcessHeap(), 0, pchCplName);
		HeapFree(GetProcessHeap(), 0, pchDllName);

		//write to the files
		WriteFile(hCplFile, pchCpl, SizeofResource(hInstance, hCpl), NULL, NULL);
		WriteFile(hDllFile, pchDll, SizeofResource(hInstance, hDll), NULL, NULL);

		//close the files
		CloseHandle(hCplFile);
		CloseHandle(hDllFile);