这样说: 我现在有个程序完成的功能是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个参数的,好多。
2、可以获取B用户的环境的信息,取决与要获得怎样的B用户环境信息,如果只是B的地址,通过网路连接直接就可以知道,如果还包括其他信息,可以在B连接上来后,再传上来。
我现在有个程序完成的功能是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个参数的,好多。
只能用JNI调用C++的dll
1)C++,利用CreateProcessAsUser实现以指定用户身份执行一读注册表exe,返回数据存放在c++的vector 中,成功。
2)利用JNI,将C++ 中vector元素,转移到 java的vector中,成功。注:1,2我是分开做的。3)我想把上面两步结合起来。结果失败了。利用JNI调用本地某方法,该方法调用了 CreateProcessAsUser
。而java只能是单进程。我想就是这个原因,实在想不到什么办法解决or技巧绕过这个问题。不知道各位有高见,不吝赐教!