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

C#中,如何动态提升权限?
C#中,以下问题:
1。如何判断哪个动作需要管理员权限?
比如运行时向Program Files子目录下写入文件时,怎么知道当前用户权限不够?
2。在知道当前权限不够的情况下,如果弹出UAC(用户权限控制开窗),来动态提升当前进程权限?
不是在程式运行前通过Run As等提升,而是进程已启动后,在一个操作没有权限的情况下,开启UAC开窗以获得管理员权限

------解决方案--------------------
加上mainfest文件,或者将其作为资源编译,具体参考《windows核心编程》第四章
------解决方案--------------------
如果出现异常了 可能会导致权限问题 捕捉试试
------解决方案--------------------
http://moosdau.blog.163.com/blog/static/4371128200882231911531/
动态代码控制,倒没有做过
------解决方案--------------------
1
try..catch 分析message 
2
window系统说 你的要求很过分,
目前你可以在运行前或者运行后使用run as 或者某种api提升进程的权限,无法为某个操作提升权限
------解决方案--------------------
右键你的工程,新建一个mainfest(应用程序清单)文件,
 <!-- UAC 清单选项
            如果要更改 Windows 用户帐户控制级别,请用以下节点之一替换 
            requestedExecutionLevel 节点。

        <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
        <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
        <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />

            指定 requestedExecutionLevel 节点将会禁用文件和注册表虚拟化。
            如果要利用文件和注册表虚拟化实现向后 
            兼容性,则删除 requestedExecutionLevel 节点。
        -->

将 <requestedExecutionLevel level="asInvoker" uiAccess="false" />设置为requireAdministrator后,保存运行。当程序需要管理员权限时,就会提示用户是否允许。
------解决方案--------------------
引用:
我不要静态的提升权限,
我只要在运行过程中判断一个操作失败时,弹出UAC开窗请求管理员权限

安全意识很不错:)