创建和修改系统路径变量

时间:2016-10-07 09:24:33

标签: c++ boost

我正在使用Boost Library创建一个C ++应用程序,所以我已经开发了模块,但仍然存在。

我想使用boost库创建和修改系统变量(或者即使在进程终止后仍然存在的本地环境变量)。 有像

这样的方法
  

SETENV()   putenv()函数   GETENV()

但它们会进行局部更改,并且在进程终止后值会消失。

那不是真正的问题。当我希望在linux和mac平台上运行相同的代码时,真正的问题就出现了。

  1. 我可以使用C ++创建跨平台代码,可以创建,修改和删除路径变量吗? 如果不是
  2. 我是否可以根据上述要求为特定平台制作代码。
  3. 截至目前,我有这个代码为Windows设置环境变量,但它给出了错误

    #include <string>
    #include <iostream> 
    #include <boost/asio.hpp>
    #include <boost/iostreams/device/file_descriptor.hpp>
    #include <boost/iostreams/stream.hpp>
    #include <process/boost/process.hpp>
    #include <boost/filesystem/path.hpp>
    #include <boost/system/error_code.hpp>
    
    
    namespace bp = boost::process;
    namespace bpi = boost::process::initializers;
    namespace bio = boost::iostreams;
    
    int main()
    {
     char* str="SETX Name Value";
     bp::pipe p = bp::create_pipe();
     {
        bio::file_descriptor_sink sink(p.sink, bio::close_handle);
        boost::filesystem::path p("C:/Windows/System32/cmd.exe");
        boost::system::error_code ec;
        bp::windows::execute(bpi::run_exe(p),
                bpi::set_cmd_line(str),
                bpi::bind_stdout(sink),
                bpi::set_on_error(ec)
                );
     }
    
     bio::file_descriptor_source source(p.source, bio::close_handle);
     bio::stream<bio::file_descriptor_source> is(source);
    
     std::string s;
     is >> s;
     std::cout << s << std::endl;
     std::cin.get();
     return 0;
    }
    

1 个答案:

答案 0 :(得分:1)

这与Boost没什么关系,实际上很少与环境变量有关。

它与系统配置有关。

因此,如果您具有更改用户/系统环境所需的权限,则可以使用这些方法来进行更改:

大多数示例都喜欢使用Windows Scripting Host,PowerShell和.NET等工具来完成这项工作:

但如果必须的话,你可以把它翻译成C ++。

PS。在Linux上,您可以更改/etc/profile/etc/default/...等文件。