public static List<T> FindControlByType<T>(Control mainControl,bool getAllChild = false) where T :Control
{
List<T> lt = new List<T>();
for (int i = 0; i < mainControl.Controls.Count; i++)
{
if (mainControl.Controls[i] is T) lt.Add((T)mainControl.Controls[i]);
if (getAllChild) lt.AddRange(FindControlByType<T>(mainControl.Controls[i], getAllChild));
}
return lt;
}
Я просто удалил бы файлы, и если бы мусорное ведро все еще полно, я открыл бы Terminal (Ctrl
- Alt
- T
), тип "113" и нажал бы Enter. Это изменит указатель мыши в X. Парение мышь по Панели инструментов Единицы и нажатию левая кнопка мыши. Это уничтожит панель инструментов, и одну секунду спустя она возвратится.
РЕДАКТИРОВАНИЕ: подход xkill уничтожит сессию и приложения, работающие в нем, и необходимо будет войти в систему снова. Это действительно приводит к пустому trashcan значку все же. (Протестированный под 14,04): кажется, что это - давнишняя ошибка со многими дубликатами, см.: https://bugs.launchpad.net/ubuntu / + source/gnome-applets / + ошибка/269441
Я второй рекомендация для David Barton библиотека DCPCrypt . Я использовал его успешно в нескольких проектах, и это не возьмет спустя больше чем 15 минут после чтения примеров использования. Это использует лицензию MIT, таким образом, можно использовать его свободно в коммерческих проектах и иначе. DCPCrypt реализует много алгоритмов, включая Rijndael, который является AES.
существуют много googlable автономны (единый блок) реализации также - вопрос - какому Вы доверяете, если Вы не готовы проверить correctedness конкретной библиотеки сами.
У меня была та же проблема. Файлы, которые были удалены из Карты памяти, заставляли Мусор казаться полным даже при том, что это было пусто. Как только я освободил мусор со смонтированной Картой памяти, мусор был убран.
Найденный, что удаление файлов от жесткого диска расширения заставляет корзину быть полной даже при том, что нет. Решение состоит в том, чтобы переместить файлы, которые Вы хотите удалить от внешнего до корзины, чем пустой. Или выйдите из системы и войдите в
Мусор на рабочем столе пытается подвести итог всего мусора, к которому может получить доступ текущий пользователь.
Каждый диск, каждый диск, имеет свой собственный мусор, вид разговора.
Так (настольный) мусор, остающийся полной после того, как, палка usb отключается средства:
, Если это происходит просто, включают назад, что палка usb, или внешний диск и удаленные файлы появятся снова в (настольном) мусоре. Теперь пустой, что мусор и файлы от всего "связанного" мусора будут на самом деле удалены.
Это не ошибка. Это, как мусор работает под человечностью Linux.
Nick, конечно, прав - я просто предполагаю, что Вы знаете то, что Вы делаете, когда Вы говорите, что хотите провести все 15 минут на реализации решения по обеспечению безопасности. Библиотека DCPCrypt также реализует много алгоритмов хеширования, если Вы решаете пойти тем (лучшим) путем.
Я reccomend, использующий некоторый тип соли. Не храните склеп (пароль) в файле конфигурации, но insted этого склепа хранилища (соль + пароль). Как 'соль' можно использовать что-то, что требуется, чтобы открывать базу данных, например, db_name+user_name. Поскольку склеп функционирует, можно использовать некоторый известный algortithm в качестве AES, Идеи, DES или чего-то столь же простого как xoring каждый байт с байтом от некоторой другой строки, та строка будет ключом. Сделать это более отличающимся для решения Вас может использовать некоторые случайные байты и сохранить их.
Так для хранения:
И соединить:
Просто напоминание.
, Если бы donВґt необходимо взаимодействовать со склепом других, освобождает, затем DCP или LockBox сделали бы задание.
, НО
при необходимости в нем, чтобы быть полностью совместимыми с rinjdael спецификациями, забудьте свободные компоненты, theyВґre довольно "паршивый" большую часть времени.
Как другие указали в целях аутентификации, необходимо постараться не хранить пароли с помощью обратимого шифрования, т.е. необходимо только сохранить хэш пароля и проверить хеш предоставленного пользователями пароля против хеша, который Вы сохранили. Однако тот подход имеет недостаток: это уязвимо для нападения таблицы радуги, должен взломщик овладевать своей базой данных хранилища пароля.
то, Что необходимо сделать, сохранить хеши предварительно выбранного (и секрет) соленое значение + пароль. Т.е. свяжите соль и пароль, хешируйте результат и сохраните этот хеш. При аутентификации сделайте то же - связывает соленое значение и предоставленный пользователями пароль, хеш, затем проверяет на равенство. Это делает нападения таблицы радуги невыполнимыми.
, Конечно, если пользователь отправляет пароли по сети (например, если Вы работаете над веб-приложением или клиент-серверным приложением), затем Вы не должны отправлять пароль в открытом тексте через, таким образом, вместо того, чтобы хранить хеш (соль + пароль) необходимо сохранить и проверить по хешу (соль + хеш (пароль)), и сделать, чтобы клиент предварительно хешировал предоставленный пользователями пароль и отправил тот по сети. Это защищает пароль Вашего пользователя также, должен пользователь (как многие делают), снова используют тот же пароль в нескольких целях.
Я использовал этот библиотека , действительно быстрый для добавления. Но шоу Wiki еще немного решений.
У меня всегда есть пользователь Turbopower Lockbox. Это работает хорошо, и очень простой в использовании. Я на самом деле использую его для точно того же самого, храня пароль в текстовом файле конфигурации.
TOndrej имеет правильный подход. Вы никогда не должны хранить пароль с помощью обратимого шифра. Как было правильно указано, если Ваш "основной" ключ был когда-либо поставлен под угрозу, вся система поставлена под угрозу. Используя необратимый хеш, такой как MD5, намного более безопасно, и можно сохранить хешированное значение как открытый текст. Просто хешируйте введенный пароль и затем сравните его с сохраненным хешем.
Я думаю, что Turbopower LockBox является превосходной библиотекой для криптографии:
http://sourceforge.net/projects/tplockbox/
я не знаю, является ли это слишком большим для Вашего использования, но это очень просто в использовании, и можно зашифровать строку с 5 строками кода. Это - все в примерах.
Даже если Вы шифруете, мне кажется, что Ваш ключ расшифровки, а также зашифрованный пароль оба будет в Вашем исполняемом файле, что означает, что никоим образом не просто безопасность с помощью мрака. Любой может взять ключ расшифровки и зашифрованные пароли и генерировать необработанные пароли.
то, Что Вы хотите, является односторонним хэшем.
В типичных целях аутентификации Вы не должны хранить пароли, только необходимо проверить, является ли пароль, введенный пользователем, правильным. Если это - Ваш случай затем, можно просто сохранить подпись хеша (например, MD5) вместо этого и сравнить его с подписью введенного пароля. Если эти два соответствия подписей введенный пароль корректны.
зашифрованные пароли Хранения могут быть опасными, потому что, если кто-то получает Ваш "основной" пароль, они могут получить пароли всех Ваших пользователей.
, Если Вы решаете использовать MD5, можно использовать MessageDigest_5.pas, который идет с Delphi (по крайней мере, он включен с моей копией Delphi 2007). Существуют также другие реализации с исходным кодом Delphi, из которого можно выбрать.