CreateProcessAsUser:如何使用默认应用程序打开文件?
问题描述:
我在C++代码中使用CreateProcessAsUser来打开模拟用户的应用程序。如果给出了可执行文件,但使用非可执行文件失败,则此方法运行良好。CreateProcessAsUser:如何使用默认应用程序打开文件?
什么是使用CreateProcessAsUser以默认应用程序打开不可执行文件的最简单方法。
我需要一个解决方案等不是通过:
cmd.exe /S /C ""path_to_my_file""
答
最简单的解决办法如下:
- 从最初的过程中,进程A说,使用
CreateProcessAsUser
创建一个新的进程,过程B,说。进程B作为一个不同的用户运行。 - 传递给进程B命令行参数,用于指定要打开的文件。
- 从进程B调用
ShellExecute
或ShellExecuteEx
来打开其他文件。
为了扩展这一点,进程B可以是'cmd.exe'(如果OP尚未排除该解决方案)或专用的独立可执行文件,或者它可能与父进程具有相同的可执行文件,但用命令行开关告诉它该做什么。 – 2013-02-24 01:58:03
@HarryJohnston感谢大卫和哈里的解决方案和阐述。我喜欢用命令行切换自我调用的想法。 (@Harry:使用cmd.exe不需要进程B,它可以直接由CreateProcessAsUser调用。) – ARF 2013-02-24 09:33:21
如果你想让shell找出如何打开一个特定的文件,那么据我所知,这种方法是唯一的解决方案。 – 2013-02-24 09:34:18