Navisions-Client automatisch beenden
Hallo ,
ich habe folgendes Problem.
Ich möchte das der Navisions-Client sich automatisch beendet , wenn der User über einen bestimmten Zeitraum inaktiv ist.
Lösungen zur kompletten Abmeldung hab ich gefunden im rk von Win2003Server. Leider ist das nicht Sinn der Sache, es geht nur um den NAV-Client.
Ich möchte aber auch nicht ständig nachschauen und mir vielleicht noch die Speicherwerte aufschreiben müssen um zu vergleichen ob denn da sich was geändert hat.
Ein kostenpflichtiges Programm hab ich ja im Internet entdeckt, will ich aber nicht. Ich würde auch VB6 mit zur Hilfe nehmen, habe aber keinen direkten Lösungsansatz wie ich das realisieren könnte. Die Tasklist ist ne gute Sache, da kann man ja die PID auslesen. Aber die Speicherwerte müsste ich ja mit eine Art Timer immer wieder auslesen und speichern, vergleichen und dann eben den Prozess beenden.
Der Grund dafür ist der, das manche User sich einfach nicht abmelden vom Navision, und dann irgendwann mal die Lizenzen am Ende sind, andere sich einloggen wollen und nichts geht - d. h. mein Tele klingelt und ich darf das Problem lösen. Auf Dauer geht das einfach nicht.
Für Hilfe bzw. einen kleinen Denkanstoss wäre ich sehr dankbar.
Gruß
ich habe folgendes Problem.
Ich möchte das der Navisions-Client sich automatisch beendet , wenn der User über einen bestimmten Zeitraum inaktiv ist.
Lösungen zur kompletten Abmeldung hab ich gefunden im rk von Win2003Server. Leider ist das nicht Sinn der Sache, es geht nur um den NAV-Client.
Ich möchte aber auch nicht ständig nachschauen und mir vielleicht noch die Speicherwerte aufschreiben müssen um zu vergleichen ob denn da sich was geändert hat.
Ein kostenpflichtiges Programm hab ich ja im Internet entdeckt, will ich aber nicht. Ich würde auch VB6 mit zur Hilfe nehmen, habe aber keinen direkten Lösungsansatz wie ich das realisieren könnte. Die Tasklist ist ne gute Sache, da kann man ja die PID auslesen. Aber die Speicherwerte müsste ich ja mit eine Art Timer immer wieder auslesen und speichern, vergleichen und dann eben den Prozess beenden.
Der Grund dafür ist der, das manche User sich einfach nicht abmelden vom Navision, und dann irgendwann mal die Lizenzen am Ende sind, andere sich einloggen wollen und nichts geht - d. h. mein Tele klingelt und ich darf das Problem lösen. Auf Dauer geht das einfach nicht.
Für Hilfe bzw. einen kleinen Denkanstoss wäre ich sehr dankbar.
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 135968
Url: https://administrator.de/contentid/135968
Ausgedruckt am: 25.11.2024 um 21:11 Uhr
13 Kommentare
Neuester Kommentar
Hallo Mario,
wir setzen Navision ebenfalls in der 5.0 ein und haben das ganze auf einem Terminalserver am laufen.
Wir hatten unter navision 4.0 und der Native-DB ebenfalls ExpandIT im Einsatz, jetzt setzen wir jedoch auch ein automatisches trennen der RDP-Verbindung nach 15 Minuten Untätigkeit.
Es hat kein User Probleme damit, denn alle anderen Anwendungen laufen auf dem Fat-Client.
Gruß
Thomas
wir setzen Navision ebenfalls in der 5.0 ein und haben das ganze auf einem Terminalserver am laufen.
Wir hatten unter navision 4.0 und der Native-DB ebenfalls ExpandIT im Einsatz, jetzt setzen wir jedoch auch ein automatisches trennen der RDP-Verbindung nach 15 Minuten Untätigkeit.
Es hat kein User Probleme damit, denn alle anderen Anwendungen laufen auf dem Fat-Client.
Gruß
Thomas
Nicht zwangweise.
Ich könnte mir jetzt mal nur theoretisch vorstellen.
Navision kann ja die Datenbanksessions anzeigen. Da hier auch andere zugriffe angezeigt werden gehe ich davon aus das alles in einer Systemtabelle steht. Hier steht auch die Leerlaufzeit drinnen.
Jetzt könntest du mit einem seperaten Programm eben diese Tabelle auslesen nach der BenutzerID und dem Hostnamen suchen und wenn die Leerlaufzeit eine bestimmte Zeit überschreitet den Task killen.
Währ aber nur was für eine SQL Datenbank mit Windowslogin. Und alles rein Theoretisch.
Ich könnte mir jetzt mal nur theoretisch vorstellen.
Navision kann ja die Datenbanksessions anzeigen. Da hier auch andere zugriffe angezeigt werden gehe ich davon aus das alles in einer Systemtabelle steht. Hier steht auch die Leerlaufzeit drinnen.
Jetzt könntest du mit einem seperaten Programm eben diese Tabelle auslesen nach der BenutzerID und dem Hostnamen suchen und wenn die Leerlaufzeit eine bestimmte Zeit überschreitet den Task killen.
Währ aber nur was für eine SQL Datenbank mit Windowslogin. Und alles rein Theoretisch.
Hallo,
ich habe gerade einmal nachgesehen. Es gibt eine Sicht (dbo.Session) die unter anderen die Idle Zeit beinhaltet. Aufgrund dieser Tabelle sollte ein Logoff gut zu steuern sein.
Sollte das ganze ein einfaches Skript ergeben wäre ich interessiert, dan könnten wir einige Fat-Clients mehr installieren.
Gruß
Thomas
ich habe gerade einmal nachgesehen. Es gibt eine Sicht (dbo.Session) die unter anderen die Idle Zeit beinhaltet. Aufgrund dieser Tabelle sollte ein Logoff gut zu steuern sein.
Sollte das ganze ein einfaches Skript ergeben wäre ich interessiert, dan könnten wir einige Fat-Clients mehr installieren.
Gruß
Thomas
Hallo,
hier ein kleine c/side skript, mit dem wir das problem lösen. Das ding läuft alle 10 minuten im objektaufrufplaner:
LastFieldNo := FIELDNO("Connection ID");
SETFILTER("Idle Time", '>%1', 300000);
Filtertext:=GETFILTERS;
Session - OnAfterGetRecord()
IF Session."Login Type"=Session."Login Type"::Datenbank THEN
BEGIN
user.GET(Session."User ID");
sessions2.SETRANGE("User ID",Session."User ID");
IF (sessions2.COUNT>1) AND (sessions2."Login Type" <> sessions2."Login Type"::Windows) AND (user."Anzahl Anmeldungen"<>99) THEN
Session.DELETE;
sessions2.SETRANGE("User ID");
END
Gruß
hier ein kleine c/side skript, mit dem wir das problem lösen. Das ding läuft alle 10 minuten im objektaufrufplaner:
LastFieldNo := FIELDNO("Connection ID");
SETFILTER("Idle Time", '>%1', 300000);
Filtertext:=GETFILTERS;
Session - OnAfterGetRecord()
IF Session."Login Type"=Session."Login Type"::Datenbank THEN
BEGIN
user.GET(Session."User ID");
sessions2.SETRANGE("User ID",Session."User ID");
IF (sessions2.COUNT>1) AND (sessions2."Login Type" <> sessions2."Login Type"::Windows) AND (user."Anzahl Anmeldungen"<>99) THEN
Session.DELETE;
sessions2.SETRANGE("User ID");
END
Gruß
So leicht ist es jetzt auch nicht. Das ganze muss in einen Report oder Codeunit schrieben werden. Dazu noch 1-2 Variablen definiert.
Dann braucht ihr noch einen laufenden NAS Server und dann kann man den Report über die Objekt Warteschlange laufen lassen.
Hab ihr schon eine Schulung ala Reportdesign gehabt?
Dann braucht ihr noch einen laufenden NAS Server und dann kann man den Report über die Objekt Warteschlange laufen lassen.
Hab ihr schon eine Schulung ala Reportdesign gehabt?