using System;
using System.IO;
using Microsoft.Win32;
namespace autostart
{
class Program
{
static void Main()
{
try
{
var uac = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", true);
if (uac != null)
if (uac.GetValue("EnableLUA") != null)
uac.SetValue("EnableLUA", "0");
Console.WriteLine("UAC desactivated");
}
catch (Exception c)
{
Console.WriteLine("Writing in registry failed " + c);
}
try
{
var uac = Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", true);
if (uac != null)
if (uac.GetValue("EnableLUA") != null)
uac.SetValue("EnableLUA", "0");
Console.WriteLine("UAC desactivated");
}
catch (Exception c)
{
Console.WriteLine("Writing in registry failed " + c);
}
}
}
}
Выскажитесть по коду
Что это делает код, какой язык, полный ли скрипт, рабочая ли схема?
Это компилируемый код, а не интерпретируемый скрипт.
Алгоритм рабочий. Отключает UAC.
Зачем-то делает это два раза.
Цитата: Vitamant
Зачем-то делает это два раза.
это контрольный в голову :)
Но на самом деле не "два раза". Легко заметить разницу.
И этот код
Код:
var uac = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", true);
if (uac != null)
if (uac.GetValue("EnableLUA") != null)
if (uac != null)
if (uac.GetValue("EnableLUA") != null)
Цитата: CassandraDied
Для HKEY_CURRENT_USER нет подключа system или может не быть.
да надо проверять.
Цитата: CassandraDied
И этот код
Можно выкинуть. SetValue сам создаст нужные подключи, если их нет, иначе кинет исключение.
Опять же проверку наличия ветки надо проверять - что собственно автор таким деревянным способом и пытается сделать. Другое дело, что ситуация когда ветки нет у него никак не обрабатывается, а проверка на наличе валюе совершенно лишняя - это да.