2013-02-23 164 views
0

我在C++代码中使用CreateProcessAsUser来打开模拟用户的应用程序。如果给出了可执行文件,但使用非可执行文件失败,则此方法运行良好。CreateProcessAsUser:如何使用默认应用程序打开文件?

什么是使用CreateProcessAsUser以默认应用程序打开不可执行文件的最简单方法。

我需要一个解决方案等不是通过:

cmd.exe /S /C ""path_to_my_file"" 

回答

2

最简单的解决办法如下:

  1. 从最初的过程中,进程A说,使用CreateProcessAsUser创建一个新的进程,过程B,说。进程B作为一个不同的用户运行。
  2. 传递给进程B命令行参数,用于指定要打开的文件。
  3. 从进程B调用ShellExecuteShellExecuteEx来打开其他文件。
+0

为了扩展这一点,进程B可以是'cmd.exe'(如果OP尚未排除该解决方案)或专用的独立可执行文件,或者它可能与父进程具有相同的可执行文件,但用命令行开关告诉它该做什么。 – 2013-02-24 01:58:03

+0

@HarryJohnston感谢大卫和哈里的解决方案和阐述。我喜欢用命令行切换自我调用的想法。 (@Harry:使用cmd.exe不需要进程B,它可以直接由CreateProcessAsUser调用。) – ARF 2013-02-24 09:33:21

+0

如果你想让shell找出如何打开一个特定的文件,那么据我所知,这种方法是唯一的解决方案。 – 2013-02-24 09:34:18

相关问题