0

我正在开发的应用程序需要能够跨 Linux、OSX 和 Windows [Vista] 编辑某些受保护的文件。通常,当应用程序需要以提升的权限执行某些操作时,会出现一个密码请求对话框,要求用户验证他们是否希望允许应用程序以管理员身份执行这些操作。

我相信一般来说,Windows Vista 使用 Manifest 文件,OSX 有授权库(https://developer.apple.com/mac/library/documentation/Security/Reference/authorization_ref/Reference/reference.html),Linux 有一个各种 sudo 前端。

是否有一种普遍可接受的跨平台处理方式?我不希望我的应用程序必须以 root 用户身份运行,但我确实希望它能够打开受保护的文件以进行读/写操作,然后恢复到正常用户模式。

4

1 回答 1

0

对于 Windows Vista,您基本上需要一个专用进程来执行管理操作。正如您所提到的,启用管理员的进程将需要一个清单来指定请求的执行级别(有关详细信息,请参阅此MSDN 文章)。

如果您仔细查看任何启动非提升并支持“提升”本身的 Windows 应用程序,您会发现它实际上会在需要管理权限时打开一个全新的进程(例如,在启用 UAC 时转到任务管理器,单击“显示所有用户的进程”并注意它是如何以管理员权限重新打开的)。

因此,对于 Windows,您可能需要的体系结构需要两个进程:一个完成大部分工作的标准进程,以及一个调用来执行管理操作的管理进程。这两个进程需要通过某种安全方式(可能是安全的命名管道)进行通信,以便可以代表标准进程完成管理工作。

这种方法可以在其他平台上推广,并且可能可以抽象为某种类/接口,这样特定于平台的细节就不需要泄漏。

于 2009-09-10T04:33:58.187 回答