UAC: с чем едят?
Привет всем!
Здесь я хочу немного рассказать об UAC и о том как же взаимодействовать с ним в NET'е.
Для начала давайте вспомним что же такое этот UAC:
Контроль учётных записей пользователей (англ. User Account Control, UAC) — компонент операционных систем Microsoft Windows, впервые появившийся в Windows Vista. Этот компонент запрашивает подтверждение действий, требующих прав администратора, в целях защиты от несанкционированного использования компьютера.
Как видно из цитаты в Окнах без UAC никуда. И дабы не отставать от моды давайте рассмотрим пару примеров написанных на VB.NET.
Функция проверки на наличие прав Администратора у программы:
Private Function CheckAdmin() As Boolean Dim wp As New System.Security.Principal.WindowsPrincipal(System.Security.Principal.WindowsIdentity.GetCurrent()) Return wp.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator) End Function
Запуск программы с правами Администратора (с UAC, то бишь вылетит вопрошающие окно):
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 MsgBox(ex.Message) End Try
Добавить на Button красивый щит, как бы говоря конечному пользователю "У нас всё серьёзно!":
'Импорт: 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 'В процедуру/функцию/куда угодно: ИМЯ_КНОПКИ.FlatStyle = FlatStyle.System SendMessage(ИМЯ_КНОПКИ.Handle, 5644, 0, &HFFFFFFFFUI)
Статью и примеры для вас подготовил Gemorg. Прошу любить и жаловать)
P.S. Должно работать на Окнах старше XP (не включая).
P.P.S. Тестировалось только на Win 8.
На семерке тоже работает.
Действительно нужная вещь. Спасибо.