国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Windows > 正文

Win7編程:在按鈕中加入管理員權限運行盾牌圖標教程

2019-11-28 02:25:24
字體:
來源:轉載
供稿:網友
這篇教程是向大家介紹win7按鈕中加入管理員權限運行盾牌圖標過程,本教程分兩部分,第一,如何實現軟件本身運行時申請管理員權限,第二,如何在軟件窗體內的按鈕上面加入盾牌圖標(意味著本功能需要管理員權限執行)。

步驟/方法

1、一、軟件自身運行時的管理員權限申請機制

2、在開啟UAC的時候,在Win7(Windows Server 2008 R2)或者Vista(Windows Server 2008)中執行程序默認是以一種權限較低的方式執行的,但是在這種方式下,我們有些操作會失敗(比如修改注冊表,監聽端口,往系統目錄寫入文件等),要實現這些操作,就需要我們以管理員權限執行程序了。

3、當然,只有在程序上右鍵,選擇“以管理員執行”就可以,不過如何讓程序自己自動以管理員權限來運行呢,這就需要Manifest了。

4、首先我們來新建個項目(懶得改名字了,就叫WindowsFormsApplication1吧)
Win7編程:在按鈕中加入管理員權限運行盾牌圖標

5、按F5執行下(恩,貌似沒有啥問題[空文檔,有問題才怪... ])
Win7編程:在按鈕中加入管理員權限運行盾牌圖標

6、然后我們添加Manifest(中文版叫“應用程序清單文件”)
Win7編程:在按鈕中加入管理員權限運行盾牌圖標

Win7編程:在按鈕中加入管理員權限運行盾牌圖標

7、下面我們看下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.w3.org/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>

8、內容里的說明夠詳細了吧,只要把 asInvoker替換成requireAdministrator,我們的程序就會默認要求管理員權限運行了,該下執行試試效果。
恩,窗口彈出來了。 看下程序圖標:
大功告成...
Win7編程:在按鈕中加入管理員權限運行盾牌圖標

Win7編程:在按鈕中加入管理員權限運行盾牌圖標

9、二、下面再說下怎么給程序的按鈕上也加上小盾牌圖標吧
這我們就需要調用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);
}

Win7編程:在按鈕中加入管理員權限運行盾牌圖標

10、最后執行看下效果吧!
恩?盾牌為啥有點不一樣呢,上面那個圖標是Windows Server 2008或者Vista上的,Win7和Windows Server 2008 R2上應該是下面這樣:
有錯誤的地方歡迎指證喔。
Win7編程:在按鈕中加入管理員權限運行盾牌圖標

Win7編程:在按鈕中加入管理員權限運行盾牌圖標

END

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 甘孜县| 安达市| 芮城县| 太仆寺旗| 抚宁县| 平谷区| 奉新县| 商南县| 柳州市| 婺源县| 德兴市| 平南县| 乐安县| 莎车县| 雷州市| 肃宁县| 保山市| 崇义县| 醴陵市| 灯塔市| 广昌县| 民丰县| 莱芜市| 周至县| 开原市| 三江| 宾川县| 东阿县| 凤翔县| 谢通门县| 苏尼特右旗| 巴南区| 扎赉特旗| 海安县| 故城县| 肃宁县| 天全县| 屏东县| 凌云县| 麻栗坡县| 勐海县|