[Gelöst] Tabelle 2000000046 Automation Server

22. Oktober 2009 17:08

Hallo zusammen,

ich habe ein wirklich komisches Phänomen:

In einer Codeunit lese ich die Tabelle 2000000046 Automation Server um zu prüfen, ob eine DLL registriert wurde.
Dies funktioniert einwandfrei, wenn ich die Codeunit direkt auf dem Server aufrufe. Die Codeunit läuft ebenso einwandfrei wenn ich sie von einem normalen NAV Client (PC) aufrufe.
Nun haben wir aber auch noch eine Terminalserver Anbindung und wenn ich die Codeunit über den NAV Client des Terminalservers aufrufe, ist der NAV Client blockiert.
Es wird keine Fehlermeldung ausgegeben, der Client ist einfach eingefroren.

Beim Debug habe ich gesehen, dass die Blockierung schon beim "recAutomationServersG.RESET" statt findet. Ich habe dann noch ein Form auf die Tabelle 2000000046 Automation Server erstellt und aufgerufen. Auch dort blieb der NAV Client sofort stehen. Man muss den Client dann abwürgen.

Wenn ich das Lesen der Tabelle ausklammere, dann läuft die Codeunit wieder einwandfrei!?!

Nun meine Fragen dazu:
1. Kann es sein, dass auf dem Terminalserver andere Berechtigungen vergeben wurden als auf dem NAV Server und den Clients?
2. Wie kann ich dieses Problem umgehen? Ich sollte unbedingt wissen, ob gewisse DLLs registriert wurden.
3. In meiner Codeunit lese ich auch die Registry, da ich wissen muss, ob ein Programm installiert ist. Kann es auch beim Lesen der Registry zu Problemen kommen?

Die Programme habe ich beigelegt. Die deaktivierten Funktionen sind mit //*** markiert. In diesen Funktionen lese ich die Tabelle "recAutomationServersG.RESET".

Mein Hauptproblem ist, dass ich diese Lösung bei 60 Kunden installieren möchte (bin schon mitten im Rollout) und es sollte für alle gleich ablaufen (also keine Individuallösungen).

Vielen Dank für Eure Hilfe, Beno.
Zuletzt geändert von beno am 11. November 2009 09:11, insgesamt 1-mal geändert.

Re: Tabelle 2000000046 Automation Server & Terminal Server

23. Oktober 2009 08:40

Hallo Beno,

da diese Tabelle eine physikalisch nicht vorhandene Tabelle ist, die erst zur Laufzeit erstellt wird, ist, vermute ich das der Benutzer auf dem Terminalserver keine Berechtigung hat, diese Informationen aus dem Betriebssystem abzurufen (also kein direktes Problem von NAV).

Hast du schon mal versucht das ganze als Administrator auf dem TS zu starten?

Gruß, Fiddi

Re: Tabelle 2000000046 Automation Server & Terminal Server

23. Oktober 2009 10:14

Hallo Fiddi,

danke für den Hinweis. Ich habe keine volle Admin.-Berechtigung zum Server und Terminal Server, da die Infrastruktur nicht durch uns installiert und konfiguriert wurde.
Ich habe aber eingeschränkte Berechtigungen auf dem Terminal Server und dem NAV Server. Wenn ich mich mit meiner Benutzer-ID (auf beiden Servern) anmelde, habe ich diese Probleme nicht. Ich habe mich dann aber mit der Benutzer-ID eines Terminals Server Benutzers angemeldet und konnte so das Problem nachvollziehen. Anschliessend habe ich die Entwickler-Lizenz bei diesem TS Benutzer lokal geändert und konnte so mit dem Debug sehen, wo der "Freeze" statt findet. Es ist wie beschrieben bei der ersten Zeile, wo ich die Tabelle 2000000046 Automation Server verwende (.RESET).

Kann ich irgendwie innerhalb der NAV Datenbank prüfen, ob der Benutzer Zugriff auf die Betriebssystem-Information hat? Weil auf die Tabelle 2000000046 Automation Server hat er ja voll Zugriff. Da es sich aber um eine virtuelle Tabelle handelt, kann NAV diese ggf. wegen Berechtigungsproblemen nicht füllen/lesen.

Viele Grüsse, Beno

Tabelle 2000000046 Automation Server & Terminal Server

11. November 2009 09:08

Gemäss Microsoft handelt es sich hierbei defintiv um ein Berechtigungsproblem:

Try to add “read”permissions for EVERYONE to
SOFTWARE\Classes\TypeLib\
This should do the trick…

Die Benutzer müssen also mindestens Leseberechtigung in der Registry haben.
Es gibt scheinbar auch keine Möglichkeit zu prüfen, ob die Leseberechtigung vorliegt oder nicht.

Beno.