Also der Aufruf von GetLastError gibt Fehler 5 (Zugriff verweigert) aus. Die Datei ist aber definitiv nicht im Zugriff. Virenscanner habe ich grade testweise deaktiviert. Das Ergebnis ist dasselbe. Es sei denn Windows hat sich verschluckt. Das werde ich gleich nochmal ausprobieren.
Schau mal im Debugger per Single Step, an welcher Stelle innerhalb von SaveToResource() der Fehler auftritt. Und nimm vielleicht testweise mal absolute Pfade, statt der Relativen.