【问题标题】:Fixing file permissions after modifying in C++?在 C++ 中修改后修复文件权限?
【发布时间】:2012-03-06 10:05:53
【问题描述】:

我将我的数据保存在程序的可执行文件中。我将它复制到一个临时文件中,覆盖从 'magic string' 开始的部分并将其重命名为原始文件。我知道这是个坏主意,但我这样做只是为了试验。

到目前为止,我已经完成了所有工作,除了每次替换文件时我都必须重新启用“允许作为可执行文件运行”。有什么方法可以解决这个问题?

附加信息:我使用linux。

【问题讨论】:

  • 您可以根据您知道的脚本类型将其添加到 make 文件或脚本中,以便在需要时将其更改为您认为合适的方式
  • 这样我就明白了:您正在将可执行映像复制到别处,寻找特定模式,修改二进制映像,然后计划再次执行它?这只能以泪水告终。
  • @Chris 我知道;将数据存储在其他地方要好得多。想象一下,如果 PC 在修改文件时崩溃会发生什么。
  • 你想在你的 C++ 程序中运行 "chmod +x " 吗?
  • 或者更糟糕的是,想象一下如果不这样做会发生什么。

标签: c++ linux executable file-permissions self-modifying


【解决方案1】:

如果你想避免使用system(),你可以使用

#include <sys/stat.h>
int chmod(const char *path, mode_t mode);

它记录在http://linux.die.net/man/3/chmod

另请参阅:C++ - How to set file permissions (cross platform)

【讨论】:

    【解决方案2】:

    如果包含stdlib.h,则可以使用system("command")

    试试看:

    system("chmod 755 yourExeFile")
    

    【讨论】:

    • 如果您不想被黑客入侵,请使用 755。
    • 干得不错!也很简单。
    • 可以在上面加分号吗? :)
    猜你喜欢
    • 2015-02-14
    • 2016-05-16
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多