关于Win7下(连接到命名管道,写C盘文件)需要管理员权限
多系统登录管理:
项目中涉及到多个系统,所有系统共用一套用户信息表。
期望用户登录了系统A之后,再点击其他系统,就无需再次登录了。
引用计数法控制登录有问题,比如系统A登录,计数值+1,系统B登录,计数值变为2,此时系统B崩溃,计数值仍然为2,但是只有一个系统登录,所以之后就算将所有系统退出,登录计数值却永远也不可能减为0.
所以采用HashSet来存储每个系统的登录与否的状态,系统A登录向HashSet中存入字符串“A”,系统B登录存入“B”,退出则删除对应的HasSet中的字符串。
我的这个HasSet作为用户登录状态的一部分,存储在文件中,并且为了防止用户的电脑没有D,E等盘符,所以存储在C盘。
但是问题来了,在C盘上读写文件是需要管理员权限的,不可能让用户每次运行系统都右击-》以管理员权限运行。
============== 尝试解决1:
恰好每个客户机上都有一个后台运行的WIndows服务,所以我想到每个系统登录都调用封装好的登录管理类,将登录状态通过命名管道传递给这个后台服务,让这个服务奖登录状态存储在它的进程空间中(内存中)。
代码写好之后,才发现“应用程序通过指定名称作为客户端连接到本机上的某个命名管道同样是需要管理员权限运行才可以的”。
否则会报出一个命名管道链接的异常:“Access to the path is denied”。
为了减少我的后台服务开启的线程的数量,我又决定改回原来的将登录状态写到C盘文件,反正都需要以管理员权限运行。
============ 尝试解决2:
退一步看,我们不可能让用户右击系统以管理员权限运行,也不可能让用户右击系统-》属性-》兼容性,勾选上“以管理员权限运行”。
但是可以容忍用户点击我的系统程序时,弹出是否允许以管理员权限运行的提示。
这就是Manifest配置文件所能做到的。