Если вы регистрировались в системе Windows 7 как Администратор, то все равно администратором по сути не являетесь. По умолчанию система дает вам права стандартного пользователя, а в случае необходиомости система предложит вам повысить свои права до уровня Администратор. Так работает механизм UAC (контроль учетных записей пользователей).
Чтобы убедиться в этом, напишем простой пример, который при запуске проверяет ваши текущие права, и если вы не обладаете правами Администратора, то приложение будет закрыто.
using System.Security.Principal;
private void Form1_Load(object sender, EventArgs e)
{
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
if (!principal.IsInRole(WindowsBuiltInRole.Administrator))
{
MessageBox.Show("Вы должны запустить программу под правами администратора. Программа будет закрыта");
Application.Exit();
}
}
Запустив программу, вы увидите сообщение, что нужно обладать правами администратора и приложение будет закрыто, как и было задумано. Если щелкнуть правой кнопкой мыши на исполняемом файле и выбрать команду Запуск от имени администратора, то система повысит вам права до нужно уровня и вы сможете запустить программу после соответствующего предупреждения.
Можно пойти по другому пути, который использует сама Windows. Вы можете добавить к программе файл манифеста, который будет содержать информацию о необходимости обладать правами администратора для запуска. В этом случае на значке исполняемого файла вашего приложения появится изображение щита. Делается следующим образом:
В Visual Studio щелкните правой кнопкой мыши на имени проекта и выберите пункт Add | New Item. В диалоговом окне выберите Application Manifest File. В проект будет добавлен новый файл-манифест под именем app.manifest. Откройте файл и найдите строчку:
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
Чуть выше вы найдете закоментированные строчки для других настроек. Вам необходимо закоментировать указанную выше строчку и снять комментарий со строчки.
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
Скомпилируйте проект и найдите исполняемый файл проекта. Убедитесь, что теперь у значка приложения появилось изображение щита, которое свидетельствует о необходимости повышения прав.