【发布时间】:2013-10-23 03:16:27
【问题描述】:
我使用了一个很好的例子here 来获取我的驱动器列表。它似乎正在工作,但我很确定我有一个逻辑错误,因为它只列出了我最后一个“本地”和我最后一个“网络”驱动器。如果有人可以提供建议,那就太好了。
这是我的代码:
protected void Page_Load(object sender, EventArgs e)
{
DriveInfo[] drives = DriveInfo.GetDrives();
foreach (DriveInfo drive in drives)
{
bool isLocal = IsLocalDrive(drive.Name);
if (isLocal)
{
loc = drive.Name;
}
else
{
net = drive.Name;
}
}
local = loc + " ~ ";
network = net + " ~ ";
}
和
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = "Local drives: " + local;
Label2.Text = "Network drives: " + network;
}
这只会产生:
本地驱动器:D:\ ~
网络驱动器:Z:\ ~
正如我所料:
本地驱动器:A:\ ~ C:\ ~ D:\ ~
网络驱动器:H:\~I:\~J:\~P:\~U:\~V:\~W:\~X:\~Z:\~
【问题讨论】:
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
您知道这只会使驱动器位于服务器上而不是客户端计算机上,对吗?只要这是您想要的,那很好,但是您标记了 ASP.Net,所以我假设有人正在通过网络访问您的服务器。不知道知道哪些本地服务器驱动器可用会对访问者做什么......
-
@JohnSaunders 谢谢,我会记住的。
-
@MichaelTodd 我一定误解了这个例子。我会继续研究,因为最终结果将是为用户提供一个保存数据的地方,但应该只选择他们的网络驱动器(而不是本地驱动器),以便整个“团队”都可以访问。
-
@MichaelTodd 的意思是您将永远能够通过使用 Web 应用程序获取客户端计算机上的驱动器列表。这将是严重的安全漏洞。