Относительно исходного вопроса - помимо конкретной проблемы порядка событий, которая исправила ваши симптомы.
Когда пользователь, являющийся членом группы локальных администраторов, входит в систему на компьютере под управлением UAC, два токена безопасности предоставлено - один с ограниченными правами и один с более высоким набором разрешений. По умолчанию используются более низкие разрешения - если только не указано иное. Основное средство определения - через пользовательский интерфейс, как вы это сделали. Другой метод заключается в использовании манифеста приложения: файла XML, который определяет, как ОС должна обрабатывать это приложение. Файл манифеста должен быть помещен в ту же папку, что и исполняемый файл, и иметь имя в следующем формате: «my_application_name.exe.manifest»
XML в манифесте будет выглядеть примерно так:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" name="MY_APPLICATION_NAME" type="win32"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
Я уверен, что вы можете найти более подробную информацию, прибегая к помощи "UAC Manifest" ...
Надеюсь, это полезно ...