Alternativas al uso de NTFS transaccional

Dado que Microsoft tieneNTFS transaccional en desuso (TxF):

Microsoft recomienda encarecidamente a los desarrolladores que utilicen medios alternativos para satisfacer las necesidades de su aplicación. Muchos escenarios para los que se desarrolló TxF se pueden lograr a través de técnicas más simples y más fácilmente disponibles. Además, es posible que TxF no esté disponible en futuras versiones de Microsoft Windows.

Si bien TxF es un poderoso conjunto de API, ha habido un interés muy limitado por parte de los desarrolladores en esta plataforma desde Windows Vista, principalmente debido a su complejidad y los diversos matices que los desarrolladores deben considerar como parte del desarrollo de aplicaciones. Como resultado, Microsoft está considerando despreciar las API de TxF en una versión futura de Windows para enfocar los esfuerzos de desarrollo y mantenimiento en otras funciones y API que tienen más valor para la mayoría de los clientes.

Esto significa que necesito una alternativa a:

CreateTransactionMoveFileTransactedCommitTransaction

Mis requisitos de transacciones son bastante simples: mueva dos archivos:

tx = BeginTransaction();
{
   MoveFile(testResults, testResultsArchive); //throws if there's a problem
   MoveFile(cdcResponse, cdcResponseArchive); //throws if there's a problem

   CommitTransaction(tx);
}
finally
{
    CloseHandle(tx);
}

he pensado en girarMoveFile dentroCopyFile + DeleteFile:

CopyFile(testResults, testResultsArchive); //throws if there's a problem
CopyFile(cdcResponse, cdcResponseArchive); //throws if there's a problem

DeleteFile(testResults);
DeleteFile(cdcResponse);

Pero esperaba unbueno Solución, no una solución de buggy. Así que intento de nuevo:

CopyFile(testResults, testResultsArchive); //throws if there's a problem
CopyFile(cdcResponse, cdcResponseArchive); //throws if there's a problem

try
{
    DeleteFile(testResults);
}
catch (Exception e)
{
   DeleteFile(testResultsArchive);
   throw e;
}
try
{
    DeleteFile(cdcResponse);
}
catch (Exception e)
{
   DeleteFile(cdcResponseArchive);
}

Excepto que esperaba unabueno Solución, no un buggy.

Respuestas a la pregunta(2)

Su respuesta a la pregunta