Проверка на админа

Проверка на админа
Atom
12/14/2012
VassilSanych


Наверное все знают, что в новых Windows тыкать палочкой одно приложение из другого можно только с правами мегаадминистратора.
Чтобы снизить количество мата в окружающей среде, лучше изначально добавить в своего робота такой простой метод проверки
Code
 
private void CheckAdministrator()
	{
		var identity = WindowsIdentity.GetCurrent();
		if (identity == null) throw new InvalidOperationException("Couldn't get the current user identity");
		var principal = new WindowsPrincipal(identity);

		// Check if this user has the Administrator role. If they do, return immediately.
		// If UAC is on, and the process is not elevated, then this will actually return false.
		var isBuiltInAdmin = principal.IsInRole(WindowsBuiltInRole.Administrator);

		if (!isBuiltInAdmin)
		{
			var exMessage = "Робот запущен не под Администратором";
			WriteLog(LogLevels.Error, exMessage);
			MessageBox.Show(
				exMessage, "Ошибка",
				MessageBoxButton.OK, MessageBoxImage.Error);
			Shutdown();
		}
	}

По последней строчке видно, что метод вызывается из App.xaml.cs,
который в свою очередь стоит сделать наследником ILogSource и добавить в источники логирования,
в том числе и для того, чтобы надёжно логировать все возможные исключения, но это уже другая песня.

Англоязычные комментарии остались от http://stackoverflow.com, откуда собственно код и позаимствован. Там ещё была проверка на UAC, но он у вас выключен.




Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy