![应用程序可以读取文件,但用户应用程序在无法读取文件的情况下运行](https://linux22.com/image/1518830/%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%8F%AF%E4%BB%A5%E8%AF%BB%E5%8F%96%E6%96%87%E4%BB%B6%EF%BC%8C%E4%BD%86%E7%94%A8%E6%88%B7%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%9C%A8%E6%97%A0%E6%B3%95%E8%AF%BB%E5%8F%96%E6%96%87%E4%BB%B6%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E8%BF%90%E8%A1%8C.png)
是否可以设置文件的权限,以便用户无法复制该文件(无读取权限),但该用户下运行的应用程序可以读取该文件?
我认为不是,但我不是 100% 确定 - 为了使应用程序能够读取它,运行它的用户必须具有读取权限?
也许可以使用 Windows 策略来设置这样的事情?
答案1
由于应用程序将以用户权限运行,因此如果用户无法读取该文件,应用程序也将无法读取该文件。
您可以尝试设置一个进程,代表运行应用程序的用户模拟另一个用户,该用户可能具有不同的权限。这将需要相当多的工作,并且根据您如何实现这一点,您无论如何都会授予用户该权限,因为他只需查找用于模拟的凭据即可。
另一种方法是检查用户是否无法列出包含该文件的目录的内容。由于用户仍然拥有该文件的读取权限,因此仍然可以打开该文件。这种方法只会朦胧访问而不是阻止它!
答案2
这取决于用户的技术水平。如果他/她受过良好的教育,那么答案是 - 不,但你可以使用各种模糊技巧来“阻止”用户看到实际文件的内容,而这些内容可以通过你的程序访问。最简单的混淆方法是使用替代数据流(ADS)位于 %AppData% 的某处
您能否解释一下您想要实现什么?也许我们可以向您建议更好的解决方案
答案3
如果用户在没有管理权限的情况下运行该应用程序,则该应用程序将无法访问该文件。
如果用户以管理员身份运行应用程序,则程序可以访问文件,而用户则不能。请注意,以管理员身份运行的应用程序拥有更多权限,这可能不切实际。
更好的方法是隐藏文件或以不同的方式存储它,这取决于应用程序的功能以及您对其访问文件的方式的控制程度。
例如,您可以将数据本身存储在网络上的数据库中,或者进行服务器-客户端通信,其中服务器将文件传输到客户端,客户端显示它并在完成后删除副本。本质上,这可能和网络服务器一样简单。请记住,如果用户打开文件,他们可以存储它,然后他们就可以访问它。显示嵌入在网页中的文件可以防止这种情况发生。