kaineanung
Goto Top

Symbolischen Link auf UserProfile dynamisch setzen?

Hallo Leute,

ich habe da ein kleines Problem.

Wir benutzen in der Firma ein Zeiterfassungs-Programm bei welchem die Mitarbeiter Ihre gebuchten Arbeitszeiten sehen können und Urlaubszeiten beantragen können.
Jeder User hat seine individuelle Konfigurationsdatei (XML) die bestimmt wie was auszusehen hat usw.

Problem ist nun das sich diese Konfigurationsdatei im Installationsverzeichnis befindet und somit nicht Multiuser-fähig zu sein scheint.
Da ist mir die Lösung eingefallen es mit symbolischen Links zu probieren. Das hat erstmal auch geklappt und die Konfigdatei befindet sich nun im %APPDATA%-Verzeichnis, also im Userbezogenen Profilverzeichnis unter "Roaming". Das hat mir erstmal kurz Hoffnung gegeben es damit zu schaffen. Der Test hat auch gut funktioniert.

Dann kam aber die Ernüchterung: Der Befehl "mklink" löst die Umgebungsvariable %APPDATA% erst auf und setzt das Ergebnis dann als Pfad zur Datei / zum Verzeichniss. Somit habe ich dann wieder nichts gewonnen da diese dann immer auf den User zeigt welcher den Link erstellt hat (in dem Fall zu meinem Administrator-Profil).

Ich brauche eine Lösung die es mir ermöglicht so einen Pfad pro angemeldeten User zentral anzulegen so daß pro angemeldeten User dieser entsprechend in sein Profilpfad zeigt. Geht so etwas mit symbolischen Links und wenn ja wie? Wenn nein: gibt es eine andere Lösung dafür?

Letztendlich soll das ganze auf einem Terminalserver laufen und der symbolische Link soll zu der Konfigurationsdatei eines jeden angemeldete User zeigen.


Hier nochmals kurz als Übersicht:
So sieht die Konfigurationsdatei des Zeitmanagementprogramms aus:
c:\Zeitmanagementprog\Konfig\ma.xml
(Die Konfig-Datei "ma.xml" muss immer so heissen und immer in diesem Verzeichnis zu finden sein.)

Ich dachte ich lösche diese Datei hier und lege stattdessen ein symbolischen Link ab. Dieser zeigt dann in das Userbezogene Profilverzeichnis:
%APPDATA%\Zeitmanagement\ma.xml

Diese "ma.xml" ist pro User individuell.
Das Ergebnis war aber daß der symbolische Link nicht auf %APPDATA% zeigt sondern "c:\User\Max\AppData\Roaming".

Schon einmal im Voraus vielen Dank für eure Mühe.

Content-Key: 647041

Url: https://administrator.de/contentid/647041

Printed on: April 26, 2024 at 15:04 o'clock

Member: erikro
erikro Feb 01, 2021 updated at 17:23:01 (UTC)
Goto Top
Moin,

Zitat von @kaineanung:
ich habe da ein kleines Problem.

Nein, Du hast ein ganz großes Problem. Ich fürchte fast, ein unlösbares

Jeder User hat seine individuelle Konfigurationsdatei (XML) die bestimmt wie was auszusehen hat usw.

Problem ist nun das sich diese Konfigurationsdatei im Installationsverzeichnis befindet und somit nicht Multiuser-fähig zu sein scheint.

Irgendwie widersprechen sich die beiden Aussagen. face-wink

Ich brauche eine Lösung die es mir ermöglicht so einen Pfad pro angemeldeten User zentral anzulegen so daß pro angemeldeten User dieser entsprechend in sein Profilpfad zeigt. Geht so etwas mit symbolischen Links und wenn ja wie? Wenn nein: gibt es eine andere Lösung dafür?

Ich hätte da ein paar Ideen. Aber ...

Letztendlich soll das ganze auf einem Terminalserver laufen und der symbolische Link soll zu der Konfigurationsdatei eines jeden angemeldete User zeigen.

Dann ist das schlicht die falsche Software. Wie soll das gehen, dass c:\Zeitmanagementprog\Konfig\ma.xml gleichzeitig beim einen User auf c:\User\Max\AppData\Roaming und beim anderen auf c:\User\Moritz\AppData\Roaming verlinkt ist? Mission impossible. Oder es darf sich immer nur einer zur Zeit am TS anmelden. face-wink

Liebe Grüße

Erik
Member: Xolger
Xolger Feb 01, 2021 at 17:42:14 (UTC)
Goto Top
Hallo,


