问候地球人,
这是我的问题:
我怎样才能创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)。 所以这是我的建议。