将variables设置为cmd.exe

问候地球人,

这是我的问题:

我怎样才能创build一个程序,设置variables当前会话的cmd.exe例如

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

我发现的唯一类似的话题是 –

如何从C ++更改Windows shell(cmd.exe)环境variables

但是我没有从这个单词中得到一个单词:

有一种方法…只需将代码注入父进程,并在cmd的进程内存中调用SetEnvironmentVariableA。 注入后只是释放分配的内存。

虽然C / C ++不是我的“原生”语言,但是当我用“C ++注入代码”searchgoogle时,感觉自己完全失去了…有没有一篇文章,我可以得到更多的信息。

顺便说一句,现在我正在使用一个有点愚蠢的解决方法。作为设置一个variables

HKEY_CURRENT_USER \环境

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

是相对容易我只是logging类似的variablesregistry:

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

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

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

它工作正常,这对我来说不够好:)

健康长寿·繁荣昌盛, \\//_

看看这篇文章: 注入你的代码到另一个过程的三种方法 。

你也许需要一个处理你的父进程(以确定目标进程的环境来改变)。 这里描述一种方法。

只要记住,注入可能无法正常工作,这取决于用户帐户的权限,而且一些特别偏执狂的防病毒解决方案可能会对此不满。

没有任何窍门很容易做到这一点。

你应该写一个小程序myexe.exe ,它产生一个简单的输出(控制台输出),如下所示:

 SET myvar=Some value 

那么你使用以下步骤开始你的程序:

 myexe.exe >%TEMP%\t.cmd call %TEMP%\t.cmd del %TEMP%\t.cmd 

现在在当前cmd.exe中启动的myexe.exe存在环境变量myvar ,它的值为Some value 。 这不正是你想要的吗?

这种方式极其简单,适用于所有版本的Windows(而不仅仅是Windows)。 所以这是我的建议。