Доступ к удаленному ключу реестра с помощью C # в .Net MVC2 - PullRequest
1 голос
/ 06 сентября 2010

Я использую следующий код

private static string GetLogonFromMachine(string machine)
{
    //1. To read the registry key that stores this value. 
    //HKEY_Local_Machine\Software\Microsoft\Windows NT\CurrentVersion\WinLogon\DefaultUserName

    var rHive = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, machine);

    var rKey = rHive.OpenSubKey(@"Software\Microsoft\Windows NT\CurrentVersion\WinLogon");

    var rItem = rKey.GetValue("DefaultUserName");
    return rItem.ToString();
}

, и я подтвердил, что у моего пользователя есть доступ, сайт MVC использует встроенную аутентификацию и что указанное REG_SZ "DefaultUserName" имеет значение вмашина нацелена, но rItem не получает значения.

Я предполагаю, что делаю что-то глупое, и я хотел бы знать, что!

1 Ответ

2 голосов
/ 09 сентября 2010

Я действительно был глупым.Я не сортировал список имен машин перед использованием и поэтому искал реестр не той машины.Машина, которая была в фокусе, правильно возвращала "".

Я получил

        private static string GetLogonFromMachine(string machine)
    {
        //1. To read the registry key that stores this value. 
        //HKEY_Local_Machine\Software\Microsoft\Windows NT\CurrentVersion\WinLogon\DefaultUserName

        RegistryKey rHive;

        try
        {
            rHive = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, machine);
        }
        catch (IOException)
        {
            return "offline";
        }

        var rKey = rHive.OpenSubKey("Software\\Microsoft\\Windows NT\\CurrentVersion\\WinLogon\\");

        if (rKey == null)
        {
            return "No Logon Found";
        }

        var rItem = rKey.GetValue("DefaultUserName");

        return rItem==null ? "No Logon Found" : rItem.ToString();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...