答案 0 :(得分:5)
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_ATTRIBUTES和SECURITY_DESCRIPTOR内部结构,但要理解它是不是很容易,但这可能是偶然的。