gpt4 book ai didi

winapi - 是否有 API 调用提示用户进行 UAC 提升?

转载 作者:行者123 更新时间:2023-12-03 00:35:16 25 4
gpt4 key购买 nike

我的应用程序需要写入\ProgramData 中可以 protected 文件。安装后只会发生一次。

是否有 API 函数可以获取 ACL 信息并提示用户授权应用程序访问该文件?换句话说,应用程序会要求 Windows 提示用户进行确认和授权。这应该以交互方式发生,并允许应用程序在授权访问文件后恢复执行。该应用程序以标准用户身份运行,不需要管理员权限。

文件通过 CreateFile() 打开。

编辑:我的查询和其他据说是重复的查询之间存在细微的差异。我正在请求访问一个特定对象(文件)的权限。其他人则要求提升整个过程的权限。不管怎样,我很感谢所有包含解决方案的回复。

最佳答案

如果您不想提升整个应用的性能,您有以下几种选择:

  1. 生成一个单独的提升进程只是为了访问该文件。将 ShellExecute/Ex()runas 动词结合使用,或 CreateProcessElevated() ,运行应用程序的第二个副本或另一个辅助应用程序,并使用命令行参数告诉它要做什么。如果需要,主进程可以等待第二个进程退出。

  2. 创建一个 COM 对象来访问该文件,然后使用 COM Elevation Moniker以提升状态运行 COM 对象。

  3. 使用 CredUIPromptForCredentials() 提示用户输入凭据或CredUIPromptForWindowsCredentials() (有关更多详细信息,请参阅 Asking the User for Credentials),然后使用 LogonUser() 登录到指定帐户。要获取 token ,请使用 ImpersonateLoggedOnUser() 模拟该 token ,根据需要访问该文件,然后使用 RevertToSelf() 停止模拟并使用 CloseHandle() 关闭 token .

关于winapi - 是否有 API 调用提示用户进行 UAC 提升?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31844584/

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