代码之家  ›  专栏  ›  技术社区  ›  npocmaka

将变量设置为cmd.exe

  •  2
  • npocmaka  · 技术社区  · 14 年前

    问候地球人,

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

    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++?

    但我一句话也没说:

    有一种方法。。。只需注射你的 SetEnvironmentVariableA在cmd内 释放分配的内存。

    虽然C/C++不是我的“母语”,但当我用“C++注入代码”搜索谷歌时,我感到自己完全迷失了。有没有一篇文章,我可以得到更多的信息。

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

    HKEY\ U当前\用户\环境

    比较简单,我只是在注册表中记录类似的变量:

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

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

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

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

    长命百岁,

    2 回复  |  直到 8 年前
        1
  •  2
  •   Community CDub    8 年前
        2
  •  2
  •   Oleg    14 年前

    有非常简单的方法可以做到这一点 没有任何诡计 .

    你应该写一个小程序 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)。所以这是我给你的建议。