读书人

进程间的用户权限传递解决方案

发布时间: 2012-03-08 13:30:13 作者: rapoo

进程间的用户权限传递
我有一个SYSTEM的服务S,一个系统当前登录身份运行的普通程序A,他们之间有沟通。

我现在想把A的SECURITY_ATTRIBUTES或者类似的信息传到S中保存下来,

这样可以为服务取得当前用户的某些信息提供方便,

比如用这个SECURITY_ATTRIBUTES创建一个线程,在线程中调用SHGetSpecialFolderPath可以获取用户相关的特殊文件夹路径。

当然可以在A中调用相应函数(SHGetSpecialFolderPath),再把获得的信息传到S中,这里我不讨论。

问:是不是只要传这个SECURITY_ATTRIBUTES,然后有什么要注意的,只拷贝内存?

[解决办法]
SECURITY_ATTRIBUTES里面有个SECURITY_DESCRIPTOR指针
而SECURITY_DESCRIPTOR里面又有几个指针,因此你的想法没什么可行性
[解决办法]
Windows Vista以后的系统服务程序与桌面程序没办法互相访问对方内存地址,共享内存可以很容易的验证这个问题;

解决服务与桌面应用程序之间的数据共享或交互,Socket是一个很好的方式。

另外你使用SHGetSpecialFolderPath获取的路径与桌面应用程序获取的路径存在差异,例如..//Localservice//与//current user//路径的差异,以及获取系统提供的几个temp路径,server与桌面应用程序会定位到不同的目录下。

读书人网 >VC/MFC

热点推荐