访问应用程序而非用户的共享文件夹

时间:2019-04-18 07:41:57

标签: windows delphi network-programming smb shared-directory

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

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

好吧,他们无法读取敏感数据,因为它已加密,但是-出于某种犯罪或愚蠢的考虑,他们只需打开Windows资源管理器,导航到该共享文件夹并在其中删除文件即可。

我尝试但仅设法为应用程序打开SMB共享-一旦我的应用程序在那里进行身份验证,当前的Windows用户也可以访问。

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

是否有可能仅对进程或线程进行身份验证,而不对当前用户进行身份验证以访问网络共享?

或者有替代SMB股票的高效选择吗?一条数据记录的大小在100到900 MB之间。因此,我需要支持对文件的随机访问读取/写入。

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

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

  

是否有可能仅对进程或线程进行身份验证,而不对当前用户进行身份验证以访问网络共享?

不。 Windows的安全模型基于用户,而不是应用程序。要基于每个进程应用权限,您必须以给定用户身份运行该应用程序。要基于每个线程应用权限,您必须在执行工作之前模拟给定的用户,然后在完成后还原模拟。