Maybe you could try using subversion. There are libraries for controlling it from C#. So to begin a transaction you just start working, and to roll back, you do a rollback. Committing your svn tree finishes your transaction.
I don't know if this is too simple an approach. It might well be, but what you have described only requires some of the properties of a transaction. Specifically, you've indicated you need atomicity (i.e. the ability to roll back changes to several files simultaneously). Durability is implied, but the commit gets you that.
You haven't mentioned any consistency constraints other than that there are initialisation conditions and exceptions, but presumably your code could deal with these, and force a rollback if any rule is broken.
Isolation is either hard or easy. It all depends on whether you need to support more than one transaction at once. Is it a requirement that you allow concurrent updates? If not, just build something to enforce serial access to the system, and you're finished. If you need concurrent updates, I'm afraid I'm out of ideas :-)