• 第四章 进程(3)进程的命令行&环境变量


     

    2、进程的命令行

    创建一个新进程时,要传递一个命令行(几乎永远不会为空)用于创建新进程的可执行文件的名字时命令行上的第一个标记。

    A: C运行期的启动代码开始运行的时候,要检索进程的命令行,跳过可执行文件的名字,并将指向命令行其余部分的指针传递给WinMainpszCmdLine参数。(pszCmdLine参数总是指向一个A N S I字符串。将WinMain改为wWinMain,就能够访问进程的Unicode版本命令行)

    B: 如果我想修改命令行,首先我要将命令行拷贝到应用程序的本地缓存中,然后再修改本地缓存。

    C:可以调用GetCommandLine函数来获得一个指向进程的完整命令行的指针。

    PTSTR GetCommandLine();

    该函数返回一个指向包含完整命令行的缓存的指针,该命令行包括执行文件的完整路径名。

    D: CommaneLineToArgvW负责在内部分配内存。大多数应用程序不释放该内存,它们在进程运行终止时依靠操作系统来释放内存。这是完全可行的。

    3、进程的环境变量

    每个进程都有一个与它相关的环境块。环境块是进程的地址空间中分配的一个内存块。每个环境块都包含一组字符串。每个字符串的第一部分是环境变量的名字,后跟一个等号,等号后面是要赋予变量的值。变量中的空格是有意义的。

    应用程序也可以使用各种注册表函数来修改这些注册表项目。

    子进程可以继承一组与父进程相同的环境变量。但是,父进程能够控制子进程继承什么环境变量,指的是子进程获得父进程的环境块拷贝,子进程与父进程并不共享相同的环境块。即子进程能够添加、删除或修改它的环境块中的变量,而这个变化在父进程的环境块中却得不到反映。

    A: GetEnvironmentVariable函数可以确定某个环境变量是否存在以及它的值

    DWORD GetEnvironmentVariable(PCTSTR pszName, PTSTR pszValue,

    DWORD cchvalue);

    pszName为变量名,pszValue指向用于存放变量值的缓存,cchValue用于指明缓存的大小(用户字符来表示)。该函数可以返回拷贝到缓存的字符数,如果在环境中找不到该变量名,也可以返回0

    B: SetEnvironmentVariable函数来添加、删除、修改变量的值。

    BOOL SetEnvironmentVariable(PCTSTR pszName, PCTSTR pszValue)

    pszName参数标识的变量设置为pszValue参数标识的值。如果变量已经存在就修改该值。如果指定的变量不存在,便添加该变量,如果pszValueNULL,便从环境块中删除该变量。

  • 相关阅读:
    staticmethod classmethod
    Cache Buffer 区别
    Apache 各启动方式的差别
    网段,掩码
    容器镜像国内下载加速----借助阿里
    import 本质
    数字签名证书的事儿
    java中的sql语句中如果有like怎么写
    VMware+centos7克隆多个虚拟机
    使用Ajax轮询模拟简单的站内信箱(消息管理)功能
  • 原文地址:https://www.cnblogs.com/dyufei/p/2574009.html
Copyright © 2020-2023  润新知