My Windows SDK has `REG_APP_HIVE` defined to 0x10. It also has `REG_PROCESS_PRIVATE` as 0x20, which is presumably what `REG_PROCESS_APPKEY` gets mapped to.
If the tests aren't going to work on Win 7, then skip them as soon as the first call returns `STATUS_INVALID_PARAMETER_6`.
Since you've found that the key return is only available for an app key, then I don't think it makes sense to split this MR up as I'd previously suggested. That means we need the filename logic back in.
A couple of notes on that: When passing strings to the server, we typically don't nul-terminate them and pass the length instead. Also, there is logic there already that copes with loading and saving branches i.e. the `save_branch_info` stuff. Have you looked into adapting that?