产品安装程序是MSI做的,在安装过程中另起了一个进程来完成一些安装操作,这个新建的进程是一个SYSTEM进程,在这个进程中想存取注册表的HKEY_CURRENT_USER应该怎样做?由于用户问题,在程序中直接存取HKEY_CURRENT_USER的话,只能访问到HKEY_USER/.DEFAULT请有经验的高人指点

解决方案 »

  1.   

    HKEY_CURRENT_USER是针对具体的登录用户而言的。除非你启动一个在该用户帐号下的进程来完成你的任务。
    看一下MSDN中的这一篇文章:
    Starting an Interactive Client Process in C++
      

  2.   

    安装程序在新建进程的时候要用CreateProcessAsUser来创建进程,是这个意思吗?
      

  3.   

    HKEY_CURRENT_USER是针对具体的登录用户的. 你在系统中模拟windows登录,切换用户
      

  4.   

    to CathySun118:
    如何模拟windows登录,有例子吗
      

  5.   

    首先获得当前用户的SID,参考http://topic.csdn.net/t/20051108/17/4379999.html
    然后把SID和HKEY_USER\"拼"在一起,组成HKEY_USER\SID...就相当与HKEY_CURRENT_USER了,
    HKEY_CURRENT_USER只是HKEY_USER下面的一个连接.
      

  6.   

    或者参考http://www.patching.net/bbs/viewgooddoc_1340_1_0.html也可以获得当前用户的SID.
      

  7.   

    great, I will try soon
      

  8.   

    :(,在LookupAccountName时又遇到新问题,当前用户是一个域帐户(domainA\zhu),但最后找到的用户确是本机上的同名用户(machineA\zhu)