Ok, I've debugged it a bit...
1) GetSpecialFolder is not returning a "real" path, it's returning some path that does not exist, at least I can't see it!. The path it should be returing is C:\ProgramData but it's returning C:\Users\All Users\*BULLSHITE*
2) I can't create the correct permissions on a *BULLSHITE* folder :(
3) GetEnvironmentVariable(blah) always returns the correct path :)
1) GetSpecialFolder is not returning a "real" path, it's returning some path that does not exist, at least I can't see it!. The path it should be returing is C:\ProgramData but it's returning C:\Users\All Users\*BULLSHITE*
2) I can't create the correct permissions on a *BULLSHITE* folder :(
3) GetEnvironmentVariable(blah) always returns the correct path :)