Наверное все знают, что в новых Windows тыкать палочкой одно приложение из другого можно только с правами мегаадминистратора.
Чтобы снизить количество мата в окружающей среде, лучше изначально добавить в своего робота такой простой метод проверки
Код
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, но он у вас выключен.