限制 OpenFileDialog 只访问网络文件

Restrict OpenFileDialog to access only network files

我想稍微自定义我的 OpenFileDialog 以便它 只能访问我的网络 PC (tsclient) 而不能访问我的本地驱动器和下载文件夹。

我不知道要实现这个。因此,我正在使用 临时替代方案,它将默认位置设置为网络但不阻止本地资源使用。

openFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.NetworkShortcuts);

谁能告诉我如何阻止本地资源使用但让网络资源可访问?

希望您可以在用户点击"OK/Open"任何文件后检查选中的filepath(或FileName ).

如果filepath不是网络filepath,您应该拒绝它并要求用户重复选择。

例如,如果 Z:\ 是您的网络文件夹,那么您可以这样编写代码,

bool accepted;
do {
    accepted = false;
    OpenFileDialog ofd = new OpenFileDialog();
    DialogResult result = ofd.ShowDialog();
    if (result == System.Windows.Forms.DialogResult.OK) {
        accepted = ofd.FileName.Substring(0, 3) == "Z:\"; //change this to your network folder
        if (accepted) {
            //accepted network folder, do something
        } else {
            //accepted network folder, gives warning with message box
        }
    } else if (result == System.Windows.Forms.DialogResult.Cancel) {
        accepted = true; //if the user chooses cancel, he can go out of the loop
    }
} while (!accepted); //prevents unaccepted answer

编辑:

  1. 以上示例仅限于给出主要思想,即您可以在批准之前检查用户选择的filepath。据了解,Z:\ 可能并不总是网络文件夹所在的位置。

  2. 如果您需要更动态的方式来确定驱动器是否在网络中,我建议您查看 DriveInfo.DriveType.

  3. 如果您需要更强大的检查方法,您可以在 newly-defined 配置文件之一中创建 client-specific 可访问文件夹列表。

  4. 并且如果您有多个拥有不同权限的用户,在确定用户是否可以继续使用该文件之前,您需要检查用户的权限以及访问的文件夹。

  5. 所有情况下,它们的主要思想相同:必须先接受用户输入才能继续。这个主要思想就是我在上面的例子中展示的那个。

希望它能澄清