it-swarm.com.de

Gibt es eine Möglichkeit, einen UNC-Pfad einem lokalen Ordner unter Windows 2003 zuzuordnen?

Ich weiß, dass ich einen UNC-Pfad einem lokalen Laufwerksbuchstaben zuordnen kann. Ich frage mich jedoch, ob es einen Weg gibt, einen UNC-Pfad einem lokalen Ordner zuzuordnen. Ich habe ein Programm, das einen bestimmten Ordner fest in das Programm geschrieben hat, und ich möchte versuchen, einen Ordner mit demselben Namen zu erstellen, der einem UNC-Pfad zugeordnet ist, damit auf die Daten über eine Netzwerkfreigabe zugegriffen werden kann. Ist das machbar? Dies ist insbesondere auf einem Windows 2003-Server.

25
Davin Studer

Dies entspricht genau dem, was das OP verlangt - ein symbolischer Link für Windows 2003, der einer Netzwerkfreigabe zugeordnet wird. Nachdem ich viele Stunden lang andere angesehen und getestet hatte, ist dies die einzige Komponente, die ich mit Netzwerkfreigaben gefunden habe.

Symbolic Link-Treiber für Windows XP

Dieses Dienstprogramm funktioniert sowohl für XP als auch für 2003, wenn es einer Netzwerkfreigabe zugeordnet wird und ein Symlink erstellt wird: http://schinagl.priv.at/nt/ln/ln.html#symboliclinksforwindowsxp

Fügen Sie dies nun in ein Verzeichnis ein, das Sie in den Pfad eingefügt haben, und Sie haben die Möglichkeit, Symlinks mit senable.exe (mit symlink.sys) und ln.exe zu erstellen (Sie benötigen dies auch von der oben genannten Site zusammen mit ihrer Abhängigkeit von den Visual C++ - Laufzeit-DLLs.) .

Zusätzlicher Bonus: Fake Out MkLink

Fügen Sie diese zwei zusätzlichen Dateien in dasselbe Verzeichnis ein, in dem sich senable.exe befindet, und stellen Sie sicher, dass sich alles im Pfad befindet.

mklink.cmd:

@echo off

SET DIR=%~dp0%
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "& '%DIR%Symlink.ps1' %*"

pushd "%DIR%"
"%DIR%senable.exe" start
popd

Symlink.ps1:

param (
 [string]$symlinktype,
 [string]$link,
 [string]$target
)

$scriptpath = $MyInvocation.MyCommand.Path
$ScriptDir = Split-Path $scriptpath

$senable = Join-Path "$ScriptDir" senable.exe
$ln = Join-Path "$ScriptDir" ln.exe

pushd "$ScriptDir"
& cmd /c "$senable" install
popd
& cmd /c "$ln" -s "$target" "$link"

Hinweis:

Sie benötigen die folgenden anderen Elemente, die unter Windows 2003 installiert sind (nicht R2, ich bin mir noch nicht ganz sicher, was Sie für R2 benötigen):

  • Microsoft .NET Framework 2.0 Service Pack 1 
  • Windows Imaging-Komponente
  • Windows Server 2003 Service Pack 2
  • Windows Management Framework Core (das bringt PowerShell 2)

Schokoladiges Paket

Ich habe ein schokoladiges Paket erstellt, das all dies für Sie erledigt: http://chocolatey.org/packages/win2003-mklink

Wichtige Notiz

Im Gegensatz zu normalen Symlinks können Sie den Ordner nicht einfach löschen, um den symbolischen Linkordner zu entfernen. Wenn Sie dies tun, wird der echte Ordner gelöscht, auf den er verweist. Also mit äußerster Vorsicht verwenden.

15
ferventcoder

Ja, es gibt eine Möglichkeit, einen UNC-Pfad einem lokalen Ordner zuzuordnen:

C:\>mklink /D Develop \\obsidian\Develop
symbolic link created for Develop <<===>> \\obsidian\Develop

Dies liegt daran, dass ein build -Server den Develop-Ordner meines eigenen Computers als Develop-Ordner verwenden soll:

10/20/2012  11:01 AM    <SYMLINKD>     Develop [\\obsidian\Develop]

Und da hast du es.


