.Net 为我们提供了一个 FolderBrowserDialog 控件来浏览文件夹。然而,这是一个模式对话框。我需要创建一个可以放到表单上的用户控件。所以,我一直在考虑创建自己的,我需要在其中获取所有本地驱动器、映射网络驱动器、UNC 共享和 Web 文件夹(WebDAV/SharePoint)。我使用的是 Windows 7 和 .Net 4.0。
本地和映射网络驱动器
我可以从 DriveInfo.GetDrives() 获取本地驱动器。但是,这些仅向我显示可用/在线的驱动器。在 Windows 资源管理器中,您还会看到已断开连接/不可用的映射网络驱动器。
网络文件夹/UNC 共享
根据我目前所发现的,.Net 中似乎没有枚举 UNC 共享的机制。看来我必须使用 Interop 到 Win32 API 才能使用WNetOpenEnum和WNetEnumResource函数来枚举网络邻居。我得到了这个工作,但想知道是否有其他方法。
Web (WebDAV) 文件夹和 SharePoint
在 Windows 资源管理器中,我配置了几个 WebDAV 文件夹。使用上面相同的互操作调用WNetOpenENum,WNetENumResource我得到了一个节点“Web 客户端网络”,并且出现了已连接和可访问的 WebDAV 文件夹。
问题
WNetEnumResource要回我要“微软终端服务”的空节点。如何过滤掉这个,而不是基于英文文本过滤?WNetEnumResource不是我在创建它们时分配给它们的用户友好名称,而是采用 IP-Address@Port 格式,例如\\nnn.nnn.nnn.nnn@18123. 如何获取 Web 文件夹的用户友好名称?c# shared-directory network-share web-folders filesystem-browser
安全问题:使用难以猜测的名称(8个符号,而不是简单的"管理员"或"服务")在服务器上命名文件夹是一个好习惯吗?我问的是文件夹不仅包含图标或.js文件或.css文件,而且包含.php文件,并受.htaccess文件保护(全部拒绝).
我在网站上工作了很长时间,并且工作正常,最近报道了一个问题,我需要经历这个问题.
在我的网站上有一个名为repository的文件夹,其中包含word和PDF文档等文件,理想情况下只允许登录用户下载它们,但现在已经发现任何未登录该网站的人甚至可以下载它们:(
如果没有将文件夹移出Web目录,有没有办法处理它?就像使文件夹密码受到保护而只有我的页面可以访问内容一样,任何代码示例或链接都将被高度使用.
我的Web应用程序在带有C#的ASP.NET 2.0中,服务器有IIS 6.0.
提前致谢
编辑:
我的Web.Config中包含以下标记:
<authentication mode="Forms">
<forms slidingExpiration="true" loginUrl="Login.aspx" defaultUrl="HomePage.aspx" name=".ASPXMAIN" timeout="30">
</forms>
</authentication>
<authorization>
<deny users="?" />
</authorization>
Run Code Online (Sandbox Code Playgroud)