我用System.Diagnostics.Process.Start 开启一个程序,这个程序是读写注册表的。用C++写的。问题是当我通过这种方式并且看见其执行完成,但注册表内容没变,也没返回错误,而我单独去运行C++这个程序,也显示执行完成,但其注册表确实改变了。我想请问哪块出问题了。已经调用,并已经执行了,为什么注册表没有改变呢。

解决方案 »

  1.   

    什么系统。如果是win7是要有管理员权限的。
      

  2.   

    XP SP3, 问题是我直接运行c++的程序可以改,但用c#这个方法去调用,虽然c++程序正常运行,但注册表没有改。
      

  3.   

    你的System.Diagnostics.Process.Start是怎么调用的?asp.net?运行程序的账户有读写注册表权限吗
      

  4.   

    应该有权限,在admin下运行的。我的程序是VS2008的安装与部署,做的安装包,里边调用到这个小程序。
    并且是直接 process.start("file")的
      

  5.   

    新建appmanifest文件提升权限吧
      

  6.   

    不会是奇葩的64位xp吧?
    如果真的奇葩了,那得去一个wow...什么的下面去找。  因为有可能你的程序是32位执行的。
      

  7.   

    vs2008安装与部署 --生成的安装包,安装后执行了这句代码 System.Diagnostics.Process regProgram = System.Diagnostics.Process.Start("RegProgram.exe");regProgram.WaitForExit();regProgram.Close();
    在安装程序里就调用 了这个代码, 而这个程序也启动并执行成功了,但是就是没写进注册表。要是单独执行就成写进
    这会有没有人帮我。。
      

  8.   

    Process p = new Process();
    p.StartInfo = new ProcessStartInfo()
                {
                    FileName = fileName,
                    Arguments = arguments,
                    UseShellExecute = false,                          
                    RedirectStandardOutput = true,          
                    RedirectStandardError = true,           
                    CreateNoWindow = false,                  
                    WindowStyle = ProcessWindowStyle.Normal
                };
    p.Start();
    output = p.StandardOutput.ReadToEnd();
    error = p.StandardError.ReadToEnd();   //打印出来看看
    p.WaitForExit();
      

  9.   

    显示写注册表成功,这是那个小程序打印的字串,error打印出来 为空
      

  10.   

    我看了一下,我程序写的是 hkey_current_user、,但它确写进了 hkey_users\.default 下边去了,有没有人知道怎么回事