访问应用程序的共享文件夹,但不是用户

Access to a shared folder for an application, but not the user

我有一个应用程序(在纯 windows 环境中)需要存储敏感数据,以便具有相同应用程序的其他工作站可以访问该数据。 目前,这是使用带有 SMB 网络共享和加密文件的中央服务器完成的。 使用我们的应用程序的所有 (windows) 用户都必须 read/write 访问一个中央共享文件夹,并通过这种方式存储和交换数据。

此配置有一个很大的缺点:不仅应用程序而且我们应用程序的所有用户都可以完全访问该共享文件夹。

好吧,他们无法读取敏感数据,因为它是加密的,但是 - 考虑到一些犯罪能量或愚蠢 - 他们可以简单地打开 windows 资源管理器,导航到该共享文件夹并删除文件那里。

我试过但没能只为我的应用程序打开 SMB 共享 - 一旦我的应用程序在那里进行身份验证,当前 windows 用户也可以访问。

(我尝试使用 WNetAddConnection2,但一旦进行身份验证,连接也会为所有其他程序打开。如果我不将 SMB 文件夹映射到驱动器号,我什至无法断开连接再次开车)

是否可以仅验证进程或线程而不验证当前用户以访问网络共享?

或者是否有 SMB 股票的高性能替代品?一条数据记录的大小在 100 到 900 MB 之间。因此,我需要支持对文件的随机访问 reading/writing。

打开时使用 SFTP 并将整个数据泵送到工作站,然后在关闭时将所有数据发回,这不是一种选择。这会给网络带来压力,如果应用程序崩溃,所有更改都会丢失,而使用 "normal" 访问时只会丢失网络缓存中的数据。

有什么建议吗?

Are there possibilities to authenticate only a process or a thread and not the current user for access to a network share?

没有。 Windows' 安全模型基于用户,而不是应用程序。要在每个进程的基础上应用权限,您必须 运行 作为给定用户的应用程序。要在每个线程的基础上应用权限,您必须在执行工作之前模拟给定用户,然后在完成后恢复模拟。