MKLINK [[/D] | [/H] | [/J]] Link Target

        /D      Creates a directory symbolic link.  Default is a file
                symbolic link.
        /H      Creates a hard link instead of a symbolic link.
        /J      Creates a Directory Junction.
        Link    specifies the new symbolic link name.
        Target  specifies the path (relative or absolute) that the new link
                refers to.

Hinweis : In meiner tatsächlichen Situation brauchte ich eine weitere Umleitungsebene, da das Programm, das ich verwende, feststellte, dass Develop eine symbolische Verbindung war , die auf eine entfernte Maschine zeigte und sich weigerte, dies zu tun. Ich sagte dem Programm, er solle stillstehen und tun, was es gesagt wurde, indem es eine Kreuzung gab, die auf eine local - Ressource verweist. 

10/20/2012  11:06 AM    <JUNCTION>     Develop [C:\Develop2\]
10/20/2012  11:01 AM    <SYMLINKD>     Develop2 [\\obsidian\Develop]
19
Ian Boyd

Sie können es nicht direkt tun, aber wenn Sie einen symbolischen Link erstellen, sollten Sie in der Lage sein, auf den zugeordneten Laufwerksbuchstaben zu zeigen.

Net Use e: \\ Shares\folder # Sie möchten dies dauerhaft einrichten, oder beim nächsten Neustart wird es beschädigt.

Navigieren Sie mit cmd zu Ihrem Speicherort, an dem Sie den Link wünschen

cd c:\ordner

mklink/d name e: \

Nun wird alles, was auf c:\ordner\name\zugreift, auf \\ share\ordner\zugreifen.

4
Wulfhart

Laut Microsoft können Sie einen freigegebenen Ordner auf einem Remote-Computer (Server) NICHT einem lokalen Ordner zuordnen. Zum Beispiel:

  • freigegebener Ordner auf dem Server: \\ Server\share1
  • zugeordnete Freigabe auf einem lokalen Computer: c:\MyProgram\Some_Useluf_Files_Here

Das wird nicht funktionieren !!!! Wie Microsoft feststellte, können Sie mklink auf einem Remote-Rechner zumindest nicht für Junctionoder Hard-Linkstun. Sie können es NUR als Symbolic link tun, was im Grunde eine Abkürzung ist. Wenn also ein bestimmtes Programm auf einen lokalen Ordner zugreifen muss, der auf dem Server gleich ist ... Entschuldigung, kein Glück !! Windows ist nicht Linux, lassen Sie uns nicht vergessen :-( 

2
dorbar

Sie können es nicht direkt abbilden, nein. Sie könnten versuchen, eine Shell-Namespace-Erweiterung zu implementieren, die als Teil des Dateisystems registriert ist, sodass Sie sie dort rooten können, wo Sie sie benötigen, und dann auf den UNC-Pfad intern zugreifen. Es ist keine triviale Sache, die Sie implementieren sollten, aber es sollte Ihnen das Endergebnis liefern, nach dem Sie suchen.

1
Remy Lebeau

Angenommen, Sie möchten \\ moo\cow zu C:\cow_files zuordnen, und es ist noch kein Server mit dem Namen moo vorhanden.

  1. Bearbeiten Sie die hosts-Datei (oder Ihren tatsächlichen DNS-Server, wenn möglich), um dem Computer mit c:\cow_files mehrere Dateien zuzuordnen. (Oder zu localhost, wenn das Verzeichnis lokal für den Client ist, der die Zuordnung benötigt.)

  2. Teilen Sie C:\cow_files als Kuh auf dieser Maschine.

Sie sollten dann in der Lage sein, \\ moo\cow zuzuordnen und die Dateien zu erhalten, die Sie benötigen, es sei denn, ich habe etwas übersehen (was möglich ist :)).

0
Leo Davidson

Nach langem Ausprobieren habe ich endlich herausgefunden, dass Sie es nicht so machen können, wie ich es wollte. Ich habe einen symbolischen Link mit der Funktion mklink in Server 2008 ausprobiert, es stellt sich jedoch heraus, dass die .NET System.IO-API keine symbolischen Links erkennt. Wenn Sie also Directory.GetFiles () für einen Ordner ausführen, der symbolisch verknüpft ist, wird ein Fehler ausgegeben.

0
Davin Studer