wie @erikro schon geschrieben hat, das wird nichts.

Das wird vom Filesystem nicht unterstützt, siehe:
https://social.technet.microsoft.com/Forums/ie/en-US/96ffc0ea-03a0-4499- ...

Gruß
Xolger
Member: erikro
erikro Feb 01, 2021 at 18:09:14 (UTC)
Goto Top
Moin,

Zitat von @Xolger:
Das wird vom Filesystem nicht unterstützt, siehe:

Das kann vom FS nicht unterstützt werden, weil es von der Logik nicht unterstützt wird. face-wink In einer Einzelplatzumgebung könnte ich das noch hinbasteln, dass der Link beim Anmelden umgeschrieben wird. Aber wie soll das in einer Mulituserumgebung eines Terminalservers gehen?

Das Einzige, was man probieren könnte:

Der symbolische Link zeigt auf:

H:\zeiterfassung\ma.xml

H: ist ein Netzlaufwerk, auf dem sich für jeden User ein individuelles Verzeichnis befindet. Das Home-Laufwerk halt. Da das ja bei jedem User beim Anmelden entsprechend gemappt wird, zeigt es bei jedem User automatisch auf die richtige Datei. Aber ob das sauber läuft?

Das klingt wie der typische Fall: Geschäftsleitung kauft billig und die IT muss es ausbaden. Wenn Du nicht an der Entscheidung beteiligt warst, würde ich mich an Deiner Stelle auf den Standpunkt stellen: Ist nicht terminalserverfähig. Falsche Software. Geht nicht. Solche Bastellösungen machen nämlich dauerhaft Ärger.

Liebe Grüße

Erik
Member: kaineanung
kaineanung Feb 04, 2021 updated at 09:35:23 (UTC)
Goto Top
Zitat von @erikro:

Moin,

Zitat von @kaineanung:
ich habe da ein kleines Problem.

Nein, Du hast ein ganz großes Problem. Ich fürchte fast, ein unlösbares
Ja, das habe ich auch relativ schnell gemerkt. Habe mir aber den umgekehrten Lösungsansatz überlegt und das scheint auch zu klappen:
Ich lagere auch nicht die Konfigdatei in das %APPDATA% aus sondern das ganze Programm, alle Ordner und einzelne Dateien die in Root liegen, werden nach %APPDATA% verlinkt. Nur der Konfig-Ordner wird dorthin kopiert und die Konfigurationsdatei dem User entsprechend getauscht.
Die User-Desktop-Verknüpfung wird dort auf die verlinkte EXE und das "Ausführen in" ebenfalls dort hin gelegt. Und es funktioniert.
Ich habe also immer eine feste Verlinkung nach c:\Zeitmanagement. Das Wohin ist also fest, das Wo ist nun dynamisch und so funktioniert es dann. Einfach umdrehen lautet die Devise... ;)

Jeder User hat seine individuelle Konfigurationsdatei (XML) die bestimmt wie was auszusehen hat usw.

Problem ist nun das sich diese Konfigurationsdatei im Installationsverzeichnis befindet und somit nicht Multiuser-fähig zu sein scheint.

Irgendwie widersprechen sich die beiden Aussagen. face-wink
Naja, jeder User hat eine Individuelle konfigurationsdatei solange er sich auf seinem PC anmeldet ;) Hehehe, ja, ich weiß was du meinst: auf einem Client gesehen hat er das eben nicht... daher müssen wir eben tricksen..


Ich brauche eine Lösung die es mir ermöglicht so einen Pfad pro angemeldeten User zentral anzulegen so daß pro angemeldeten User dieser entsprechend in sein Profilpfad zeigt. Geht so etwas mit symbolischen Links und wenn ja wie? Wenn nein: gibt es eine andere Lösung dafür?

Ich hätte da ein paar Ideen. Aber ...
Ich habe eine gefunden. Sogar ganz alleine ;) siehe oben... Aber danke dir für das 'sich Zeit nehmen'

Letztendlich soll das ganze auf einem Terminalserver laufen und der symbolische Link soll zu der Konfigurationsdatei eines jeden angemeldete User zeigen.

Dann ist das schlicht die falsche Software. Wie soll das gehen, dass c:\Zeitmanagementprog\Konfig\ma.xml gleichzeitig beim einen User auf c:\User\Max\AppData\Roaming und beim anderen auf c:\User\Moritz\AppData\Roaming verlinkt ist? Mission impossible. Oder es darf sich immer nur einer zur Zeit am TS anmelden. face-wink
Daher auch das Verschieben in das %APPDATA%-Verzeichnis als 'Workaround'

