在vb.net中使用用户名和密码字符串访问网络共享文件夹

时间:2010-04-28 07:13:32

标签: .net

我正在使用以下代码从仅限一个用户的网络文件夹中读取详细信息

shell("net use q: \\serveryname\foldername /user:admin pwrd", AppWinStyle.Hide, True, 10000)
            Process.Start(path)
shell("net use q: /delete")

当我运行它打开任何pdf或jpg或除word / excel / powerpoint之外的任何其他文件时,一切正常。但问题出现在我访问word文件时。

在第一步中,我允许访问word文件。 在第二步中,word文件是打开的。 在第三个,我正在删除q驱动器。

问题是word文件仍然是打开的。所以我得到一个dos窗口,说“有些连接仍然连接或搜索某些文件夹,你想强行断开连接” 请帮助....如何访问从代码中提供用户名和密码的word文件(可编辑文件),同时他不能直接访问任何其他文件夹。

2 个答案:

答案 0 :(得分:0)

为什么不将word文件复制到本地驱动器,然后关闭共享,然后打开文件。

虽然我建议可能值得查看其他类型的访问控制。这似乎相当不安全(例如,如果您的进程在第一个命令之后但在第二个命令之前崩溃,那么该共享将保持开放供任何人使用)。

答案 1 :(得分:0)

这似乎是一种非常糟糕的方式。它有很多问题:

  1. 正如您所发现的那样,只要您使用该文件,Word就会保持文件处于打开状态,因此您不能只从其下方拉出共享。
  2. 你无法可靠地知道Word何时完成文件(例如,你不能只是等待进程退出,因为它可能只是一个启动一秒钟的包装器,通知“原始”单词进程打开文件并退出)
  3. 即使你可以可靠地检测到单词何时完成使用该文件,但是你一直打开该共享的事实似乎与你首先锁定它的要求相矛盾
  4. 我假设您没有像这样硬编码的密码,但如果您这样做,那么只需打开您的可执行文件并找到密码就可以了。
  5. 也许如果你告诉我们为什么你正在尝试这样做,我们可以建议一个更好的方法,但如果你想做的就是提供对该文件的只读访问权限(似乎如果是这样的话,那么你可以只对共享本身授予只读访问权限:根本不需要这个复杂的过程!