You could probably also use various workarounds, but I can't say I would consider them elegant:
The advantage of .Net is that it is generally easier to develop (if you know where to look for what class and methods to use) than fiddling with Call Library Nodes which will generally do bad things to LabVIEW and your app if they aren't perfectly correctly configured and setup. And it may sometimes appear to work without crash but still corrupt something and you may only run into that problem when you deployed the application in a remote application where you have to take an airplaine to get there! 🙂
But if you know Call Library Nodes well and how to correctly use them, then it's definitely an advantage to go the direct kernel32.dll path as this will not invoke an extra 100MB .Net runtiime system for a simple OS call.