Around and About .NET World

Il blog di Marco Minerva
posts - 1671, comments - 2232, trackbacks - 2135

My Links

News

Contattami su Live Messenger:


MCTS: Windows, Web, Distributed Applications & SQL Server

MCPD: Enterprise Applications

Tag Cloud

Archives

Post Categories

Links

UAC: Shield Button in C#

Secondo le linee guida della UAC, se in un programma un pulsante determina l'esecuzione di attivà che richiedono i privilegi di amministratore,¬†esso deve contenere l'icona di uno scudo:

Per inserire quest'icona nei pulsanti di un programma .NET ci sono due possibilità: utilizzare un'immagine bitmap dello scudo oppure, più elegantemente, creare un controllo che estende la classe¬†Button e utilizza l'API di Windows Vista per mostrare l'icona in questione:

using System; using System.Runtime.InteropServices; using System.Windows.Forms; namespace System.Windows.Forms { public class ShieldButton : Button { private const uint BCM_SETSHIELD = 0x0000160C; [DllImport("user32.dll", CharSet = CharSet.Unicode)] private static extern IntPtr SendMessage(HandleRef hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam); public ShieldButton() : base() { this.FlatStyle = FlatStyle.System; this.ShowShield = true; } private bool _showShield; public bool ShowShield { get { return _showShield; } set { _showShield = value; SendMessage(new HandleRef(this, this.Handle), BCM_SETSHIELD, IntPtr.Zero, new IntPtr(_showShield ? 1 : 0)); } } } }

Il passo successivo è fare in modo che, alla pressione del pulsante, appaia la schermata della UAC che chiede conferma prima di proseguire con l'operazione... Ma di questo mi occuperò in un altro post...

Print | posted on Saturday, December 30, 2006 9:36 PM | Filed Under [ C# Windows Related ]

Feedback

Gravatar

# re: UAC: Shield Button in C#

Immagino che inserire a mano la bitmap dello scudo sia sbagliato anche perchè se uno ha la UAC disabilitata non ne vuole sapere di scudi e cose varie...
12/31/2006 10:40 AM | Lorenzo Barbieri
Gravatar

# re: UAC: Shield Button in C#

Certo, naturalmente in questo caso bisogna aggiungere un controllo che mostra lo scudo solo se la UAC è abilitata :-)
12/31/2006 11:27 AM | Marco Minerva
Gravatar

# ShieldLink in C#

1/20/2007 6:31 PM | Around and About .NET World
Gravatar

# ShieldLink in C#

1/20/2007 6:41 PM | Around and About .NET World
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET