2013-02-23 175 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

相關問題