如何赋予'Everybody'文件的完整权限(以编程方式)

时间:2010-06-17 06:23:31

标签: c++ windows-vista file-permissions

4 个答案:

答案 0 :(得分:5)

每个人都尝试+1,但最终我找到了答案:

how to change the ACLs from c++?

我确实需要更改该解决方案的一行,而不是:

ea[0].grfAccessMode = DENY_ACCESS;

到此:

ea[0].grfAccessMode = GRANT_ACCESS;

答案 1 :(得分:2)

您的应用程序可能使用安装程序。当安装程序创建文件夹“MyApp”时,为每个人分配读/写权限。这可能会解决您的问题。有不同的方法,但这取决于您使用的设置类型。

添加了自定义操作信息。

如果安装后文件夹没有所需的权限,您可以在安装序列中添加自定义操作作为可视化基本脚本,这将设置所需的权限。

VBS考试:

    Function SetPermissions()
        Dim strHomeFolder, strHome, strUser
        Dim intRunError, objShell, objFSO

        strHomeFolder = "C:\Test"

        Set objShell = CreateObject("Wscript.Shell")
        Set objFSO = CreateObject("Scripting.FileSystemObject")
        If objFSO.FolderExists(strHomeFolder) Then
            intRunError = objShell.Run("%COMSPEC% /c Echo Y| cacls " _
            & strHomeFolder & " /t /c /g everyone:F ", 2, True)

            If intRunError <> 0 Then
                Wscript.Echo "Error assigning permissions for user " _
                & strUser & " to home folder " & strHomeFolder
            End If
        End If

End Function

答案 2 :(得分:1)

答案 3 :(得分:1)

您必须定义使用CreateFile。详细了解security and access rights。我确信标准C库中的函数使用CreateFile(它不能在Windows上使用任何其他内容),但使用默认安全参数,这对您的情况没有帮助。

我还试图查看SECURITY_ATTRIBUTESSECURITY_DESCRIPTOR内部结构,但要理解它是不是很容易,但这可能是偶然的。