使用UAC为RegisterDeviceNotification()创建FileFile()

时间:2011-02-14 13:08:37

标签: winapi uac device createfile

是否可以在启用UAC的情况下将RegisterDeviceNotification()用于系统驱动器?它在没有UAC的情况下完美运行,但是UAC CreateFile()因访问被拒绝而失败。

以下是调用CreateFile的方法:

aHandle:= CreateFile(PChar(sDevice),GENERIC_READ,FILE_SHARE_READ,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);

有没有办法调整CreateFile()参数以获得驱动器的最低读取权限,或者根本没有管理员权限是不可能的?

提前致谢。

2 个答案:

答案 0 :(得分:0)

您是否尝试使用GENERIC_READ以外的其他内容?即使0也可能有用。 FILE_SHARE_READ也有点限制,您可能需要在循环中运行它并尝试所有共享模式......

答案 1 :(得分:0)

对于文件系统更改,FindFirstChangeNotification(MSDN)是您的朋友。只需为您感兴趣的目录设置通知,然后就可以了。为此搜索StackOverflow,您将获得有关此主题的大量点击。

要监控磁盘空间,GetDiskFreeSpaceEx(MSDN)是您的朋友。只需在需要当前卷的状态时调用它。