Win7编程:在按钮中加入管理员权限运行盾牌图标
更新时间:2023-08-06 04:09:01 阅读量: 实用文档 文档下载
- win7自带编程推荐度:
- 相关推荐
下文分两部分,第一,如何实现软件本身运行时申请管理员权限,第二,如何在软件窗体内的按钮上面加入盾牌图标(意味着本功能需要管理员权限执行)。
一、软件自身运行时的管理员权限申请机制
在开启UAC的时候,在Win7(Windows Server 2008 R2)或者Vista(Windows Server 2008)中执行程序默认是以一种权限较低的方式执行的,但是在这种方式下,我们有些操作会失败(比如修改注册表,监听端口,往系统目录写入文件等),要实现这些操作,就需要我们以管理员权限执行程序了。
当然,只有在程序上右键,选择“以管理员执行”就可以,不过如何让程序自己自动以管理员权限来运行呢,这就需要Manifest了。
首先我们来新建个项目(懒得改名字了,就叫WindowsFormsApplication1吧)
按F5执行下(恩,貌似没有啥问题[空文档,有问题才怪... ])
然后我们添加Manifest(中文版叫“应用程序清单文件”)
下面我们看下Manifest的内容——
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1"
xmlns:asmv2="urn:schemas-microsoft-com:asm.v2"
xmlns:xsi="http://www.77cn.com.cn/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- UAC 清单选项
如果希望更改 Windows 用户帐户控制级别,请用以下节点之一替换 requestedExecutionLevel 节点。
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
如果您希望利用文件和注册表虚拟化提供
向后兼容性,请删除 requestedExecutionLevel 节点。
-->
<requestedExecutionLevel level="asInvoker" uiAccess="false" /> </requestedPrivileges>
</security>
</trustInfo>
</asmv1:assembly>
内容里的说明够详细了吧,只要把 asInvoker替换成requireAdministrator,我们的程序就会默认要求管理员权限运行了,该下执行试试效果。
恩,窗口弹出来了。 看下程序图标:
大功告成...
二、下面再说下怎么给程序的按钮上也加上小盾牌图标吧
这我们就需要调用Win32 API了,要调用API么,要先引用命名空间——
using System.Runtime.InteropServices;
然后调用API
[DllImport("user32.dll")]
private static extern IntPtr SendMessage(HandleRef hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
/////////////////////////////////////////////////////////////////////// /// <summary>
/// Enables the elevated shield icon on the given button control /// </summary>
/// <param name="ThisButton">
/// Button control to enable the elevated shield icon on.
/// </param>
/////////////////////////////////////////////////////////////////////// private void EnableElevateIcon_BCM_SETSHIELD(Button ThisButton) {
// Input validation, validate that ThisControl is not null if (ThisButton == null)
{
return;
}
// Define BCM_SETSHIELD locally, declared originally in Commctrl.h uint BCM_SETSHIELD = 0x0000160C;
// Set button style to the system style
ThisButton.FlatStyle = FlatStyle.System;
// Send the BCM_SETSHIELD message to the button control
SendMessage(new HandleRef(ThisButton, ThisButton.Handle),
BCM_SETSHIELD, new IntPtr(0), new IntPtr(1));
}
在Form上拖个Button,拖大一点哦,小了图标看不清
然后在Form1_Load里,用API把图标加到Button1上
private void Form1_Load(object sender, EventArgs e)
{
EnableElevateIcon_BCM_SETSHIELD(button1);
}
最后执行看下效果吧!
恩?盾牌为啥有点不一样呢,上面那个图标是Windows Server 2008或者Vista上的,Win7和Windows Server 2008 R2上应该是下面这样:
有错误的地方欢迎指证喔。
正在阅读:
2008定额解释01-13
爱国诗人屈原大体教案10-30
学习全国“两会”精神心得体会范文02-25
2011年度土建施工质量与安全标准继续教育培训指南06-11
电工电子实习资料查询总结报告09-23
高三语文课时训练与作业05-12
现代交换原理练习01-25
四字、五字、六字、七字对联书法题字用语(繁简体对照) - 书法家必备之三10-15
河海大学工程力学第9章组合变形05-22
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 盾牌
- 图标
- 按钮
- 权限
- 管理员
- 运行
- 编程
- 加入
- Win7
- 跨专业考研面试 英语 自我介绍
- 数值预报及其产品
- 工作调动后离别感言
- 韩式女生俏皮短发 胖圆脸女生必备发型
- 白酒中塑化剂的危害与检测方法概述_曹国庆
- 中原信托-安益233期淮安开发控股单一资金信托受益权投资开放式信托计划(三期)
- 关于RDW在缺铁性贫血(IDA)中的鉴别诊断的外文翻译
- 表地点的介词at、on、in的用法
- 低压碱性电池供电的手机应急充电器
- 求最大公约数和最小公倍数的方法探析
- 知识共享和创新导向的人力资源管理实践作用机制研究
- 《人类群星闪耀时》知识要点
- 闽台合作通信工程专业培养方案2011-06-30
- 英国白金汉宫介绍
- 五大工具SPCMSAFMEAAPQPPPAP实务(上海,1月8-12日)
- 电子式电流互感器模拟量电压输出的额定值
- 5.12汶川大地震纪念日讲话稿范本精选一览-2019年范文
- 会计科目借方或贷方的记忆方法
- 价值判断与价值选择(共33张PPT).
- 增加我国农民财产性收入的重要意义及对策