Java Windows file with Everyone=READ拒绝访问
我有一个基于Java的应用程序,它在Windows上的C:\ProgramData下创建了许多文件。。。所有用户、来宾和非用户运行的自动化脚本/程序都需要能够读取这些文件。一个示例文件是“ca trust.crt”,它是在应用程序作为服务运行时创建的(没有服务用户被配置为作为本地机器上下文运行) 我的应用程序显式添加了一个ACL,供组中的每个人读取、读取和执行。但是,我的应用程序在尝试打开文件进行读取时会获得“访问被拒绝”。如果我作为普通用户运行Powershell并运行“type C:\ProgramData…”,也会发生同样的情况 有关权限和“键入…”命令输出,请参见下图 如果我以管理员身份打开PS prompt并对同一文件运行“type C:\ProgramData…”,则可以正常工作 使用记事本打开文件也会失败:Java Windows file with Everyone=READ拒绝访问,java,windows,acl,Java,Windows,Acl,我有一个基于Java的应用程序,它在Windows上的C:\ProgramData下创建了许多文件。。。所有用户、来宾和非用户运行的自动化脚本/程序都需要能够读取这些文件。一个示例文件是“ca trust.crt”,它是在应用程序作为服务运行时创建的(没有服务用户被配置为作为本地机器上下文运行) 我的应用程序显式添加了一个ACL,供组中的每个人读取、读取和执行。但是,我的应用程序在尝试打开文件进行读取时会获得“访问被拒绝”。如果我作为普通用户运行Powershell并运行“type C:\Pro
测试系统是Windows 10 Enterprise non-AD-joined。除了所有读取标志外,还向ACL添加了同步,修复了该问题。谢谢你,埃里克森 看起来您没有授予每个人对文件进行
同步的权限。使用Sysinternalsaccesschk-lv
确认这一点。仅供参考,WinAPICreateFile
始终至少请求SYNCHRONIZE | FILE_READ_ATRIBUTES
访问。您添加的ACE应授予通用权限,以确保包括这些权限,例如generic\u READ | generic\u EXECUTE
。谢谢您!添加同步解决了这个问题!不明显,但win32很少明显。请在“允许ACE”中使用通用权限,在“拒绝ACE”中使用特定权限。每个支持安全性的类型都必须提供一个通用映射,该映射将通用权限映射到特定权限。对于文件,通用权限包括同步和读取文件安全性的标准权限。