c++ - 从 C++ 为 Batch 设置临时环境变量

标签 c++ windows batch-file java-native-interface

我正在实现一小包程序供批处理用户使用。 这个包中的几乎所有东西都是用 C++ 制作的,并从 Java 调用。

如何为要使用的批处理文件设置环境变量?

我试过用这个:

JNIEXPORT void JNICALL METHOD_NAME(JNIEnv *env, jclass theclass, jstring key, jstring value) {
        const char* thekey = env->GetStringUTFChars(key, false);
        const char* thevalue = env->GetStringUTFChars(value, false);
        std::string envvar;
        envvar.append(thekey);
        envvar.append("=");
        envvar.append(thevalue);
        _putenv(envvar.c_str());
        env->ReleaseStringUTFChars(key, thekey);
        env->ReleaseStringUTFChars(value, thevalue);
}

但是批处理文件没有看到任何新变量。 我应该使用 system("set thing=value"); 吗?

最佳答案

经过一些研究,我得出的结论是子进程不能修改父进程的环境。

关于c++ - 从 C++ 为 Batch 设置临时环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39435810/

相关文章:

c++ - 有没有办法强制 Windows 在套接字调用上产生短读/写?

c++ - 在 C 函数中返回结构会导致段错误

c# - Javascript setTimeOut 函数与.net 中Windows 应用程序的计时器时间不匹配?

c - 如何查看当前用户是否有管理权限

windows-7 - 批处理文件命令 PAUSE 不起作用

batch-file - 如何在cmd中模拟 'ENTER'按键?

c++ - 如何找到计算机的 IP 地址?

c++ - AngelScript,如何加载脚本文件?

java - "rundll32 url.dll,FileProtocolHandler"的 URL 长度限制?

java - 如何从我的 Java 应用程序运行批处理文件?