Liebe Grüße

Erik

Ebenfalls liebe Grüße!
Member: kaineanung
kaineanung Feb 04, 2021 at 09:41:51 (UTC)
Goto Top
Zitat von @erikro:

Moin,

Zitat von @Xolger:
Das wird vom Filesystem nicht unterstützt, siehe:

Das kann vom FS nicht unterstützt werden, weil es von der Logik nicht unterstützt wird. face-wink In einer Einzelplatzumgebung könnte ich das noch hinbasteln, dass der Link beim Anmelden umgeschrieben wird. Aber wie soll das in einer Mulituserumgebung eines Terminalservers gehen?

Das Einzige, was man probieren könnte:

Der symbolische Link zeigt auf:

> H:\zeiterfassung\ma.xml
> 

H: ist ein Netzlaufwerk, auf dem sich für jeden User ein individuelles Verzeichnis befindet. Das Home-Laufwerk halt. Da das ja bei jedem User beim Anmelden entsprechend gemappt wird, zeigt es bei jedem User automatisch auf die richtige Datei. Aber ob das sauber läuft?
Ja, das war auch kurz die Lösung die ich weiterverfolgen wollte bis mir meine Idee eingefallen ist das ganze Programm nach %APPDATA% zu verlinken bis auf die individuellen Dateien die dort abgelegt werden und für jeden User eben seine Konfigurationsdatei dort abgelegt wird.
Das Programm wird auch in %APPDATA% ausgeführt und es klappt.

Das klingt wie der typische Fall: Geschäftsleitung kauft billig und die IT muss es ausbaden. Wenn Du nicht an der Entscheidung beteiligt warst, würde ich mich an Deiner Stelle auf den Standpunkt stellen: Ist nicht terminalserverfähig. Falsche Software. Geht nicht. Solche Bastellösungen machen nämlich dauerhaft Ärger.

Im Normalfall würde ich das so unterschreiben. In diesem Falle ist es so daß wir vor Jahren auf ein neues ERP gewechselt sind und Personalsoftware immer noch als separate Lösung betrieben haben. Der ERP-Hersteller hat aber hoch und heillig versprochen daß sie eine super-tolles Modul dafür haben und wenn es soweit ist können wir es in den Entscheidungsprozess mit berücksichtigen wenn wir das Personalwesen aktualisieren. Das war dann der Fall und das modul des erp-Herstellers war hochintegriert und ganz gut bis auf das mit der Multiuser-Fähigkeit auf dem TS.

Liebe Grüße

Erik

Gruß
Member: kaineanung
kaineanung Feb 04, 2021 at 09:50:42 (UTC)
Goto Top
Ich habe lediglich noch ein kleines Problemchen:
Bin ich Administrator kann ich Hardlinks auf die Verzeichnisse und Softlinks auf die Dateien setzen (Hardlinks auf Dateien gibt es bei mir immer einen Fehler -> das ist abern icht das Pbolem. Funktioniert auch mit Softlinks gut).
Bin ich nicht Administrator, kann ich keine SymLinks erstellen (ist so, ist auch nicht das Problem gerade).
Führt es das Logon-Skript über GPP aus, so werden mir alle Verzeichnisse und Dateien verlinkt wenn ich mich mit Administratorrechten einlogge. Mache ich es mit normalen Benutzerrechten (Domänen-Benutzer) so werden nur die hard-verlinkten Verzeichnisse verlinkt, die Soft-verlinkten Dateien nicht.


So, kennt jemand das Problem? Lösung, Lösungsansatz oder irgendwas in die Richtiung?

Danke schon einmal im Voraus für eure Mühe!
Member: kaineanung
kaineanung Feb 04, 2021 at 14:33:37 (UTC)
Goto Top
Ich habe die Lösung für mein Problem gefunden:
Per GPO erlauben daß auch die User Symbolische Links machen dürfen.
Und siehe da: es funktioniert nun ganz so wie ich es mir Vorstelle. Und aus einem Nicht-Multiuserfähgiem Programm ist eines geworden.
Ich sollte beim Hersteller nach einem Bonus verlangen ;)


Hier die GPO-Einstellung:
Computerkonfiguration->Richtlinien->Windows-Einstellungen->Sicherheitseinstellungen->Loakel Richtlinien->Zuweisen von Benutzerrechten->Erstellen symbolischer Verknüpfungen
Da die ganzen Benutzer und/oder Gruppen hinzufügen (z.B. Domäne\Domänen-Benutzer) und siehe da: es funktioniert ;)

Danke Leute für eure Mühe!