用于检查Win2K / XP中目录的写权限的代码

时间:2008-10-13 15:53:46

标签: c++ windows security permissions atl

问候!

我正在尝试使用C ++检查Windows MFC / ATL程序中的目录写权限。我的第一个猜测是使用C标准_access函数,例如:

if (_access("C:\mydir", 2) == -1)
   // Directory is not writable.

但显然在Windows 2000和XP上,_access无法确定目录权限。 (右键单击资源管理器中的目录时,“属性”对话框中的“安全”选项卡)那么,是否有一种优雅的方法可以使用任何Windows C ++库在Windows 2000 / XP中确定目录的写入权限?如果是这样,怎么样?

由于

埃文

3 个答案:

答案 0 :(得分:4)

您可以使用GENERIC_WRITE访问权限调用CreateFile来检查这一点。 http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx

它不是一个C ++库,但它仍然很优雅,因为它直接做你想要的......

答案 1 :(得分:1)

使用sec api。 你可以问Adv。 Win32 api新闻组: 新闻://194.177.96.26/comp.os.ms-windows.programmer.win32 它经常被讨论过(C / C ++代码)

答案 2 :(得分:1)

有很多Windows security functions,虽然我不会称它们的用法特别优雅。我建议将GetNamedSecurityInfo作为一般解决方案,但CreateFile解决方案具有一定的简洁性和直接性,我也很欣赏。 :)