Program Files 文件夹中的程序无法在其自己的目录中创建文件

Program Files 文件夹中的程序无法在其自己的目录中创建文件

这是我第一次在超级用户上提问(尽管我经常参考 stack-overflow 和超级用户),所以如果我犯了任何错误或问题不清楚,请耐心等待,我会根据需要修复任何错误或澄清。

我开发了一个应用程序,比如 MyApp,并创建了一个安装程序,将主可执行文件及其相关依赖项(文件夹和文件)安装到其自己的专用文件夹中C:\Program Files (x86)\MyAppFolder\

问题是,在运行时,它应该在自己的目录(文件夹)中创建日志等文件MyAppFolder。经过一番挖掘,我发现这是因为它没有以管理员身份运行(我的用户是管理员) - 或者更确切地说,这是因为只有管理员才能写入\Program Files,我想。如果我以管理员身份运行我的应用程序,它就可以写入所需的文件和文件夹。

但理想情况下,应用程序不应该能够在自己的文件夹中写入吗?即使它不是以管理员权限运行的?我在这里遗漏了什么?

提前致谢。

答案1

Windows 中不存在“程序自己的文件夹”这样的概念。

存在的概念是“程序的当前文件夹”,默认情况下是程序运行的文件夹。程序拥有的权限来自启动它的用户帐户,而不是程序所在的位置。

这意味着当程序从 Program Files 执行时,它默认以您的帐户运行,并且默认情况下不以管理员身份运行。因此它没有权限写入它所在的文件夹。

程序将其文件写入不受保护的文件夹是有意义的。通常的地方是创建您自己的文件夹 C:\Users\USERNAME\AppData\Local,也可以在环境变量中找到%LOCALAPPDATA%,但这可以是您选择的任何位置。

相关内容