既然c++能实现,可以通过JNI做.纯java不知道,up

解决方案 »

  1.   

    1、java有线程类,用起来也很方便。
    2、可以获取B用户的环境的信息,取决与要获得怎样的B用户环境信息,如果只是B的地址,通过网路连接直接就可以知道,如果还包括其他信息,可以在B连接上来后,再传上来。
      

  2.   

    可以通过继承java.lang.Thread类或者实现java.lang.Runnable接口来进行线程编程啊。然后创建线程对象,调用start方法启动。
      

  3.   

    这样说:
           我现在有个程序完成的功能是getUserProfile。当你登陆用户A,执行这个程序得到的结果在winxp下就应该是C:\document and setting\A;相应的,登陆用户B并且执行该程序得到结果C:\document and setting\B。登陆了哪个用户,程序返回的就是那个登陆用户的信息。
           
           但如果当前系统登陆了A用户,而我想远程用B用户的身份登陆去调用该函数呢?显然不能简单的执行getUserProfile程序,它返回的C:\document and setting\A(登陆用户A的信息)。
           如果用C++,可以调用CreateProcessAsUser(User B,programme getUserProfile),这样以B用户的身份去调用了GetUserProfile程序,返回的就是希望的 C:\document and setting\B。
           现在我想用java实现这个功能。java的线程类可以指定用户?能否给出简单举例?谢谢啦!!注:为简单说明问题,简化了CreateProcessAsUser函数,该函数原形是11个参数的,好多。
      

  4.   

    这个恐怕java做不到
    只能用JNI调用C++的dll
      

  5.   

    开进程Java好像是不行的。用JNI做吧
      

  6.   

    GetUserProfile中做检查,建立线程时带用户参数,看是哪个用户上来的,返回相应的用户设置
      

  7.   

    几天没上来,忘了给分。不好意思。我这边JNI的问题进展如下:
    1)C++,利用CreateProcessAsUser实现以指定用户身份执行一读注册表exe,返回数据存放在c++的vector  中,成功。
    2)利用JNI,将C++ 中vector元素,转移到 java的vector中,成功。注:1,2我是分开做的。3)我想把上面两步结合起来。结果失败了。利用JNI调用本地某方法,该方法调用了  CreateProcessAsUser
       。而java只能是单进程。我想就是这个原因,实在想不到什么办法解决or技巧绕过这个问题。不知道各位有高见,不吝赐教!