限制OpenFileDialog仅访问网络文件

本文关键字:网络 文件 访问 OpenFileDialog 限制 | 更新日期: 2023-09-27 18:28:16

我想自定义我的OpenFileDialog,这样它就可以只访问我的一台网络PC(tsclient)而不访问我的本地驱动器和下载文件夹。

我不知道要做到这一点。因此,我使用临时替代,它将默认位置设置为网络,但不会阻止本地资源的使用。

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

有人能告诉我如何阻止本地资源的使用,但让网络资源可以访问吗?

限制OpenFileDialog仅访问网络文件

想要做用户点击"确定/打开"到任何文件都是为了检查所选的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. 如果您需要更健壮的检查方法,您可以在新定义的配置文件中创建特定于客户端的可访问文件夹列表。

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

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

希望它能澄清