Monday, July 15, 2013

UAC, давай дружить!

Inline image 3

Технология UAC — не лишний компонент безопасности ОС Windows последних версий и пользователи приходят к этой мысли, борясь с malware и вирусами. Программистам, в свою очередь, стоит грамотно подходить к написанию приложений и принимать во внимание наличие такого «обстоятельства». 

...
...

Оформление приложений

Всем нам хочется писать стильные и красивые оконные приложения и в вопросах использования UAC без фирменного щитка на контролах ну никак не обойтись.

Inline image 1


Такой щит размещается на кнопках, link-label'ах или других элементах управления, после нажатия на которые пользователь увидит запрос от UAC. К счастью, нам не придется таскать повсюду картинку, поскольку в системе, как ни странно, она уже есть и ее можно получить.

Для WinForms-приложений можно указать системе разместить иконку щита на кнопке. 

[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern IntPtr SendMessage(HandleRef hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);

public static void SetButtonShield(Button btn, bool showShield)
{
    // BCM_SETSHIELD = 0x0000160C
    btn.FlatStyle = FlatStyle.System;
    SendMessage(new HandleRef(btn, btn.Handle), 0x160C, IntPtr.Zero, showShield ? new IntPtr(1) : IntPtr.Zero);
}

Read more: Habrahabr.ru
QR: Inline image 2