I have an application that needs to monitor the primary drive for file changes via `ReadDirectoryChangesW`. However, when UAC is enabled, it doesn't work. 

All of the Windows API calls succeed, but I'm not notified of any changes.

I can work around this by individually monitoring each directory in the root, but this is a problem, because it can potentially cause a blue screen if there are too many directories.

Is there an acceptable way to get around UAC and receive file change notifications on the entire primary drive?

The relevant `CreateFile` and `ReadDirectoryChangesW` is below. In the case where it doesn't work, `directory` is C:\. If I monitor any secondary drive (i.e. E:\, F:\, G:\) it works as expected. None of the calls return errors.

```
HANDLE fileHandle = CreateFileW(directory.c_str(), FILE_LIST_DIRECTORY, 
    FILE_SHARE_READ | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, 
    FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED, NULL);

BOOL success = ReadDirectoryChangesW(fileHandle, watched.buffer.data(),
    watched.buffer.size(), TRUE, 
    FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_LAST_WRITE, 
    NULL, &watched.overlapped, NULL);

```

Interestingly, the .NET `System.IO.FileSystemWatcher` **does** work correctly, and it uses the exact same functions and parameters as I'm using, but it behaves correctly.