INI Datei Benutzerabhängig verändern

  • Guten Tag,


    ich habe folgendes Problem. Wir nutzen Activ Directory.


    Wir Nutzen nun ein Programm, das Telefongespräche anzeigt. Wenn man nun auf seinem Arbeitsplatz ein Telefonat annimmt, öffnet sich automatisch eine Maske.


    Problem ist, dass jeder auch eine eigene Telefonnummer hat und wir einen Computer nutzen. Aktuell müsste man jedes mal in der Ini Datei oder im Programm die eigene Nummer umstellen.

    Meine Idee war nun in der InI Datei einen verweis auf eine andere Ini Datei, diese liegt im Benutzerprofil und wird vom Server heruntergeladen.


    Ausschnitt aus der Ini-Datei


    Die werte LinesAccept=1022 und LineControl=1022 müssen für jeden Benutzer verändert werden. Nun suche ich nach einem Weg oder Befehl das er diese Werte aus einer anderen Datei nimmt. Immer aus der des aktuell angemeldeten Benutzers. z.B


    in der Datei tel.ini würde dann die Werte für den jeweiligen Nutzer stehen z.B.

    LinesAccept=1022;

    LineControl=1022


    Oder man würde die INI Datei direkt Komplett in dem Benutzerordner laden und im Programmordner einen Benutzerabhängige Verknüpfung erstellen.


    Hat jemand eine Idee wie ich das lösen kann? Meine Kenntnisse sind wirklich nur gering, daher bin ich auf Hilfe unbedingt angewiesen.

  • Die werte LinesAccept=1022 und LineControl=1022 müssen für jeden Benutzer verändert werden.

    Wenn nur diese beiden Werte angepasst werden müssen, dann mach es doch so...

    Und Lesen kannst du sie dann so...

    Code
    Local $iLinesAccept = IniRead("Inifile.ini", @UserName, "LinesAccept", "")
    Local $iLineControl = IniRead("Inifile.ini", @UserName, "LineControl", "")
    If $iLinesAccept = '' Then MsgBox(64, @ScriptName, 'Für ' & @UserName & ' gibt es noch keinen Eintrag in der Datei Inifile.ini!')
  • Das Soll ja automatisch passieren. Ich brauche eine Lösung, das sobald, um auf dein Beispiel zurück zukommen, sich Peter (interne Telefonnummer 13) anmeldet,


    Soll in der INI-Datei eines Programmes die Werte geändert werden auf 1013 (somit überwacht das Programm die Leitung 13)

    Wenn sich dann nun Gabi anmeldet (interne Telefonnummer 25) soll automatisch die werte auf 1025

    So das das Programm dann die Telefonnummer 25 überwacht.


    Die Datei liegt unter C:\ProgramData\Telefonprogramm


    Da wir Aktiv Directory verwenden könnte ich auch unter dem Benutzer eine Datei mit der Nummer hinterlegen. Und Mann müsste "nur" die Datei auslesen und den Wert in die INI Datei schreiben. wie ich schon raus gefunden habe gibt es ja einen Dateipfad der immer den aktuell angemeldeten Benutzer abfragt.

    C:\Users\%USERPROFILE%\AppData\Roaming\Telefonsoftware\tel. Ich brauche quasi nur eine Möglichkeit das der Wert aus der Datei tel automatisch beim anmelden in die INI Datei geschrieben wird in die Zeile 13 und 14 hier könnte man ja auch die komplette Zeile überschrieben werden. Das man z.B in die Datei von Gabi direkt schreibt:

    Code
    LinesAccept=1025;
    LineControl=1025

    und diese Zeilen beim Anmelden dann in die INI Datei Zeile 10 und 11 kopiert. Quasi die Formel:


    Wert "C:\Users\%USERPROFILE%\AppData\Roaming\Telefonsoftware\tel" schreibe in Program.ini Zeile 10 und 11.


    Ich hoffe man konnte mir folgen. Vielen lieben dank

  • Hallo Manuel.P

    Bitnugger schlug vor, dass du statt mit verschiedenen Ini-Dateien arbeitest, einfach alle Daten in eine schreibst und dir dann den in deinem ersten Post geschilderten Klimbatsch mit Verweisen auf andere Ini-Dateien sparst.

    Quasi die Formel:


    Wert "C:\Users\%USERPROFILE%\AppData\Roaming\Telefonsoftware\tel" schreibe in Program.ini Zeile 10 und 11.

    Das Gegenstück zu IniRead ist IniWrite. Du kannst also einfach die Datei mit dem aktuellen User auslesen und in die Ini schreiben. Oder schreibst gar nichts in die Ini. Mir ist gar nicht klar, wozu du die Nummer in der ini stehen muss.. Das was du beschrieben hast, könnte ungefähr so aussehen:

    Code
    Local $sUser = FileRead(@AppDataDir & "\Telefonsoftware\tel")
    IniWrite("Inifile.ini", "CallManager", "KeyCallAccept", $sUser)
    IniWrite("Inifile.ini", "CallManager", "LineControl", $sUser)

    Ich habe nicht verstanden, was das Anmelden ist, jedenfalls könntest du es da Auslesen und in die Ini schreiben.

  • Zitat

    Ich habe nicht verstanden, was das Anmelden ist, jedenfalls könntest du es da Auslesen und in die Ini schreiben.

    Ich meine die Benutzeranmeldung am Rechner selber.

    Eventuell habe ich das auch falsch verstanden was Bitnugger gemeint hat. Ich bin auch nicht wirklich fit auf dem Gebiet.

    Daher hoffe ich auf Unterstützung für "Dumme" :D

    • Offizieller Beitrag

    Problem ist, dass jeder auch eine eigene Telefonnummer hat und wir einen Computer nutzen.

    Also ihr nutzt das Programm nur an einem einzigen PC. An diesem ist dann User-A ODER User-B ODER User-XYZ angemeldet?

    Dann gehe doch so vor:

    - Username des angemeldeten Users ist: @UserName

    - In die INI für deine Telefonsoftware kommt eine Sektion für jeden User (wie schon in Posts vorab empfohlen)

    Ich weiß nicht ob die Telefonsoftware automatisch startet oder manuell aufgerufen wird. Daraus ergeben sich dann folgende Varianten.

    - manuell: Covere den Programmaufruf in einem Skript, dass zuerst denn aktuellen User in die INI schreibt und danach das Programm öffnet (das weiß nun: "aktueller User = A" - schaue unter "User-A" nach der zu überwachenden Rufnummer)

    - automatisch: Ein ebensolches Skript wie bei manuell, muss im Autostart vor dem Telefonprogramm aufgerufen werden.

  • Ja das Programm wird an 2 PC genutzt aber mehrer Nutzer melden sich an dem gleichen PC an.


    Die Software wir manuell gestartet.


    Was ich nur nicht versteh ist, das Telefonprogramm schaut doch immer nur in die eine INI Datei, das kann ich auch nirgends ändern im Programm. Wenn ich nun jeden Nutzer rein schreibe, dann würde das Programm vermutlich den erste nehmen. Dann bin ich ja auch nicht weiter? oder verstehe ich das gerade falsch ?

  • Was ich nur nicht versteh ist, das Telefonprogramm schaut doch immer nur in die eine INI Datei, das kann ich auch nirgends ändern im Programm. Wenn ich nun jeden Nutzer rein schreibe, dann würde das Programm vermutlich den erste nehmen. Dann bin ich ja auch nicht weiter? oder verstehe ich das gerade falsch ?

    Ja, da hast du schon recht Manuel.P Dein erster Post mit den Inis und Verweis auf andere Inis klang wenigstens für mich nach deinem eigenen Programm und ich dachte du hast dir einfach ein schlechtes Design überlegt.

    • Offizieller Beitrag

    Wenn ich nun jeden Nutzer rein schreibe, dann würde das Programm vermutlich den erste nehmen


    Ja das Programm wird an 2 PC genutzt aber mehrer Nutzer melden sich an dem gleichen PC an.


    Das ist jetzt unklar. - Also ganz konkret: Arbeiten zeitgleich mehrere Benutzer mit dem Programm? - Wenn nicht, funktioniert es doch mit dem oben beschriebenen Weg: Bei Anmeldung eines Users in die INI den aktuellen Usernamen reinschreiben, den dann das Programm beim Start nutzt um die zu überwachende Nummer aus der INI für diesen User zu wählen..

  • Hey BugFix

    Das ist jetzt unklar.

    Ich denke, der erste zitierte Satz bezieht sich auf Bitnuggers Beispiel und meine ersten Ausführungen (als wir sicherlich beide dachten, es geht auch bei dem Ini-nutzendem Programm um sein Skript..).


    Ich meine die Benutzeranmeldung am Rechner selber.

    Es scheint so zu sein, dass sich jeder Benutzer an- und abmeldet und nicht einfach mittendrin ein anderer Nutzer den PC bedient. Daher wird es wohl ungefähr so zu lösen sein, wie du es beschrieben hast (nur bin ich noch nicht sicher, ob der Benutzername in die Ini geschrieben werden soll, oder dem Benutzer zugeordnete Nummern..).

  • Hallo Manuel.P !

    Wir haben hier ein Beschreibungsdefizit deinerseits, dass dem von Andy so gerne zitierten XY-Problem ähnelt. Die hier gemachten Lösungsvorschläge sind plausibel, basieren aufgrund unvollständiger bzw. missverständlicher Angaben letztlich aber alle auf Vermutungen.


    Bitnugger 's Vorschlag, für jeden Benutzer eine eigene Sektion in die ini-Datei einzufügen, ist z.B. gut !

    Das setzt aber voraus, dass die Software ini-Sektionen für einzelne Mitarbeiter unterstützt ! Ansonsten werden diese Sektionen bestenfalls ignoriert, oder führen ggf. sogar zu Fehlermeldungen im Programm.


    Nebenbei : Wurde der Name der Telefonsoftware eigentlich schon mal erwähnt ?


    Wenn selbst einem User wie BugFix nach fünf Beschreibungsversuchen noch nicht klar ist wie ihr in eurer Firma genau vorgeht, dann ist in den Beschreibungen der Wurm 'drin.


    Oder kann es vielleicht sein, dass die Software nur für einen Benutzer lizenziert ist und mit dem Gebastel an der ini-Datei eine Lizenzerweiterung vermieden werden soll ?

    Das ist jetzt aber nur eine Gedanke meinerseits und kein Vorwurf, also nicht übelnehmen ;).


    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Ich würde es so machen:

    Bei der (Erst-)Anmeldung eines Users liegt das AutoItscript im autostart und wertet den schon von BugFix angesprochenen @username aus.

    Das Script schreibt die INI-Datei der Telefonsoftware entsprechend des Users um, startet diese und voila....


    Was ich nur nicht versteh ist, das Telefonprogramm schaut doch immer nur in die eine INI Datei,

    eben;)

    Da ihr nur EIN Telefonprogramm habt, ergo auch nur EINE INI-Datei habt...

    Die Datei liegt unter C:\ProgramData\Telefonprogramm

    ...nutzt dir dein AD-nichts! Es würde dann immer nur der letzte angemeldete User "aktiv" sein.


    Sollte allerdings die Telefonsoftware netztwerkfähig und somit Multiusertauglich sein, könnte das von mir oben beschriebene Procedere funktionieren. Denn dann wird bei jedem (erst-) anmelden eines Users die Software im Userkontext gestartet, die "eigene" INI-Datei ausgelesen und dem User die Telefonnummer zugeteilt.

    Was, wenn sich auf dem PC bspw. 5 User anmelden, dazu führt, dass das dort danebenstehende Telefon auch beim Anruf an diesen 5 (verschiedenen) Telefonnummern klingelt. Und das ist doch wohl die Absicht, oder?

  • Hallo Manuel.P !


    Ich habe Dir ein Programm erstellt, welches (wahrscheinlich) Deine Anforderungen erfüllt.


    Bitte wie folgt vorgehen :

    Um für die Testphase Dein Produktivsystem nicht zu gefährden, ist das Programm so eingestellt, dass es mit einer Testumgebung arbeitet.


    - Lege Dir das Testverzeichnis C:\Test\Telefonprogramm an.

    - Die .zip-Datei aus dem Anhang herunterladen und entpacken.

    - Kopiere die beiden .ini-Dateien in dieses Testverzeichnis

    - Inifile.ini -> das ist eine verkürzte Version der Telefonsoftware-Ini zum Testen

    (wie diese Datei korrekt heißt, kannst Du mir ja noch mitteilen wenn der Test erfolgreich war)

    - SetPhoneData.ini -> hier kannst Du beliebige Benutzer anlegen, ändern oder wieder entfernen


    Falls Du die AutoIt-Quelldatei SetPhoneData.au3 nicht selbst kompilieren kannst/willst, dann nehme die SetPhoneData.exe. Die Exe muss in den Autostart-Ordner kopiert werden.


    Eine Beschreibung dazu findest Du im Header des au3-Skriptes.


    Bei mir unter Windows 7 funktioniert alles einwandfrei !

    Du kannst Dich ja melden, wenn der Test abgeschlossen ist bzw. noch Fragen auftauchen.


    Falls Du mit dieser Lösung zufrieden bist, wäre das Forum über eine - Dir angemessen erscheinende - Spende dankbar:) !


    Gruß Musashi

    Dateien

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    Einmal editiert, zuletzt von Musashi () aus folgendem Grund: Spendenbitte hinzugefügt, da Forumsbereich 'Mit Gegenleistung'.