从C ++打开Windows资源管理器不会继承环境

时间:2018-03-29 15:29:32

标签: c++

我正在尝试从C ++代码打开Windows资源管理器并继承我的应用程序的环境。虽然这完全适用于命令提示符(或其他可执行文件),但打开Windows资源管理器不会继承父环境。

// Opens a cmd and inherits
ShellExecute(NULL, _T("open"), _T("cmd"), "", NULL, SW_SHOW);

// Opens an explorer but does not inherit
ShellExecute(NULL, _T("open"), _T("explorer"), "", NULL, SW_SHOW);

此外,尝试使用systemCreateProcess打开资源管理器不会继承任何内容。

system("explorer C:\\");

CreateProcess("C:\\Windows\\Explorer.exe",       
      " C:\\",                
      NULL,
      NULL,
      FALSE,
      CREATE_DEFAULT_ERROR_MODE,
      NULL,
      NULL,
      &StartupInfo,
      &ProcessInfo);

对于CreateProcessundefined behavior非常清楚,当lpEnvironment(第7个)参数设置为NULL时,新进程使用调用进程的环境。

  

lpEnvironment [in,optional]   指向新进程的环境块的指针。如果此参数为NULL,则新进程使用调用进程的环境。

为什么打开Windows资源管理器时不会发生这种情况?

0 个答案:

没有答案