使用 C# 创建目录时访问被拒绝
Posted
技术标签:
【中文标题】使用 C# 创建目录时访问被拒绝【英文标题】:Access Denied in creating directory using C# 【发布时间】:2011-09-27 14:38:46 【问题描述】:string windowsDirectory = Environment.GetEnvironmentVariable("ProgramFiles");
string mydirecoty = windowsDirectory + "\\" + "NetServices\\";
if (!Directory.Exists(mydirecoty))
Directory.CreateDirectory(mydirecoty); //Access to the path 'C:\Program Files (x86)\NetServices\' is denied.
当我在没有管理员帐户的情况下运行我的 .net 应用程序时引发异常。如果我尝试在其他 C:\
驱动器中创建目录,例如 D:\
,它运行良好。
我想在Program Files/ Windows
文件夹中创建目录的解决方案是什么?
【问题讨论】:
这是一个基于 Web 的应用程序、Windows 服务、可执行还是计划任务? 请使用异常的详细信息编辑您的问题,在您的代码中,您至少应该对代码进行尝试/捕获。它在 Windows 7 上运行吗?您是否 100% 确定您是管理员并且 UAC 已禁用?通常,除非您正在安装应用程序,否则不应在该位置创建子文件夹,但通常由安装程序完成。 您可以强制您的应用程序以管理员身份运行:***.com/questions/2818179/… @lovecomputerscience - 这不是字典,而是目录。 我建议你完全避免在其中创建文件夹:) 【参考方案1】:C:\program files
文件夹在 Vista 和 Windows 7(以及 Windows Server 2008 / 2008 R2)中受到保护(设计) - 普通用户帐户无权在其中创建目录 -这是一个系统文件夹。
您需要以 admin 身份运行 - 然后您有权在受保护的系统文件夹中创建目录 - 或者您在其他位置而不是在受保护的系统文件夹中创建目录。第二个选项将是推荐和首选的选项。
【讨论】:
【参考方案2】:如果您的应用程序旨在由用户运行,请写入用户的应用程序数据文件夹或临时文件夹。您的应用程序应该安装到 Program Files 目录,并且可能使用 Windows 目录中的一些文件,但它永远不必写入任一位置。 您可以轻松地从环境变量中获取用户的应用程序 daa 文件夹。
【讨论】:
【参考方案3】:如果您从 Web 应用程序运行它,请确保应用程序池用户具有该文件夹的 ntfs 权限。
【讨论】:
【参考方案4】:您需要提升用户权限,因为它是 windows vista/7 中的一项功能。 以管理员身份运行将解决问题。
【讨论】:
【参考方案5】:如果您使用高于 Windows XP 的操作系统,您将无法访问 C:\PrpgramFiles 因为读写而受到保护,除非 AVII 您的应用程序具有管理员权限。
再见
【讨论】:
以上是关于使用 C# 创建目录时访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章