什么可能导致此访问被拒绝错误?
编辑:使用“文档”而不是“我的文档”摆脱了错误。我也被推荐使用Windows特殊文件夹而不是绝对路径。什么可能导致此访问被拒绝错误?
我正在尝试用我正在编写的应用程序替换桌面上的所有快捷方式,该应用程序将具有其自己的快捷方式版本。我计划为新的快捷方式提供一些与旧的快捷方式相同的功能。在做其他事情之前,我想通过打开快捷方式指向的文件或文件夹会很重要。下面是代码样片:
public partial class Form1 : Form
{
Process p1, p2, p3, p4;
public Form1()
{
InitializeComponent();
p1 = new Process();
p2 = new Process();
p3 = new Process();
p4 = new Process();
p1.StartInfo.FileName = "cmd";
p2.StartInfo.FileName = "c:\\Users\\Cheese\\My Documents";
p3.StartInfo.FileName = "c:\\Users\\Cheese\\AppData";
p4.StartInfo.FileName = "c:\\Program Files (x86)";
}
private void button1_Click(object sender, EventArgs e)
{
p1.Start();
}
private void button2_Click(object sender, EventArgs e)
{
p2.Start();
}
private void button3_Click(object sender, EventArgs e)
{
p3.Start();
}
private void button4_Click(object sender, EventArgs e)
{
p4.Start();
}
}
这是Windows 7的家庭高级版。在Visual C#2010 Express中进行调试时出现错误。我在同一个驱动器上打开了其他几个文件夹,如System32,AppData和另一个分区上的各种文件夹。我能够打开各种音乐文件并运行不同的程序。除了我的文档,一切似乎都正常。我认为Windows文件夹会比个人文件的默认位置有更大的限制。我想这不是一个真正的权限问题,但我甚至无法猜测可能是什么问题。我可以用浏览器打开我的文档。我可以将文件移入和移出目录。
这似乎是这样一个简单的事情。我知道有很多我并不完全了解Windows的工作方式,但是这种情况和其他一些情况让我觉得我可能对Windows没有太多了解。为了更好地掌握这个操作系统,我可以研究哪些好书或网络资源?从新手的角度来看,可能重点关注文件管理和系统权限?
至于评论,
在Windows 7下“我的文档”是结到“文档”,试图发动对结的过程将失败,此错误。改为启动“c:\ Users \ Cheese \ Documents”。
或者,如果这是当前用户我的文档文件夹,你应该真的问系统的路径。
var path=System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments);
随着Windows 7“我的文档”已被重命名为“文档”。见Wikipedia。 您尝试打开的路径在您的操作系统中不存在。
它在技术上是存在的,它只是它的一个连接点,当你试图将它作为一个进程启动时它就会失败。 – 2012-04-24 22:17:31
我不这么认为。至少dir不会显示像这样的东西。并且联结sysinternals命令在那里也找不到任何联结。但是,如果您在My Documents下方导航并右键单击My Documents内的文件,您将看到该路径确实是.. \ Documents \ ... Windows 7不创建My Documents连接,但Explorer本身显示已翻译的文件夹用户名称。在我的德国机器上,它被称为“Eigene Dokumente”,当然在那里没有这样的文件夹。 – 2012-04-24 22:34:38
http://en.wikipedia.org/wiki/Special_folder - 此链接显示%USERPROFILE%\ Documents文件的“我的文档”特殊文件夹的位置。然后在底部有一个表格,显示虚拟文件夹。 “我的文档”也作为虚拟文件夹存在。 **“用户的My Documents文件夹的虚拟文件夹;用作桌面虚拟文件夹的子项”**我对特殊文件夹和虚拟文件夹有什么样的想法,但我不太了解“我的文档” 。 – Cheese 2012-04-24 22:48:33
你不应该使用这些硬编码路径。
去与正确的做法是)加上Environment.GetFolderPath(在Environment.SpecialFolder枚举这样
string myDocumentsPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
其他“SpecialFolder”枚举可以found here
使用这是非常重要的GetFolderPath与SpecialFolder枚举一起使用,因为它返回为不同操作系统正确调整的位置,操作系统的本地化以及用户可以在这些位置上执行的更改。
在Windows 7下“我的文档”是“文档”的连接点,它可能是连接处的启动问题。启动“c:\\用户\\奶酪\\文档”时是否出现同样的错误? – 2012-04-24 21:51:08
您是否试图在用户档案中找到该文件夹? – Steve 2012-04-24 21:52:13
解决方案的简单程度几乎可怜。使用“文档”而不是“我的文档”的作品。 – Cheese 2012-04-24 21:55:08