2

我有一个程序试图在 Windows 7 中重新启动资源管理器;它首先结束该过程,然后再次启动它。

简单的?

所以它看起来 - 它确实似乎工作。然而,我注意到一些有趣的事情:当我尝试在兼容模式下启动一个程序(比如 XP 的 Power Calculator powertoy)时,它不再工作了!什么都没有发生——进程被创建并立即退出。

如果我通过任务管理器的运行对话框运行资源管理器,程序运行良好。

这是怎么回事?!

#include <windows.h>
int main()
{
    PROCESS_INFORMATION pi;
    STARTUPINFO si = {sizeof(si)};
    TCHAR path[] = TEXT("explorer");
    DWORD f = 0; //I tried a variety of these flags; didn't work
    return CreateProcess(NULL, path, NULL, NULL, FALSE, f, NULL, NULL, &si, &pi);
}

编辑1:

  • 它是 32 位的,禁用了 WOW64 重定向这一事实没有任何区别。我做了64位,问题是一样的。
  • 我试过ShellExecute了,但也没有用。

编辑2:

相同的确切代码只为我工作了几次,然后又停止工作......嗯?

4

1 回答 1

0

这并不是对“为什么”的真正答案,但我设法自己找出了解决方法

如果我用 复制它们,而不是从当前进程复制环境变量CreateEnvironmentBlock,那么它就可以工作。

不过我还没弄清楚是什么原因造成的...

于 2011-06-22T15:38:41.740 回答