Метод 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.
}
}
Пароль: Нет, это не сохраняется из соображений безопасности - это используется, затем отбрасывается. Вы могли получить зашифрованный пароль для этого пользователя из реестра, учитывая необходимые полномочия, затем дешифровать его с помощью чего-то как таблицы радуги, но это - чрезвычайно интенсивно использующие ресурсы и трудоемкие существующие методы использования. Намного лучше предлагать пользователю.
С другой стороны, если Вы хотите реализовать своего рода систему 'единой точки входа', как Novell делает, необходимо сделать это или через GINA (предварительная Vista) или через Учетного Поставщика (Vista), которая приведет к коду, даваемому имя пользователя и пароль при входе в систему, единственное время, в которое пароль доступен.
Для имени пользователя, получая текущее имя пользователя (тот, который выполняет Ваш код) легко: функция GetUserName в AdvApi32.dll делает точно это для Вас.
Если Вы работаете как услуга, необходимо помнить, что нет, никто "не вошел в систему пользователь": существуют несколько в любое время, такие как LocalSystem, NetworkService, СИСТЕМА и другие учетные записи, в дополнение к любым фактическим людям. Эта статья предоставляет некоторый код кода и документацию для того, чтобы сделать это.
Я считал бы это огромным дефектом безопасности, если бы это было возможно!
Вы не можете получить пароль пользователя начиная с его зашифрованного (не говоря уже о том, что это - общепринятая практика для не хранения паролей в простом тексте).
Для получения имени пользователя можно использовать GetUserName или NPGetUser
Отметьте уверенный, как это сделано, но инструмент "Network Password Recovery" из http://www.nirsoft.net/utils/network_password_recovery.html, кажется, получает пароль от некоторого кэша.
Полное изложение Аутентификации в Windows API может быть найдено на MSDN: http://msdn.microsoft.com/en-us/library/aa374735 (По сравнению с 85) .aspx
GetUserName получит Вас имя, но пароль Вы не можете добраться. Это даже не что-то хранилища Windows, AFAIK - только хеш Вашего пароля.
В зависимости от того, чего Вы пытаетесь достигнуть (можно сказать нам немного больше..) это возможно исполнить роль зарегистрированного пользователя и действительно наполняет от его имени.
инструмент "Network Password Recovery" ре
Windows (до XP) хранит копию passwd с более простым легким для повреждения шифрования - для соединения с более старым стилем lanmanager сетевые ресурсы. Инструменты обычно пробуют все возможные пароли против этого, использование таблиц радуги (precaluted зашифрованные версии слов словаря) ускоряет это.
В XPsp2/3 Vista удалена эта функция. Новое шифрование намного более трудно взломать и нуждается во многих часах для попытки всех возможных значений, существуют онлайн-сервисы, которые выполнят его на большом количестве машин, чтобы дать Вам быстрый ответ за цену.
Для ответа на исходный плакат - Вы обычно не храните пароль и сравниваете его с какой пользователь typd в. Вы шифруете (на самом деле хеш) введенный пароль и хранилище это. Для проверки пароля, Вы выполняете то же шифрование на том, что пользователь enetered и сравнивают это. Обычно невозможно пойти от зашифрованного вида назад к действительному паролю.
ОТРЕДАКТИРУЙТЕ я подозреваю, что Вы задаете неправильный вопрос здесь - почему Вы хотите пароль, что Вы пытаетесь проверить и когда?
Можно получить имя пользователя с GetUserName (), но Вы не можете получить пароль; это нарушило бы безопасность для макетов 101.