关于Win7(连接命名管道,在C盘写文件)需要管理员权限
登录权限图
多系统登录管理:
项目涉及多个系统,各系统共用一套用户信息表。
希望用户登录A系统后,点击其他系统时不需要再次登录。
采用引用计数的方式控制登录存在问题,比如当系统 A 登录时,计数值加 1,当系统 B 登录时,计数值变为 2,此时系统 B crash 了,计数值还是 2,但登录的系统只有一个,因此即使所有系统都登出,登录计数值也永远不会减为 0。
因此使用HashSet来存储各个系统的登录状态,当系统A登录时,HashSet中存储字符串“A”,当系统B登录时,存储字符串“B”,当退出时,删除HasSet中对应字符串。
我的HasSet作为用户登录状态的一部分存储在文件中,并且如果用户的计算机没有D或E等驱动器号,则将其存储在C驱动器中。

但问题是读写C盘文件需要管理员权限,用户每次运行系统时不可能都右键->以管理员权限运行。
================尝试解决1:
恰巧每个客户端都有一个WIndows服务在后台运行,于是我想到每次系统登录时都调用封装的登录管理类,将登录状态通过命名管道传递给这个后台服务,并让这个服务将登录状态存储在它的进程空间中(内存中)。
代码写完之后发现“该应用程序还需要管理员权限才能作为客户端运行,通过指定名称来连接本地机器上的命名管道”。
否则会报命名管道链接异常:“访问路径被拒绝”。
为了减少我的后台服务启动的线程数,我决定改回将登录状态写入C盘文件,因为无论如何它都需要以管理员权限运行。
==============尝试解决2:
退一步来说,我们不能让用户右键系统以管理员权限运行,也不能让用户右键系统->属性->兼容性勾选“以管理员权限运行”。
不过我可以容忍用户点击时弹出询问是否允许以管理员权限运行该程序的提示。
这就是 Manifest 配置文件的作用。





























