【发布时间】:2011-05-09 06:38:10
【问题描述】:
本质上,我想创建一个新进程并从父进程为其定义环境。我想使用CreateProcessW 并将(修改后的)UNICODE 环境传递给lpEnvironment,但我不确定与ANSII 环境块相比内容应该是什么样子。
我真正找到的唯一文档是在 MSDN 上:
请注意,ANSI 环境块是 由两个零字节终止:一个用于 最后一个字符串,再终止一个 块。 Unicode 环境块 由四个零字节终止:两个 对于最后一个字符串,还有两个 终止块。
现在我尝试了
- 调用
GetEnvironmentStrings并将其传递给子进程 - 调用
GetEnvironmentStringsW并将其传递给子进程 - 用我的附加环境字符串修改这些块并传递它
它们都不起作用
我真的只能将 lpEnvironment 设置为 NULL 才能让它工作,但现在我必须更改并恢复我父母的处理环境 - 这是要走的路吗?
(我也设置了CREATE_UNICODE_ENVIRONMENT)
谁能告诉我UNICODE 环境块有什么特别之处 - 当我只使用ASCII 的东西并调用CreateProcessA() 时,它确实有效...
【问题讨论】:
-
您使用“UNICODE”,但应该使用“Unicode”。你使用“ANSII”,但这个词是“ANSI”——而且没有任何意义!!
标签: c++ unicode environment createprocess