【发布时间】:2014-08-28 23:01:47
【问题描述】:
我正在编写一个程序,它需要能够将单个文件上传到 SMB 共享文件夹。虽然程序将使用用户指定的凭据运行,但程序可能需要使用内置在程序中的不同凭据访问 SMB 文件夹。我可以使用WNetAddConnection2,但这允许用户在上传文件夹时访问共享。我不能只使用标准 I/O 访问共享,因为我需要使用指定的凭据访问它,而不是通过登录用户的权限。
有没有一种简单的方法可以让我使用指定的凭据将单个文件上传到 SMB 共享,而无需通过 WNetAddConnection2 或 net use 创建半永久连接。
【问题讨论】:
-
本地名称可以省略,这还不够吗?
-
省略本地名称将阻止连接显示在资源管理器中,但仍会显示在
net use的输出中,并且在同一会话中以同一用户身份运行的任何其他进程将能够使用连接。这对于 OP 来说可能不够,也可能不够。 -
@AndrewMedico 是的,不是。我可以允许用户绝对不能访问共享上的文件。如果保证共享是只写的,这不会是一个问题,但是由于这个程序将部署在各种环境中,我不能做出这样的假设。
-
您可以通过提供上传服务来完成您需要的工作。它将在与程序不同的会话中运行,因此用户根本无法使用连接。
-
@AndrewMedico 所以换句话说,在
NT AUTHORITY令牌下创建WnetAddConnection2()?