Как заставить PowerShell отображать значения реестра - PullRequest
0 голосов
/ 03 марта 2010

Взять раздел реестра Winlogon, я бы хотел, чтобы PowerShell отображал значение данных для DefaultUserName.

Это насколько я получил:

Стадия 1

get-itemproperty -path "hklm:\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\"

Стадия 2

Я могу добавить:

-Name DefaultUserName

Но это не вернет значение.

Также другие имена, несмотря на то, что они отображаются в regedit, не отображаются в PowerShell, например, AutoAdminLogon.

Вопрос: как заставить PowerShell отображать то, что я вижу с помощью regedit?

Ответы [ 5 ]

2 голосов
/ 09 января 2013

еще проще:

gp "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\").DefaultUserName
2 голосов
/ 04 марта 2010

Вы можете попробовать стандартную командную строку:

reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName
0 голосов
/ 28 мая 2012

Позднее наблюдение.

Как подсказал Фрэнк, REG.EXE отлично работает .

Однако небольшая функция C не может прочитать это конкретное DefaultUserName : API RegQueryValueExA не возвращает ошибку, но имеет размер 1 байт!

В этой же ветке я могу прочитать Shell .

С REGEDIT.EXE я проверяю разрешения, для обоих значений они

Администраторы: Полный, Пользователи: Чтение.

ОС: Windows 7 Home Premium - 64 бит

DWORD RegGetValueA( HKEY hTree, LPCSTR lpSubKey, LPCSTR lpValueName, LPDWORD lpdwType, LPVOID lpData, LPDWORD lpdwSize )
{
    #define KEY_WOW64_32KEY     0x0200      // on 64-bit Windows should operate on the 32-bit registry view ( HKLM\SOFTWARE\Wow6432Node\... )
    #define KEY_WOW64_64KEY     0x0100      // on 64-bit Windows should operate on the 64-bit registry view
    DWORD   ret, dwAlter = 0;
    HKEY    hKey;

retry:
    ret = RegOpenKeyExA( hTree, lpSubKey, 0, KEY_READ | dwAlter, &hKey );
    if ( ret != ERROR_SUCCESS )
        return  ret;

    ret = RegQueryValueExA( hKey, lpValueName, NULL, lpdwType, lpData, lpdwSize );
    RegCloseKey( hKey );

    if ( ret != ERROR_SUCCESS && dwAlter == 0 )
    {
        dwAlter = KEY_WOW64_64KEY;
//      printf( "retry... %d\r\n", dwAlter );
        goto retry;
    }

    return  ret;
}
0 голосов
/ 15 марта 2010

Я попробовал те же самые команды на другой машине, они работали отлично, как и ожидалось. Таким образом, мой оригинальный компьютер должен иметь сбойный реестр или, по крайней мере, странные разрешения.

0 голосов
/ 03 марта 2010

делает

Get-ItemProperty -path "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\" |% {$_.DefaultUserName} 

Работа для вас

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...