C# C OpenFileDialog未显示网络位置或映射的驱动器

C# C OpenFileDialog未显示网络位置或映射的驱动器,c#,winforms,C#,Winforms,我正在winforms.net 3.5应用程序中使用C OpenFileDialog浏览文件,但无法查看映射的网络位置,我的代码如下: OpenFileDialog ofd = new OpenFileDialog(); string desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); ofd.InitialDirectory = desktop;

我正在winforms.net 3.5应用程序中使用C OpenFileDialog浏览文件,但无法查看映射的网络位置,我的代码如下:

        OpenFileDialog ofd = new OpenFileDialog();
        string desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
        ofd.InitialDirectory = desktop;
        ofd.Filter = "Word 97-2003 Documents (*.doc)|*.doc|Word 2007 Documents (*.docx)|*.docx";
        System.Windows.Forms.DialogResult dr = ofd.ShowDialog();
        if (dr == DialogResult.OK)
        {
            txtFilepath.Text= ofd.FileName;
        }
我正在使用Win7操作系统。

试试这个

FolderBrowserDialog fbd = new FolderBrowserDialog();

fbd.Description = "Custom Description";
fbd.SelectedPath = <A path to your mapped drive>;

我也有同样的问题。我想我知道了,或者至少是其中的一部分

网络位置由用户创建。这意味着,如果用户Jeff创建了一个网络位置,只有他在试图通过程序打开文件时才能看到该网络位置

例如:

我们的用户Jeff打开记事本并尝试通过记事本界面file>open打开一个文件。然后,他将能够看到网络驱动器并打开他想要的任何文件

如果我们的同一个用户Jeff以管理员身份打开记事本,这意味着它以另一个用户的身份打开并尝试打开一个文件。他将无法看到网络位置。当然,在这两种情况下,您都可以使用\\servername\mapname等导航到服务器

我找到了可能的解决办法

解决方案1: :

1-运行regedit

2-找到HKEY_LOCAL_机器/软件/Microsoft/Windows/CurrentVersion/Policys/System

3-创建名为EnableLinkedConnections、值为1的新DWORD条目

4-重新启动计算机

5-现在您可以在这些安装程序或应用程序中查看和使用网络驱动器

解决方案2:

添加包含以下行的脚本

net use e: /delete
net use e: \\myserv\myshare

在文件夹:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp for all User中。

您的程序是否以管理员身份运行?提升程序时,驱动器映射会丢失。这与C或Winforms无关。从记事本的文件+打开(例如,相同的对话框)中尝试。以管理员的身份运行,尝试记事本的文件->打开,可以在那里看到映射的网络驱动器,但它没有显示在我的应用程序中。我没有管理员权限,我直接将您的代码粘贴到我的一个项目中,我可以查看和选择映射驱动器中的文件。我也在使用Win7 Pro。在Windows 10上观察到了这一点