首页 > 解决方案 > 无法创建目录:System.UnauthorizedAccessException 错误

问题描述

我对在 C# 中使用文件和创建目录比较陌生,但我已经被困了一段时间。我收到以下错误:System.UnauthorizedAccessException:'访问路径'C:\ Program Files \ Skyroom'被拒绝。'

这是我的代码以防万一:

if (File.Exists(@"C:\Program Files\Skyroom\gamedata.txt"))
            {
                Console.WriteLine("Game loading. Please wait..");
                Thread.Sleep(500);
                Console.Clear();
                Console.WriteLine("Game loading. Please wait...");
                Thread.Sleep(500);
                Console.Clear();
                Console.WriteLine("Game loading. Please wait.");
                Thread.Sleep(500);
                Console.Clear();
                Console.WriteLine("Game loading. Please wait..");
                Thread.Sleep(500);
                Console.Clear();
                Console.WriteLine("Game loading. Please wait...");
                Thread.Sleep(500);
                Console.Clear();

            }
            else
            {                
                Directory.CreateDirectory(@"C:\Program Files\Skyroom");
                File.Create(@"C:\Program Files\Skyroom\gamedata.txt");
                Main();
            }

谢谢你。任何需要的信息,请问。

标签: c#

解决方案


您收到该错误是因为您的应用程序未以管理员身份运行,并且正在尝试写入仅供管理员使用的 Program Files。

除非您正在编写安装程序,否则您的应用程序将永远不需要以管理员身份运行,以便它可以写入 Program Files。程序文件不适用于将运行时数据写入的应用程序。这是一个供管理员安装应用程序的安全位置。此过程可防止受信任的应用程序文件被恶意更改。

您不应数据写入 ProgramFiles 目录。Windows 有多种用于写入数据的目录,例如 %TEMP%、%APPDATA% 和 %LOCALAPPDATA%。

Windows 环境变量


推荐阅读