Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Med Bindlink-biblioteket kan administratörsanvändare binda ett filsystemnamnområde till en lokal virtuell sökväg via bindningsfiltret (minifilter bindflt.sys). Bind länkar ger filsystemomdirigering från en lokal virtuell sökväg till en lokal eller extern stödväg. De kan främst aktivera två typer av scenarier: för det första kan de få fjärrfiler via en nätverksresurs att verka lokala, vilket förbättrar appkompatibiliteten, och för det andra möjliggör de scenarier där ett program vill att filer från olika platser ska visas på en ny plats, eventuellt med olika namn och katalogstrukturer, utan att kopiera filerna. Bindningslänkar är transparenta för program och alla befintliga API:er fungerar utan kunskap om den här omdirigeringen. Ingen fysisk fil eller katalog skapas för den virtuella sökvägen och bindningslänkarna utökar säkerhetsbeskrivningarna och behörigheterna för filerna och katalogerna i säkerhetskopieringssökvägen till den virtuella sökvägen.
Användning
Uppsättningen API:er består av två relaterade funktioner:
- CreateBindLink – Med det här API:et kan administratörer skapa en bindningslänk mellan en virtuell sökväg och en säkerhetskopieringssökväg.
- RemoveBindLink – Med det här API:et kan en användare ta bort en länk som skapades tidigare genom att anropa CreateBindLink-.
Exempel på användning av dessa funktioner finns i Bindlink-exempel.
Skapa bindningslänkar
Bindningslänkar är transparenta för programmen och medan dessa länkar finns, gäller alla åtgärder för den underliggande sökvägen. Därför agerar DeleteFile eller RemoveDirectory på den underliggande sökvägen och tar bort den underliggande sökvägen men inte länken. Det här API:et misslyckas om användaren inte har administratörsbehörighet, om användaren inte har behörighet att öppna den virtuella sökvägen eller säkerhetskopieringssökvägen, om säkerhetskopieringssökvägen inte finns, om det finns en annan länk för den virtuella sökvägen eller om det uppstår ett internt fel när länken konfigureras. Mer specifikt bör administratörsanvändaren kunna koppla filtret (behörigheter för FilterAttach), ansluta till filterporten (behörigheter för FilterConnectCommunicationPort) och komma åt roten till den stödjande sökvägen, annars misslyckas API:et med ERROR_ACCESS_DENIED.
Om en app försöker följa länken till en underliggande sökväg som togs bort efter att länken konfigurerades, kommer appen att visa ERROR_FILE_NOT_FOUND*. Senare om säkerhetskopieringssökvägen skapas igen gäller länken nu för den nya säkerhetskopieringssökvägen. Om en fil skulle skapas på virtualPath- medan länken finns, visas den på virtualPath- om länken finns men skapas fysiskt på den underliggande sökvägen. När länken tas bort kommer filen endast att visas på den bakomliggande sökvägen och inte längre synas på sökvägen virtualPath. Detta gäller för alla typer av länkar som beskrivs nedan.
Beroende på om den virtuella sökvägen finns på disken blir den resulterande länken antingen en länk utan fästpunkt eller en skugglänk.
Länklösa länkar
Länklösa länkar är bindningslänkar som skapas när den virtuella sökvägen inte finns på disken innan länken skapas. När den här typen av länk skapas syntetiseras den virtuella sökvägen i minnet och visas som en vanlig sökväg i filsystemet. Observera att om du vill skapa en sådan bindlänk måste den virtuella sökvägens överordnade finnas antingen som en katalog på disk eller som en tidigare skapad länk. Om du till exempel vill använda C:\Foo\Bar som en virtuell sökväg måste C:\Foo vara en diskkatalog eller tidigare skapad som den virtuella sökvägen för en annan länk. Eftersom en volym inte har någon överordnad kan det inte finnas en fri länk till en volym som inte existerar. Att till exempel skapa en bindningslänk med en virtuell sökväg "Z:" skulle misslyckas om det inte redan fanns en volym med namnet "Z".
Skugglänkar
En skugglänk är en där den virtuella sökvägen finns på volymen innan länken skapas. När en sådan virtuell sökväg används för att skapa en länk döljs innehållet i den virtuella sökvägen medan innehållet i stödvägen blir synligt på den virtuella sökvägen. Till exempel:
- C:\Foo exists on disk with two files Cat.txt and Dog.txt
- C:\Bar exists on disk with two files Cow.txt and Mouse.txt
När en länk skapas med C:\Foo som virtuell sökväg och C:\Bar som sökväg döljs C:\Foo path will then show Cow.txt and Mouse.txt to all users while Cat.txt and Dog.txt tills länken tas bort.
Ett annat exempel i följande diagram hjälper till att skilja mellan skugglänk och länk utan fästpunkt.
En användare som räknar upp c:\Foo hittar katalogen och dess befintliga innehåll redan innan någon av bindningslänkarna som visas i diagrammet skapas. När länkarna har skapats kommer en listning av c:\Foo visa C:\Foo\Bar and Cow.txt. Eftersom C:\Foo finns på disken med eller utan länken är länken mellan C:\Foo och \\Remote\Target en skugglänk.
En användare som räknar upp c:\Foo skulle inte se c:\Foo\Bar innan den andra bindningslänken skapas. Eftersom C:\Foo\Bar visas först efter att länken mellan c:\Foo\Bar och C:\Target2 har lagts till, är det rent virtuellt och därför är länken mellan c:\Foo\Bar och C:\Target2 en länk utan fästpunkt.
Observera att de säkerhetsbeskrivningar som gäller för den underliggande sökvägen tillämpas på båda dessa typer av länkar.
Vissa flaggor kan skickas in för att ändra standardbeteendet så att det passar användarens behov.
CREATE_BIND_LINK_FLAG_MERGED-flagga
En sammanslagen länk är som en skugglänk, förutom att det befintliga innehållet i den virtuella sökvägen sammanfogas med en bakgrundssökväg. För att skapa den här typen av länk ska flaggan CREATE_BIND_LINK_FLAG_MERGED användas.
Låt oss överväga det tidigare exemplet för skugglänken igen, med tillägg av den här flaggan.
Till exempel:
- C:\Foo exists on disk with two files Cat.txt and Dog.txt
- C:\Bar exists on disk with two files Cow.txt and Mouse.txt
När en länk skapas med C:\Foo som virtuell sökväg och C:\Bar som underliggande sökväg med flaggan CREATE_BIND_LINK_FLAG_MERGED, C:\Foo path will show Cat.txt, Dog.txt, Cow.txt and Mouse.txt.
Det är viktigt att komma ihåg att sammanfogade länkar endast gäller när den virtuella sökvägen är en katalog. Om en fil visas i både den säkerhetskopierade sökvägen och den virtuella sökvägen har filen i säkerhetskopieringssökvägen företräde , dvs. filen i den virtuella sökvägen är maskerad. Detta gäller rekursivt för alla kataloger inom den virtuella sökvägen. Eftersom sammanfogningen gäller för kataloger, om virtualPath- och backingPath båda har en katalog med samma namn på samma nivå, sammanfogas katalogen som ett resultat av länken. Om länken inte var en sammanslagen länk har katalogen i backingPath företräde och åsidosätter katalogen i virtualPath-. Om en fil skapades på den sammanfogade sökvägen när den sammanfogade länken finns skapas den fysiskt på backingPath- (vilket är fallet med en bindningslänk) och åsidosätter en fil med samma namn på virtualPath-.
Nu ska vi överväga följande katalogstrukturer och de två olika länkarna:
- c:\Foo\Sub\Foo_sub.txt
- c:\Bar\Sub\Bar_sub.txt.
Om c:\Foo är länkad till c:\Bar utan sammanfogning, då är c:\Foo\Sub will only show Bar_sub.txt. Men om c:\Foo är länkad till c:\Bar med sammanslagning, då c:\\Foo\Sub will show both Foo_sub.txt and Bar_sub.txt.
Eftersom bindningslänkar är sökvägsbaserade länkar, om en fil ersätts, ändras eller tas bort/återskapas i sökvägen efter att länken har skapats, pekar den virtuella sökvägen på filen som finns när länken följs. Detta beror på att länken löses när en fil öppnas. Om en fil från den underliggande sökvägen maskerade en fil i den virtuella sökvägen på grund av länkens effekt, och om filen i den underliggande sökvägen togs bort, kommer en efterföljande begäran om att öppna filen att öppna den i den virtuella sökvägen.
CREATE_BIND_LINK_FLAG_READ_ONLY flagga
Skrivskyddade länkar är bindande länkar där användarna i systemet hindras från att göra ändringar i filer som finns i bakgrundssökvägen om de nås via den virtuella sökvägen. Det innebär att en användare med behörighet att ändra en fil på säkerhetskopieringssökvägen fortfarande kan ändra filen om de kommer åt den via säkerhetskopieringssökvägen, men inte om de kommer åt den via den virtuella sökvägen. Normalt tillämpas behörigheterna för den underliggande sökvägen som sådana när den motsvarande virtuella sökvägen öppnas, men när flaggan CREATE_BIND_LINK_FLAG_READ_ONLY används maskeras skrivrättigheter bort. Detta säkerställer att program ser att filen är CREATE_BIND_LINK_FLAG_READ_ONLY.
Observera att den skrivskyddade begränsningen endast gäller för filer som finns på basvägen på disken. Om länken slås samman och filer som ursprungligen kommer från den virtuella katalogsökvägen visas förblir de modifierbara.
Till exempel:
- C:\Foo exists on disk with a file Cat.txt
- C:\Bar exists on disk with a file Cow.txt
När en länk skapas med C:\Foo som virtuell sökväg och C:\Bar as the backing path and the link is marked read-only and merged, both Cat.txt and Cow.txt visas på C:\Foo, however, Cat.txt will be modifiable while Cow.txt, kan den inte ändras.
Dessutom stöder det här API:et flera andra länkscenarier. Dessa beskrivs i följande avsnitt.
Kapslade länkar
Bindningslänkar kan kapslas. Detta innebär att en föregångarkomponent eller en efterkommandekomponent i en virtuell sökväg också kan vara en virtuell sökväg för sin egen länk.
Observera att det inte finns någon begränsning för efterföljande cirkulära länkar.
Överväg länkarna och ordningen på länkarna i diagrammet "Kapslade bindningslänkar" ovan.
Om en länk skapas med en virtuell sökväg: C:\Foo\Bar kan en annan länk skapas med C:\Foo som virtuell sökväg, och ytterligare en länk kan skapas med C:\Foo\Bar\Baz som virtuell sökväg.
Till exempel:
- C:\Target exists on disk with a file Cat.txt
- C:\Target2 exists on disk with a file Dog.txt
- C:\Foo finns på disken med ett katalogfält
Om C:\Foo\Bar är länkad till C:\Target (Länk1) och C:\Foo är länkad till C:\Target2 (Länk2), en användare som enumererar C:\Foo will see Dog.txt och katalogen Bar, eftersom Bar är en virtuell sökväg för sin egen länk. Därefter om C:\Foo\Bar\Baz är länkad till C:\Target2 (Link3), en användare som räknar upp c:\Foo\Bar will see Cat.txt och katalogen Baz, eftersom Baz är en virtuell sökväg för sin egen länk.
Ytterligare bindningslänkscenarier
Följande punkter är viktiga och bör alltid beaktas tillsammans när man beslutar om resultatet av en länk eller en uppsättning länkar:
Bakgrundssökvägen har alltid företräde och åsidosätter om en entitet med samma namn finns i den virtuella sökvägen eller genom en länk. Detta gäller för alla typer av bindningslänkar.
Tänk till exempel på följande länk:
c:\Foo är länkad till c:\Target, där c:\Target är en fil.
I så fall ser c:\Foo ut som en fil med innehållet i c:\Target för en länk utan fästpunkt. Även om c:\Foo är en katalog som finns lokalt (skugglänk) får länken ovan c:\Foo att se ut som en fil om länken och den säkerhetskopierade sökvägen finns.
I händelse av motstridiga länkar har den senast skapade länken företräde. Den senaste länken kan dock inte dölja en tidigare länk.
Som ett annat exempel bör du överväga följande länkar. Den andra länken ändrar vyn för namnområdet.
- Länk1: c:\Foo är länkad till c:\Target, där c:\Target är en katalog. c:\Target har ett filfält
- Länk 2: c:\Foo\Bar är länkad till c:\Target2, where Target2 is a directory containing a file Cat.txt
I det här fallet, när Link1 har skapats, kommer c:\Foo att innehålla en fil Bar. Men efter Link2, c:\Foo will show a directory Bar with a file Cat.txt. På samma sätt, om c:\Target2 var en fil, blir c:\Foo\Bar en fil med innehållet i C:\Target2
Å andra sidan, Om ordningen på länkarna var omvänd enligt nedan, c:\Foo\Bar will continue to appear as a directory showing Cat.txt från c:\Target2. Stödvägen har företräde framför objekt under en virtuell sökväg, men de har inte företräde framför roten till den virtuella sökvägen.
- Länk1: c:\Foo\Bar är länkad till c:\Target2, where Target2 is a directory containing a file Cat.txt
- Länk 2: c:\Foo är länkad till c:\Target, där c:\Target är en katalog. c:\Target har ett filfält
För att en länk ska kunna skapas bör den överordnade för den virtuella sökvägen finnas lokalt eller visas på grund av backingPath- i en tidigare länk eller vara en virtuell sökväg i en länk.
Om till exempel c:\Foo först är länkad till c:\Target och sedan c:\Foo\Bar\Baz länkas till en stödväg, lyckas länken från c:\Foo\Bar\Baz om c:\Foo\Bar finns på grund av något av följande villkor:
- c:\Foo\Bar finns lokalt och ett undantag i föregående länk säkerställer att c:\Foo\Bar inte skuggades av c:\Target (se Undantag i nästa avsnitt) eller
- c:\Foo\Bar finns på grund av föregående länk (d.v.s. om c:\Target har ett katalogfält) eller
- c:\Foo\Bar är en virtuell sökväg i en annan länk (c:\Foo\Bar ==> något)
Not
Detta innebär att kapslade fästpunktslösa länkar måste skapas med den djupaste länken som skapades sist. Skugglänkar har dock inga sådana begränsningar, eftersom de virtuella sökvägarna redan finns på disken.
Överväg följande länkar som skapats i samma ordning:
- C:\Foo är länkad till C:\Target
- C:\Foo\Bar är länkad till c:\Target2
Att skapa en länk påverkar inte beteendet för den underliggande sökvägen. Därför visas det virtuella katalogfältet i c:\Foo och inte i c:\Target. Länktabellen ser ut så här:
- C:\Foo --> c:\Target, C:\Foo\Bar --> c:\Target2 och inte
- C:\Foo --> c:\Target, c:\Target\Bar --> c:\Target2
Undantag till bindningslänkar
Du kan också ange undantag för att begränsa omfånget för den skapade länken. Undantagssökvägar är underordnade till den virtuella sökvägen där länken inte gäller. Undantagssökvägar kan vara filer eller kataloger men bör vara underordnade den virtuella sökvägen. API:erna kräver att undantagssökvägarna är tillgängliga när länken skapas. Undantaget gäller för alla efterföljare i undantagssökvägen. Till exempel:
- C:\Foo finns på disken och innehåller ett katalogfält och en katalog Baz
- C:\Foo\Bar contains Cat.txt
- C:\Foo\Baz contains Dog.txt
- C:\Target exists on disk and contains a file Cow.txt
Om en länk skapas från C:\Foo till C:\Target med ett undantag för C:\Foo\Baz ser användaren följande:
- C:\Foo will contain the file Cow.txt från C:\Target, and the directory Baz with its child Dog.txt. Observera att C:\Foo\Bar inte visas eftersom den har skuggats av länken.
Följande diagram representerar scenariot som beskrivs ovan:
Slutligen gäller undantag för bindningslänkar inte för fästpunktslösa länkar eftersom förankringslösa virtuella sökvägar inte har några underordnade per definition och därför inte har några sökvägar som kvalificerar sig. API:et returnerar ett fel om det görs ett försök att skicka undantag till en länk utan ankare.