现在我需要在VC中实现一个功能:判断用户是否有权限执行该运用程序.可是不知道在程序里该调用什么函数判断.(用编程实现)
调查发现System.EnterpriseServices命令空间不能用,所以IsCallerInRole(String* role)和IsUserInRole(String* user,String* role)都不能使用了,请问还有没有其他函数,望各位赐教,小弟不胜感激.
调查发现System.EnterpriseServices命令空间不能用,所以IsCallerInRole(String* role)和IsUserInRole(String* user,String* role)都不能使用了,请问还有没有其他函数,望各位赐教,小弟不胜感激.
解决方案 »
- ClistCtrl控件缩略图显示问题
- 为什么给edit用sendmessage发送不了消息
- int a = *(int*)0 会怎样?
- 求助!如何将2进制文件导出成16进制文件。。
- 如何让一段程序暂停,等待另一段程序完成后,再继续执行。
- 出oracle中存储的blob字段后,图像不能正确显示问题?在线给分!
- com 如何 主动与客户端通信???
- 如何判断主机是否在局域网中以及如何得到该局域网服务器的IP?
- 有没有在北京的想找C/C++方面家教的朋友,可以进来看看
- 线程中的运算问题(没有分了,请见谅)
- 我想用msxml4编写读取xml文件获取其中的内容,请问应该依次调用哪些接口?
- OCX里可以用PreTranslateMessage捕获系统的消息吗?
Windows的权限管理与Linux不同,在windows中只有角色(role)的概念,Linux下的root用户对应到Windows的管理员角色,所以只要判断执行RCXML或PSMF的用户是否具有管理员的权限,如果具有,继续执行程序,否则,程序异常退出。
实现方法:
1) 用类WindowsIdentity的静态方法GetCurrent(),得到执行RCXML或PSMF的用户的WindowsIdentity对象。
2) 使用1)得到的WindowsIdentity对象构造一个WindowsPrincipal对象。
3) 使用WindowsPrincipal对象的IsInRole方法,根据RID(本地管理员组和域管理员组)来判断该用户是否具有管理员的权限,如果具有,继续执行程序,否则,程序异常退出。
注:
ü 本地管理员组的RID:DOMAIN_ALIAS_RID_ADMINS (WinNT.h中定义)
ü 域管理员组的RID:DOMAIN_GROUP_RID_ADMINS (WinNT.h中定义)
ü Namespace:System.Security.Principal