Vista User Account Control Issues in User Mode Driver

I apoligize beforehand if this is not the correct forum for this issue.

Have user mode monlolithic print driver built with WDK 7600.16385.

Built versions for Win7 32 and 64, Vista 32 and 64.

All versions install and run fine.

The issue is with trying to save/recall common user settings and driver state, etc.

On Win7 32 and 64, all boxes that were tested responded perfectly, even with UAC turned up high.

On Vista 32 and 64, recieved mixed results with UAC on.

The most common problem is that I find that I don’t have full control over creating and deleting configuration files. Biggest problem seems to be with Deleting.

Miscrosoft documentation idicates that to be Vista UAC compliant applications need to be careful to only read and write to disk locations which are endorsed by Microsoft.

Their documentation says that configuration files for each separate user should be stored under SHGetSpecialFolderPath = CSIDL_LOCAL_APPDATA, which usually resolves to something like c:\users\jethro_bodine\appdata\local\create companyfolder\put stuff in here.

Configuration info which should be available for all users should be stored in
SHGetSpecialFolder = CSIDL_COMMON_APPDATA, which usally resolves to something like c:\programdata\create compnay folder\put stuff in here.

I am obeying these guidelines in the driver, for both Win 7 and Vista which both use the same source code to make builds.

On Win 7 boxes with UAC on, the configuration files are written and read and deleted with no problems.

On Vista boxes with UAC on, there are intermittent unpredicstable problems from box to box concerning reads and writes, and particulary with trying to delete files. For example the delete will fail because ostensibly lack of authority, the file will remain, etc.

I do not understand this lack of authority, seeing that the very driver previously created the file, and in the “correct” location as well.

In case it is pertinent, practially all of the file reads and writes are done with the standard c libray calls to wfopen_s, fwrite, fread, fflush, fclose, etc.

The Delete is perfomed with Win32 API call DeleteFile().

Have any of you found ways around these kinds of issues, or perhaps even the correct way fo doing this?

Cary J.