C ++ winapi提升

时间:2014-04-25 11:22:08

标签: c++ windows winapi com

我正在开发Windows资源管理器命名空间扩展。我的应用程序是一个动态库,由explorer.exe在某个时候加载和使用。我需要我的DLL在C:\中创建文件,有时在需要提升的其他位置执行此类操作。

如何在C:\执行此类提升并创建文件?

1 个答案:

答案 0 :(得分:1)

如果您的代码在另一个进程内运行,则它受该进程的提升状态的支配。如果该进程未升级,并且资源管理器没有,则您的DLL中的代码无法执行提升。

因此,您的解决方案是创建另一个进程来执行需要提升的任务。使用以下方法之一来做到这一点:

  • 在应用程序清单中指定requireAdministrator的{​​{1}}选项。
  • 使用requestedExecutionLevel动词ShellExecuteEx开始此过程。
  • 将要提升的代码放在COM对象中,并使用COM提升名字对象。