Tip fișier: public vs. privat
Un tip de fișier public este, de asemenea, cunoscut ca popular sau controversat - deoarece mai multe aplicații concurente pot dori să fie asociate cu un fișier de acest tip. Caracteristicile scriptului folosind tipul de fișier public includ:- Ele sunt de obicei definite prin standarde și / sau promovate de organizații care le-au definit ca format de schimb de date.
- Acestea sunt adesea schimbate între mașini și utilizatori.
- Acestea trebuie să fie suportate pe mai multe platforme.
- Aceștia pot gestiona aplicațiile de la mai mulți dezvoltatori.
Spre deosebire de tipurile de fișiere publice, tipurile de fișiere private sau de proprietate au de obicei un format care este implementat și înțeles de un singur dezvoltator sau de o aplicație. Ca urmare, tipurile de fișiere închise sunt, de obicei, vulnerabile la conflictele dintre aplicații. Unele tipuri de fișiere pot fi create ca fișiere private și pot deveni publice ulterior.
Notă. Windows nu face distincție între tipurile de fișiere publice și private. Această separare are sens doar atunci când luați decizii cu privire la alegerea dvs. atunci când înregistrați tipuri de fișiere.
Selectați o extensie pentru tipul de fișier
Tipul dvs. de fișier este identificat prin extensia acestuia.
Înregistrarea unui tip de fișier
Pentru a asocia un tip de fișier cu o aplicație existentă, găsiți ProgID-ul acestei aplicații în registru. Pentru a asocia un tip de fișier cu o nouă aplicație, mai întâi creați un ProgID pentru aplicația dvs. Pentru informații suplimentare despre crearea unui nou ProgID, consultați ID-urile programului.
Subcheia de registry pentru extensia de nume de fișier trebuie să aibă următoarea formă: extension = ProgID. Extensiile de nume de fișiere în extensie sunt stocate în HKEY_CLASSES_ROOT.
Un punct important este să specificați punctul de conducere (.) Atunci când creați o subcheie de tip de fișier în registry. De exemplu, dacă doriți tipuri de fișiere cu un scurt și o extensie de lungă .myp extensie .myp-fișier deschis în aplicația myprogram, utilizați următoarea sintaxă: Așa cum se arată în exemplul de mai sus, dacă vă înregistrați ca o extensie de nume scurt de fișier (.myp), ar trebui să creați și o extensie extensie lungă (.myp-file). Pentru informații suplimentare, consultați Manipulatorii de tip fișiere.
Instalați subcheile opționale și atributele de extensie a fișierelor
Extensiile de tip de fișier din registru au mai multe subchei și atribute opționale.
Extensiile de extensii de fișiere utilizate de extensiile de fișiere sunt descrise în tabelul următor. Toate valorile sunt de tip REG_SZ.
Intrare în registru
Acest plugin conține una sau mai multe aplicații care apar în caseta de dialog Deschidere cu ajutorul tipului de fișier.
Această subcheie conține o listă de ProgID-uri alternative pentru acest tip de fișier. Programele cu aceste ProgID-uri apar, de asemenea, în caseta de dialog Deschidere cu. Atunci când o aplicație preia controlul asupra tipului de fișier, schimbând valoarea implicită, trebuie să se înregistreze și în această listă.
Setați valoarea PerceivedType la numele perceput de tip la care aparține fișierul. Această valoare nu este utilizată de Windows înainte de Windows Vista. Pentru informații suplimentare, consultați Tipurile percepute și înregistrarea aplicațiilor.
Forma obișnuită a unui plug-in cu o extensie de fișier arată astfel (toate înregistrările au tipul REG_SZ): Punctele importante de luat în considerare sunt:- HKEY_CLASSES_ROOT subramificație este o reflectare a format fuziune HKEY_CURRENT_USER \ Software \ Classes și HKEY_LOCAL_MACHINE \ Software \ Classes
- De obicei, HKEY_CLASSES_ROOT este destinat citirii, nu pentru scriere. Pentru informații suplimentare, consultați articolul HKEY_CLASSES_ROOT.
- Pentru a înregistra un tip de fișier global pe mașina specificată, creați o intrare pentru tipul de fișier din HKEY_LOCAL_MACHINE \ Software \ Classes.
- Pentru a înregistra un tip de fișier numai pentru utilizatorul curent, creați o intrare pentru tipul de fișier din HKEY_CURRENT_USER \ Software \ Classes.
- O aplicație poate specifica propria implementare de operare (cum ar fi deschis sau redare), așa cum se arată în exemplul următor: tastă de acțiune Plug (verb) include un șir de comandă, și o țintă drop metoda: comanda si DropTarget.
- Când creați sau modificați o extensie de fișier, trebuie să notificați sistemului schimbarea care a avut loc. Puteți face acest lucru prin apelarea funcției SHChangeNotify cu evenimentul SHCNE_ASSOCCHANGED specificat. Dacă nu, modificarea dvs. poate să nu fie observată până când sistemul repornește.
- Pentru a extrage informații despre asociațiile de fișiere din registru, utilizați interfața IQueryAssociations. Vedeți scenariul Scenariu de asociere a fișierelor pentru un script care ilustrează această procedură.
Definițiile atributelor de tip fișier
Atribuirea atributului de tip fișier către ProgID asociat vă permite să controlați anumite aspecte ale comportamentului tipului de fișier. Înainte de Windows Vista, aceste atribute vă permit să restricționați domeniul de proprietăți din fila Proprietăți din proprietățile folderului pentru a modifica diferite aspecte ale tipurilor de fișiere, cum ar fi pictograma sau acțiunile acestuia.
Atributele de fișier sunt steaguri binare specificate ca valori REG_DWORD sau REG_BINARY în conexiunea tipului de fișier ProgID asociat. Pentru a atribui atribute unui tip de fișier, adăugați intrarea EditFlags în ProgID asociată tipului de fișier și setați setul adecvat de pavilioane în el. Steagurile pot fi combinate folosind o operație logică OR pe bit (OR).
Consultați FILETYPEATTRIBUTEFLAGS pentru o listă de atribute posibile ale tipurilor de fișiere și valorile lor HEX, precum și detalii despre instalarea software-ului și obținerea acestor valori.
Următorul exemplu prezintă atributele FTA_NoRemove ($ 00000010) și FTA_NoNewVerb ($ 00000020) instalate pentru tipul de fișier .myp:
Activarea aplicației în dialogul "Deschidere cu"
Pentru a verifica dacă aplicația este adăugată la meniul Deschidere utilizând tipul de fișier, adăugați o legătură la aplicație sau în OpenWithProgids. sau în OpenWithList pentru tipul de fișier - așa cum se arată în acest exemplu: Conexiunea OpenWithProgids este preferată înainte de OpenWithList pentru a identifica aplicația. Pentru informații suplimentare despre aceste chei - consultați Instalarea sub-cheielor opționale și a atributelor extensiei de fișiere de mai sus.
Excludeți o aplicație din caseta de dialog "Deschidere cu" pentru fișiere fără asociații
Atunci când un utilizator încearcă să deschidă un fișier care nu este membru al oricărui tip înregistrat (de exemplu, este un fișier de tip necunoscut), sau atunci când utilizatorul selectează Deschidere cu sau Deschidere cu -> Alegeți programul implicit din meniul contextual al fișierului, atunci Carcasa prezintă un submeniu sau un dialog care permite utilizatorului să specifice programul care trebuie să deschidă acest fișier.
În mod implicit, orice aplicație înregistrată în conexiunea HKEY_CLASSES_ROOT \ Applications este reprezentată în această fereastră de dialog. Deschideți cu. Aceste aplicații sunt prezentate în Open cu ajutor, indiferent dacă sunt înregistrate pentru a procesa tipul de fișier.
Pentru a împiedica apariția aplicației dvs. în caseta de dialog Deschidere cu. Când o aplicație nu trebuie sau nu poate fi utilizată pentru a deschide anumite tipuri de fișiere, utilizați una din două tehnici:- Adăugați o intrare NoOpenWith la subcheia aplicației. Când o aplicație utilizează un tip de fișier, Windows stochează aceste informații pentru a crea o listă de programe recomandate. Această listă este prezentată în submeniul Deschidere cu. după cum urmează:
O captură de ecran a meniului contextual cu submeniul deschis "Deschideți cu"
Captură de ecran a casetei de dialog "Deschidere cu" cu lista de "aplicații recomandate"
Aplicațiile pot dezactiva această urmărire indicând valoarea NoOpenWith de sub cheia aplicației.
Notă. Dacă aplicația sa înregistrat în lista OpenWithList sau OpenWithProgIDs pentru tipul de fișier, va apărea în lista de aplicații recomandate. Chiar dacă specifică o intrare NoOpenWith. De asemenea, nu uitați că, chiar dacă aplicația nu este afișată în lista de programe, utilizatorul poate alege manual orice program.
Înregistrarea NoOpenWith este o valoare goală de tip REG_SZ. după cum se arată în următorul exemplu: Instalarea NoOpenWith are și aceste efecte:- Nu permite ca aplicația să fie atașată la lista de salt prin tragere și plasare, cu excepția cazului în care aplicația este înregistrată pentru a gestiona acest tip de fișier.
- Ea nu oferă dialoguri totală a fișierelor, precum și orice SHAddToRecentDocs provocare adăuga orice fișier la Salt lista de aplicații, cu excepția cazului în care cererea nu este înregistrată să se ocupe de acel tip de fișier.
Această metodă este utilă în special dacă aplicația poate salva un fișier de un anumit tip, dar nu o poate deschide. De asemenea, aplicația trebuie să stabilească steagul FOS_DONTADDTORECENT prin apelul IFileDialog.SetOptions. când se apelează dialogul de salvare a fișierului. Acest lucru împiedică afișarea elementului în secțiunea Recentă sau Frecventă în lista de sesiuni a aplicației. De asemenea, blochează urmărirea aplicației pentru OpenWithList.
Fiecare extensie acceptată este adăugată ca înregistrare subkey pentru SupportedTypes. după cum se arată în exemplul următor. Toate intrările sunt de tip REG_SZ sau REG_NULL, fără valori asociate. Dacă este setată tasta SupportedTypes, numai fișierele cu aceste extensii pot fi atribuite Jump-listului aplicației sau pot fi urmărite de secțiuni recente sau frecvent utilizate.
Înregistrarea NoOpenWith are prioritate față de SupportedTypes și ascunde aplicațiile din caseta de dialog Open cu.
Ștergerea informațiilor din registru în timpul ștergerii aplicației
Când dezinstalați o aplicație, ProgID și cele mai multe alte informații din registrul asociat aplicației trebuie șterse în timp ce aplicația este dezinstalată. Cu toate acestea, aplicațiile care iau dreptul de proprietate asupra tipului de fișier (specificând valoarea implicită în cheia tipului de fișier HKEY_CLASSES_ROOT \ Extension pe ProgID al aplicației) nu ar trebui să încerce să ștergă această valoare în timpul ștergerii. Lăsând datele în locul acesteia pentru valoarea implicită evită dificultatea de a determina dacă o altă aplicație a suprascris această valoare după instalarea acestei aplicații. Windows ia în considerare valoarea implicită numai dacă ProgID specificat în acesta este înregistrat. Dacă ProgID nu este înregistrat, atunci valoarea este ignorată, ca și cum nu ar exista.
Rețineți că alte informații despre proprietatea asupra tipului de fișier sunt stocate în subcategoria HKEY_CURRENT_USER și sunt de asemenea utilizate numai dacă aplicația este înregistrată. Prin urmare, nu trebuie să ștergeți aceste date când ștergeți aplicația.
Următorul exemplu arată starea regiștrilor înainte de dezinstalarea aplicației: Un exemplu de mai jos este starea aceluiași registru după dezinstalarea aplicației:
Tipuri de fișiere care acceptă meta-date publice
În Windows 7 și versiuni ulterioare, următoarele tipuri de fișiere acceptă meta-date publice.