日期:2014-05-17  浏览次数:20911 次

C#winfrom程序管理员权限操作
我做了一个小程序,平时经常使用,做了一个开机启动的功能,是用写注册表的方式实现的开机启动。现在在win7下这个功能失效了,调试后发现是没有操作注册表的权限。百度了一下,用修改mainifest文件的方式可以实现程序运行时提示用户用管理员权限运行。但是这样自动登录也基本等于没用了,因为每次开机启动后还要用户确定以管理员方式启动。所以我想问问大家现在像qq那些软件是怎么样实现这个功能的?
刚刚开始使用win7的时候好多软件都带有管理员权限的盾牌,运行这些程序时都有UAC的提示,现在的软件很少见这样的提示了,但是一些管理员权限的操作仍然可以实现,请问这些软件都是采用了什么方式实现这些功能的呢?

问题1:win7下C#程序操作注册表需要权限,除了一开始用管理员权限运行程序外还有其他实现方法吗?

问题2:win7下C#程序使用修改mainifest文件的方式使程序运行时自动以管理员权限运行,但是每次都有提示,要去用户确认,这个确认很烦,可以用什么方式跳过吗?或者以怎样的方式实现技能获取管理员权限运行程序又不用用户确认的方法?

------解决方案--------------------
在项目中添加一个app.manifest文件
在 <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> 中添加 
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />

即可获取该账号可以获取到的最高权限 .