Получение имени пользователя / пароль зарегистрированного пользователя в Windows

Метод initialize вызывается после того, как все @FXML аннотированные члены были введены. Предположим, что у вас есть табличное представление, которое вы хотите заполнить данными:

class MyController { 
    @FXML
    TableView<MyModel> tableView; 

    public MyController() {
        tableView.getItems().addAll(getDataFromSource()); // results in NullPointerException, as tableView is null at this point. 
    }

    @FXML
    public void initialize() {
        tableView.getItems().addAll(getDataFromSource()); // Perfectly Ok here, as FXMLLoader already populated all @FXML annotated members. 
    }
}
10
задан Aardvark 24 October 2008 в 16:15
поделиться

8 ответов

Пароль: Нет, это не сохраняется из соображений безопасности - это используется, затем отбрасывается. Вы могли получить зашифрованный пароль для этого пользователя из реестра, учитывая необходимые полномочия, затем дешифровать его с помощью чего-то как таблицы радуги, но это - чрезвычайно интенсивно использующие ресурсы и трудоемкие существующие методы использования. Намного лучше предлагать пользователю.

С другой стороны, если Вы хотите реализовать своего рода систему 'единой точки входа', как Novell делает, необходимо сделать это или через GINA (предварительная Vista) или через Учетного Поставщика (Vista), которая приведет к коду, даваемому имя пользователя и пароль при входе в систему, единственное время, в которое пароль доступен.

Для имени пользователя, получая текущее имя пользователя (тот, который выполняет Ваш код) легко: функция GetUserName в AdvApi32.dll делает точно это для Вас.

Если Вы работаете как услуга, необходимо помнить, что нет, никто "не вошел в систему пользователь": существуют несколько в любое время, такие как LocalSystem, NetworkService, СИСТЕМА и другие учетные записи, в дополнение к любым фактическим людям. Эта статья предоставляет некоторый код кода и документацию для того, чтобы сделать это.

29
ответ дан 3 December 2019 в 13:24
поделиться

Я считал бы это огромным дефектом безопасности, если бы это было возможно!

4
ответ дан 3 December 2019 в 13:24
поделиться

Вы не можете получить пароль пользователя начиная с его зашифрованного (не говоря уже о том, что это - общепринятая практика для не хранения паролей в простом тексте).

Для получения имени пользователя можно использовать GetUserName или NPGetUser

4
ответ дан 3 December 2019 в 13:24
поделиться

Отметьте уверенный, как это сделано, но инструмент "Network Password Recovery" из http://www.nirsoft.net/utils/network_password_recovery.html, кажется, получает пароль от некоторого кэша.

4
ответ дан 3 December 2019 в 13:24
поделиться

Полное изложение Аутентификации в Windows API может быть найдено на MSDN: http://msdn.microsoft.com/en-us/library/aa374735 (По сравнению с 85) .aspx

2
ответ дан 3 December 2019 в 13:24
поделиться

GetUserName получит Вас имя, но пароль Вы не можете добраться. Это даже не что-то хранилища Windows, AFAIK - только хеш Вашего пароля.

В зависимости от того, чего Вы пытаетесь достигнуть (можно сказать нам немного больше..) это возможно исполнить роль зарегистрированного пользователя и действительно наполняет от его имени.

2
ответ дан 3 December 2019 в 13:24
поделиться

инструмент "Network Password Recovery" ре
Windows (до XP) хранит копию passwd с более простым легким для повреждения шифрования - для соединения с более старым стилем lanmanager сетевые ресурсы. Инструменты обычно пробуют все возможные пароли против этого, использование таблиц радуги (precaluted зашифрованные версии слов словаря) ускоряет это.

В XPsp2/3 Vista удалена эта функция. Новое шифрование намного более трудно взломать и нуждается во многих часах для попытки всех возможных значений, существуют онлайн-сервисы, которые выполнят его на большом количестве машин, чтобы дать Вам быстрый ответ за цену.

Для ответа на исходный плакат - Вы обычно не храните пароль и сравниваете его с какой пользователь typd в. Вы шифруете (на самом деле хеш) введенный пароль и хранилище это. Для проверки пароля, Вы выполняете то же шифрование на том, что пользователь enetered и сравнивают это. Обычно невозможно пойти от зашифрованного вида назад к действительному паролю.

ОТРЕДАКТИРУЙТЕ я подозреваю, что Вы задаете неправильный вопрос здесь - почему Вы хотите пароль, что Вы пытаетесь проверить и когда?

0
ответ дан 3 December 2019 в 13:24
поделиться

Можно получить имя пользователя с GetUserName (), но Вы не можете получить пароль; это нарушило бы безопасность для макетов 101.

0
ответ дан 3 December 2019 в 13:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: