如何在已打开的管理员程序中调用system()并赋予相同的权限?

4

我正在Windows中编写一个以管理员身份运行的c++应用程序。然而,在调用system()命令时,似乎该命令没有管理员权限(无法在C:\Program Files (x86)\目录中创建文件)。

我如何避免使用CreateProcess


你一定要使用 system() 吗?如果只是创建文件,你可以完全使用文件 IO。你实际上是用这个命令做什么的? - Serdalis
1
我正在使用adb pull,仅供个人使用。 - 0x90
1
我觉得很难相信一个提升的进程会启动另一个非提升的进程。system 函数的实现方式是如何实现这一点的? - David Heffernan
@LightnessRacesinOrbit CreateProcess 实际上不允许您请求提升权限。您可以使用 runas 动词来调用 ShellExecute,或者使用清单文件来实现。但不能通过 CreateProcess 实现。 - David Heffernan
我认为你的问题在别处。请向我们展示调用“system()”的代码。 - Harry Johnston
显示剩余2条评论
1个回答

5
如果您使用 system,您可以使用以下内容:
system("runas /user:<admin-user> \"program.exe\"");

或者使用ShellExecute

ShellExecute(hwnd, "runas", "program.exe", 0, 0, SW_SHOWNORMAL);

这个Stackoverflow问题
很好地详细介绍了CreateProcess方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接