Мой Kbyte.Ru
Рассылка Kbyte.Ru
Группы на Kbyte.Ru
Партнеры Kbyte.Ru
Реклама
Сделано руками
Сделано руками
> Исходные коды - 5acredphoenix -

Visual Basic .NET - Система

Все примеры / Система

Как добавить значок UAC на кнопку (под Windows Vista)

Автор: 5acredphoenix | добавлено: 06.03.2010, 14:17 | просмотров: 2276 (1+) | комментариев: 0 | рейтинг: *x1
Данный пример показывает, как на кнопку добавить значок UAC, показывающий, что выполнение операции требует повышения прав. Также показано, как перезапустить программу с повышением прав.

Код

Imports System.Diagnostics
Imports System.Windows.Forms
Imports System.Security.Principal

Public Class VistaSecurity

  Private Declare Auto Function SendMessage Lib "user32.dll" _
   (ByVal hwnd As IntPtr, _
    ByVal msg As UInteger, _
    ByVal wParam As UInteger, _
    ByVal lParam As UInteger) As UInteger

  Private Const BCM_FIRST As Integer = &H1600
  Private Const BCM_SETSHIELD As Integer = BCM_FIRST + &HC

  Private Shared m_wp As WindowsPrincipal
  Private Shared ReadOnly Property wp() As WindowsPrincipal
   Get
     If (m_wp Is Nothing) Then m_wp = New WindowsPrincipal(WindowsIdentity.GetCurrent())
     Return m_wp
   End Get
  End Property

  Public Shared Function IsAdministrator() As Boolean
   Return wp.IsInRole(WindowsBuiltInRole.Administrator)
  End Function

  Public Shared Sub AddUACShield(ByVal b As Button)
   b.FlatStyle = FlatStyle.System
   SendMessage(b.Handle, BCM_SETSHIELD, 0, &HFFFFFFFFUI)
  End Sub

  Public Shared Sub RestartElevated()
   Dim startInfo As New ProcessStartInfo(Application.ExecutablePath)
   startInfo.UseShellExecute = True
   startInfo.WorkingDirectory = Environment.CurrentDirectory
   startInfo.Verb = "runas"

   Try
     Process.Start(startInfo)
   Catch ex As System.ComponentModel.Win32Exception
     Return
   End Try

   Application.Exit()
  End Sub

End Class

'// Использование:

Public Class Form1

  Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
   If (Not VistaSecurity.IsAdministrator()) Then VistaSecurity.AddUACShield(Button1)
  End Sub

  Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
   If (VistaSecurity.IsAdministrator()) Then
     ' do admin task
   Else
     VistaSecurity.RestartElevated()
   End If
  End Sub

End Class
Об авторе

5acredphoenix

Нет информации об авторе...

См. также:
Профиль автора
5acredphoenix
Последние комментарии (всего: 0)

Добавлять комментарии могут только зарегистрированные пользователи сайта.
Если у Вас уже есть учетная запись на Kbyte.Ru, пройдите процедуру авторизации OpenID.
Если Вы еще не зарегистрированы на Kbyte.Ru - зарегистрируйтесь.


Нет комментариев...

Авторизация
 
OpenID
Зарегистрируйся и получи 10% скидку на добавление своего сайта в каталоги! Подробнее »
Поиск по сайту
Реклама
Счетчики