2013-06-17 1 views
2

Windows определяет пять типов папок (общие элементы, документы, изображения, музыку и видео). В проводнике Windows вы можете получить/установить тип, щелкнув правой кнопкой мыши по папке и выбрав «Свойства» -> «Настроить» - «Оптимизировать эту папку». Я ищу способ получить/установить тип папки на C#. Я искал это, но я не должен использовать правильную терминологию.Как получить/установить тип папки в C#

Может кто-нибудь указать мне в правильном направлении?

Обновление: Спасибо всем за понимание! Думал, что это будет просто - по-видимому НЕ.

Очень странно. Я могу выбрать папку без desktop.ini. Я могу изменить свойства этой папки, выбрать тип папки, нажать «Применить», увидеть, как создается файл desktop.ini, и соответственно увидеть изменение вида папки. Однако я могу удалить desktop.ini, и тип папки сохраняется. Перезагрузка проводника. Через перезапуск Windows.

Что касается возможных теневых копий, я не могу найти доказательств, подтверждающих это. За исключением C :, защита системы отключена на всех моих дисках. Используя ShadowExplorer, я не нахожу ссылки на любые файлы desktop.ini.

Непонятные ...

+2

что именно вы имеете в виду "Тип папки"? вы пытаетесь получить атрибуты, подобные «только для чтения», скрытые? – sircapsalot

+1

@sircapsalot, прочитайте его снова, его намерение совершенно ясно. – walther

+0

Это хороший вопрос; он не должен быть закрыт. –

ответ

2

Ну, вы хотите направление, так ..... Это ссылка на документ Microsoft о настройке для папок ...

How to modify your folder view settings or to customize a folder

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

WinXP, 2003 
HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell 
HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam 

Vista, Win7 
HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell 

Глядя на указанных ключей реестра и в сложности за этими ключами я действительно предлагаю, чтобы оставить эту работу самой ОС.

EDIT я попал в моей самооценкой некоторые грубые комментарии ниже, так что я решил искать немного больше документации по этому desktop.ini файл, который, кажется, лучший вариант, чтобы решить вашу проблему. I have found this documentation, который кажется очень exaustive (но снова он также демонстрирует, как правильно обрабатывать этот маленький файл очень сложно) И, кстати, мне еще нужно понять, действительно ли изменение этого файла имеет значение или нет. Насколько я пробовал, тестовая папка остается неизменной, но это может быть вызвано каким-то кэшированием.

+0

Отличные исследования. Подойдя ближе, я также предлагаю забыть об этом и оставить его пользователю, чтобы установить его. – CodeZombie

+0

Спасибо за информацию. Однако, несмотря на то, что на моей машине с Windows 7 имеется множество настраиваемых каталогов, я не вижу записей в каталоге HKEY_CURRENT_USER \ Software \ Classes \ Local Settings \ Software \ Microsoft \ Windows \ Shell. Очень странно. – claytoncarney

+0

Поскольку записей в каталоге нет. В реестре такой вещи нет. Подумайте о съемных устройствах, таких как USB-ключи и DVD-ROM, используемые на многих компьютерах ... Все о 'desktop.ini'. – Kamil

2

типа Папка хранится в desktop.ini файл, расположенный в этой папке (которая имеет атрибут SYSTEM и его не видно по умолчанию - вы должны снять флажок «Скрывать защищенные системные файлы в настройках Проводника Windows)

Пример рабочего стола. .ini содержимое из Windows 7 из папки набора «оптимизировать для картины» или что-то его называют на английском языке Windows.

[ViewState] 
Mode= 
Vid= 
FolderType=Pictures 

для изменения/чтения FolderType вы можете просто изменить/прочитать файл.

этот файл (desktop.ini) может содержать больше настроек (например, пользовательский файл значков/расположение ресурсов). См. Desktop.ini в стандартной папке «Документы» или «Рабочий стол».


Редактировать/обновление согласно комментарии:

Может быть, happends, потому что файлы с атрибутом system может иметь теневую копию, и они будут восстановлены после их удаления? Я уверен, что нет другого места, где это хранится.

Попробуйте перезаписать этот файл вместо его удаления.

В Реестре Windows применяются только настройки по умолчанию при создании новых папок.

Также я сделал еще несколько копаний и нашел некоторую информацию о функции WINAPI, которая обрабатывает файлы desktop.ini «более правильно».

Смотреть это: Create Icons for Folders in Windows Explorer, Using C# by Evan Stone at codeproject.net

еще одна вещь о пользовательских папок без Desktop.ini - Я думаю, что это невозможно. Проверьте это снова и убедитесь, что вы можете видеть файлы с атрибутом system.

Edit 2:

Пожалуйста, обратите внимание на SchlaWiener ответ, он указал на что-то важное.

Я отклонил его ответ, но я ошибся, теперь я не могу отменить свой голос.

+0

Спасибо за информацию. Тем не менее, я нахожу несколько настраиваемых каталогов, у которых нет файла desktop.ini. Я даже могу удалить существующие файлы desktop.ini, и настройка остается. Кажется, он также должен храниться где-то в другом месте. – claytoncarney

+0

См. Обновление моего ответа. – Kamil

4

Я думаю, вы можете использовать рабочий стол ini-файл или реестр.

Однако, если вы создаете desktop.ini в папке, обязательно добавьте в эту папку атрибут «Система», иначе desktop.ini будет проигнорирован.

attrib +s FolderName 

(или C# код)

Ссылка на MSDN http://msdn.microsoft.com/en-us/library/aa969337.aspx

+0

Whaaat? Добавить системный атрибут в папку, чтобы изменить его настройку? Это безумие :) Downvoting. – Kamil

+0

Вы видели ссылку? 'Используйте PathMakeSystemFolder, чтобы сделать папку системной папкой. Это устанавливает бит для чтения в папке, указывая на то, что специальное поведение, зарезервированное для Desktop.ini, должно быть включено. 'В противном случае Explorer будет проверять каждую папку и каждую доступную подпапку для наличия файла desktop.ini, что будь тупым. Ссылка даже обеспечивает решение, позволяющее избежать диалога «Вы удаляете системную папку ...». –

+0

Кстати, из ссылки codeproject, которую вы указали: 'Атрибуты desktop.ini не только должны быть установлены в System, но также необходимо установить целевую папку:' Итак, вы должны понижать уровень. –

Смежные вопросы