2014-07-08 14 views
2

我很好,它准备复制文件时要求用户提升。需要进行复制的程序不能运行提升(它会丢失许多重要的环境变量,而且我无法改变它的启动方式)。我的后备将是让它产生一个实际上做文件拷贝的提升过程,但是我宁愿不必为另一个exe文件添加另一个exe文件。有没有一种方法可以将非高级进程复制文件到受保护的目录?

+2

当然不会,这会使UAC毫无意义。 –

+0

你误会了。我很满意窗户要求提升。我当时希望有一种方法来提升该计划。 – Solx

+1

AFAIK程序启动后无法升级。 –

回答

5

使用COM Elevation Moniker实例化IFileOperation shell界面,则与该接口完成所有的文件操作将被提升,而无需提升调用进程,或者必须创建一个单独的EXE /进程来处理文件访问。

0

您需要使用runas动词ShellExecute副本。这会导致副本升级。这个升级的过程可以做到这一点。

通常你通过自己的副本的命令行选项,说明你想要做的事保护:

的ShellExecute(0,“运行方式”,“Frobber.exe”,“-doThatThingThatRequiresElevation”,“” );

+0

虽然这确实有效(在显示需要提升权限的UI对话框时我自己使用它),但如果您的应用的启动代码需要进行大量调整以避免创建在此运行时不会使用的内容,则它可以是PITA特殊模式。 –

相关问题