如何在 root 用户拥有的文件夹中以编程方式创建文件

How to create a file programmatically in a folder owned by root user

本文关键字:编程 方式 文件 创建 文件夹 root 用户 拥有      更新时间:2023-10-16

我正在用Qt开发一个应用程序。我需要在位置/usr/share/applications 中创建一个文件。以下是我的代码

  QDir::setCurrent("/usr/share/applications");
  QFile launcherFile;
  launcherFile.setFileName("aptana.desktop");
  int status = launcherFile.open(QIODevice::WriteOnly | QIODevice::Text);
  QTextStream stream(&launcherFile);
  stream<<"Create file";
  launcherFile.close();

调试时我没有收到任何错误,但也没有创建文件。我认为这是一个权限问题,因为我登录的用户没有访问此文件夹的权限。我已经看到其他应用程序(如Synaptic Manager)在继续使用该应用程序之前提示输入管理密码。同样,无论如何,我可以在其中弹出对话框,询问密码并获得以root用户身份创建文件的凭据吗?还有什么其他方法可以解决这种情况?

我刚刚找到了一种方法来解决请求根权限并做某事的一般问题。Dio3调用system()并将密码传递给cmd级别。我不知道有什么方法可以"通过系统读取文件并使 QT-API 满意,但您可以通过这种方式更改文件权限......但是每个人都对严肃的文件这样做应该有安全噩梦:)