gpt4 book ai didi

windows - 在 C :\Program Files (x86)\MyApp\myapp. cfg 中写入配置文件,与管理员权限

转载 作者:可可西里 更新时间:2023-11-01 10:24:19 26 4
gpt4 key购买 nike

我已经为我的软件制作了安装程序(使用Inno Setup),最终安装在

C:\Program Files (x86)\MyApp\myapp.exe

像往常一样在 Windows 平台上运行,并且运行良好。

当我的软件试图在此处写入其配置文件时出现问题:

C:\Program Files (x86)\MyApp\myapp.cfg

这里出现了一个Permission denied错误!

我找到的唯一解决方案是“以管理员身份运行软件”,但我不喜欢这个解决方案:我不想让最终用户每次都必须执行“以管理员身份运行”他们将使用该软件。

是否有一个干净的解决方案可以在 C:\Program Files (x86)\MyApp\myapp.cfg 中写入而不要求最终用户“以管理员身份运行” ?

最佳答案

正如@TLama 所说,永远不要尝试写入应用程序文件夹。这从来都不是推荐的做法,因为 Vista Microsoft 已禁用它(首先允许您写入但实际上将写入重定向到另一个目录,该功能在后来的操作系统版本中似乎已被删除 - 这也是一件好事,因为它正在制作支持 hell )。

要检索已知文件夹路径,请使用 SHGetFolderPath 功能。根据应用程序数据是在所有用户之间共享还是仅供运行该应用程序的用户使用,您应该调用 SHGetFolderPath CSIDL_COMMON_APPDATA CSIDL_LOCAL_APPDATA 分别。避免直接在这些文件夹中写入,而是创建子文件夹,如 <your company>\<your app>并改用它们。

请注意 SHGetFolderPath已被弃用, SHGetKnownFolderPath 应该代替它使用,但前提是您不需要与 Vista 之前的 Windows 版本兼容。

为了完整起见,this thread还介绍了如何导入 SHGetFolderPath进入 Python。

更新:更正以避免使用环境变量和 SHGetFolderPath而不是根据@RemyLebeau @TLama 的评论

关于windows - 在 C :\Program Files (x86)\MyApp\myapp. cfg 中写入配置文件,与管理员权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22095286/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com