c++ - 将变量设置为 cmd.exe

标签 c++ windows shell variables cmd

向地球人问好,

这是我的问题:

如何创建一个程序,将变量设置为 cmd.exe 的当前 session ,例如

c:\> set myvar
Environment variable myvar not defined
c:\>myexe.exe
c:>set myvar
myvar=myvalue

我发现的唯一类似的主题是这个 -

How can I change Windows shell (cmd.exe) environment variables from C++?

但我没有从中得到一个字:

There is a way... Just inject your code into parent process and call SetEnvironmentVariableA inside cmd's process memory. After injecting just free the allocated memory.

虽然 C/C++ 不是我的“母语”语言,但当我在 google 上搜索“c++ 注入(inject)代码”等内容时,我感觉自己完全迷失了……是否有一篇文章可以让我获得有关此内容的更多信息.

顺便说一句,现在我正在使用一种有点愚蠢的解决方法。将变量设置为

HKEY_CURRENT_USER\环境

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

相对容易,我只是将类似的变量记录到注册表中:

load.temp.vars=set myvar1=myval1&set myvar2=myval2& ....

然后只需调用%load.temp.vars%,它将作为命令执行:

c:/>%load.temp.vars%
c:/>set myvar1
myvar1=myval1

它工作得很好,但对我来说还不够好:)

长寿,繁荣, \\//_

最佳答案

查看这篇文章:Three Ways to Inject Your Code into Another Process .

此外,您可能需要父进程的句柄(以确定要更改其环境的目标进程)。描述了获取它的方法 here .

请记住,注入(inject)可能不起作用,具体取决于用户帐户权限,而且一些特别偏执的防病毒解决方案可能会对此不屑一顾。

关于c++ - 将变量设置为 cmd.exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3218745/

相关文章:

asp.net MVC 5 托管设置

java - 同时从多个线程调用 shell 脚本

arrays - 循环内数组元素的乘法

python - 自定义 Python 终端不显示 Bash 提示符

c++ - 你如何在 C++ 中将指数与变量一起使用?

c++ - WinDbg 扩展 C++ dprintf 在函数退出前不显示

c++ - 如何在 c++ 中的 vector<Object*> 中搜索特定变量?

c++ - 数组到十六进制表示

windows - 如何按照 Windows 快捷方式进入 cmd.exe 中的子目录?

windows - 如何在 Windows XP 上的 startup.bat 文件中设置 HeapDumpOnOutOfMemoryError 和 HeapDumpPath