Hardlink ins Benutzerprofil

TuberPlays

Lt. Junior Grade
Registriert
Jan. 2016
Beiträge
444
Hallo,

ich suche einen Weg, einen Hardlink von einem Ordner in einen Ordner im Userpath zu erzeugen?

Hintergrund ist der, dass ich hier eine Software habe, die den Exportpath für die erstellten CSV Dateien Hardcoded auf C:\Ordnername hat. Somit ist eine Terminalservernutzung nicht möglich, weil die Datei ja dann von anderen Überschrieben wird, Dummerweise lesen andere Programmteile, die diese CSV Datei dann nutzen die Datei auch von dem Hardcoded Pfad. Somit ist wegkopieren keine Lösung.

Was ich brauche:
Programm legt CSV Datei in C:\Ordnername ab, abgelegt wird diese aber dann in %userprofile%\Ordnername. Wenn das Programm dann die Datei einlesen will, wird dieser Aufruf dann ebenfalls umgebogen.

Versuche habe ich mklink mit "mklink /J C:\Test %userprofile%\Test". Dort wird dann auch ein Syslink erstellt, allerdings nicht Nutzerbasiert, sondern für den kompletten Server (Somit habe ich wieder das Problem, dass die Dateien gegenseitig überschrieben werden).

Jemand eine Idee?

Danke!
 
Das ist nicht ganz eindeutig... Du sagst, die Software kann nicht per Terminal genutzt werden. Also nicht auf dem Server sondern auf dem Client? Wenn auf dem Client, wo ist denn das Problem?

Wenn immer nur ein user auf dem Server gleichzeitig arbeiten kann, dann als login-Script den mklink zum grade aktiven User umbiegen. Wenn mehrere gleichzeitig angemeldet sind, dann gehts nicht mit Boardmitteln. Dann müsstest du eine eigene Link-Behandlung in den Kernel integrieren.
 
scooter010 schrieb:
Du sagst, die Software kann nicht per Terminal genutzt werden. Also nicht auf dem Server sondern auf dem Client?
Es gibt einen Server (Windows Server) und die Mitarbeiter connecten sich per RDP da drauf.

scooter010 schrieb:
Wenn mehrere gleichzeitig angemeldet sind, dann gehts nicht.
Schade. :( Also kann man Windows nicht dazu bringen das "%Userprofile%" nicht auflöst, sondern die Variable drin stehen zu lassen und dann pro User die Aufrufe umbiegen?

Grüße!
 
Schon Mal mit %%userprofile%% probiert?
Ergänzung ()

Dann sollte die cmd das nach %userprofile% auflösen und in den Link eintragen.
 
scooter010 schrieb:
Dann sollte die cmd das nach %userprofile% auflösen
Auflösen tut sie es sogar. Aber irgendwie nicht richtig
1554558790510.png

Angelegt wird der Link dann zwar, funktioniert aber nicht
1554558815548.png

Wenn ich das ganze in Anführungsstriche packe wird das genau so aufgelöst:
1554558860029.png


Grüße!
 
Achso, kein Batch sondern in der Kommandozeile direkt? Dann nicht %% zum Maskieren des % verwenden, sondern "^" (ohne ") verwenden.

Probiere mal

Bash:
^%userprofile^%
Ergänzung ()

770840

Ergänzung ()

Aber leider trotzdem...:
770841
 
Damit hast du den Beweis: Windows kann nicht mit Variablen in Smbolischen Verknüpfungen umgehen.
 
Wenn ich mir mal anschaue, wohin Windows das auflösen will sieht man auch, warum das nicht funktioniert
1554559889735.png

Einfach gesagt, müsste nun nur noch das "Administrator" raus :D
 
Das funktioniert nicht klick

Es ist also nicht vom Dateisystem vorgesehen, das Symbolische Links zur Laufzeit ausgelöst werden.
Ergänzung ()

Wie soll das auch funktionieren? Der Symbolische Link "ist" das Ziel. Würden mehrere Leute das lokal im Verzeichnis haben, würde jede Änderung durch Person X auch bei Person Y durchschlagen. Das dann wie ein Netzlaufwerk wo alle Zugriff haben.

Einfacher ist es wohl einfacher, ein "Wrapper" für deine Software zu programmieren, welche Dateisystemaufrufe auf C:\Test ins Nutzerverzeichnis umbiegt.

Oder einfach in der Binary deiner Software den Pfad ersetzen...
 
Danke für den Link @scooter010!

Was ich mir überlegt habe, aber leider nichts dazu gefunden habe (wahrscheinlich, weil es ebenfall nicht funktioniert :D), kann ich die HardLinks so anlegen, dass die nur für einen einzelnen User gelten? - Heißt wenn User A einen Hardlink von C:\Test auf C:\User\A\Test anlegt, sieht diesen Link (also den "Ordner" auf C:\) nicht und kann dann seinen eigenen Link anlegen, der dann auf C:\User\B\Test zeigt.

Grüße!
Ergänzung ()

scooter010 schrieb:
Einfacher ist es wohl einfacher, ein "Wrapper" für deine Software zu programmieren, welche Dateisystemaufrufe auf C:\Test ins Nutzerverzeichnis umbiegt.
Das könnte schwierig werden, da die Software nicht von uns ist und auch nicht open Source. Wir haben den Entwickler auch schon mal angeschrieben, der will für eine solche Änderung aber Preise, die weit jenseits von gut und böse sind.
 
Nein. Du musst doch wissen, dass das nicht gehen kann? Es hört sich an, als wärest du Admin. Ein Admin müsste wissen, das auch "Links" nur Dateien sind und jeder Dateiname inkl. Pfad einmnalig sein muss. Du kannst zwar den Zugriff von User 2 auf die Datei verbieten, dann kann er sie aber auch nicht erneut anlegen, nur weil er sie nicht "sieht".
Ergänzung ()

Es bleibt dir nur, die Software modifizieren zu lassen oder die ganze umgebung in eine userspezifische VM zu verschieben. Ob es in Windows auch sowas wie chroot gibt?
 
scooter010 schrieb:
Es hört sich an, als wärest du Admin
Das ist richtig, ja. Allerdings habe ich das Link Zeugs von Windows noch nie genutzt. Von daher habe ich mit dem Teil auch noch keine Erfahrungen. Die Frage nach den userbezogenen Links habe ich gestellt weil ich weiß dass Microsoft gerne mal was einbaut (Jeder der mal mit MS Exchange gearbeitet hat, kann ein Lied von singen ;) ) was man davor nicht vermutet hätte :)

Grüße!
 
Zum Thema Wrapper: Ich meine damit, ein eigenes Programm zu schreiben, welches deine Software quasi "debugmäßig" aufruft, die System Calls kontrolliert und eben den einen Pfad ersetzt. Sehr dirty, nicht sehr performant, aber ansonsten geht nichts mehr. Außer die Userspezifische VM.
 
Zurück
Oben