| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: Teamcenter Username ermitteln (1941 mal gelesen)
|
DocCleaner Mitglied Trainer, Supporter und Programmierer für NX und TC
Beiträge: 15 Registriert: 31.01.2012 NX 8.5, TC 8.3, C# oder UserFunction
|
erstellt am: 04. Nov. 2015 15:54 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich habe ein hoffentlich relativ leicht zu lösendes Problem, aber ich finde die Lösung einfach nicht. Wahrscheinlich übersehe ich einfach was. Ich schreibe an einem Programm (in C#), dass sich für einen bestimmten Teamcenter-Nutzer bzw. Account anders verhalten soll. Wie bekomme ich den Teamcenter-Nutzernamen des Anwenders raus? Die NX-Version ist 8.5, die Teamcenter-Version ist 8.3 und im Regelfall ist es eine 4-Tier-Verbindung, kann aber im Einzelfall auch mal 2-Tier sein. Der Account wird von Verschiedenen Anwendern genutzt, daher kann ich nicht über den Rechnernamen oder Betriebssystem-Account gehen. Gruppe und Rolle sowie Administratorstatus, Beipassrechte usw. sollen auch nicht für die Erkennung genutzt werden. (Das habe ich alles gefunden, nur den Nutzernamen nicht...) Ich bin für jede Hilfe dankbar, es muss kein C# oder allgemein .Net sein. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rainer Schulze Ehrenmitglied V.I.P. h.c. Dipl.-Ing. im Ruhestand
Beiträge: 4419 Registriert: 24.09.2012
|
erstellt am: 04. Nov. 2015 16:22 <-- editieren / zitieren --> Unities abgeben: Nur für DocCleaner
>>Der Account wird von Verschiedenen Anwendern genutzt, daher kann ich nicht über den Rechnernamen oder Betriebssystem-Account gehen. Ich denke, da hast Du keine Chance. Wie willst Du denn erkennen, wer physisch vor dem Bildschirm sitzt, wenn alle den gleichen Account verwenden? Oder ist Deine Beschreibung ungenau? Ein eklatanter Verstoß gegen die üblichen IT-Sicherheitsrichtlinien. Aber es gibt (oder gab) auch mindestens eine Firma, in der alle mit dem infodba-Konto arbeiten dürfen...
------------------ Rainer Schulze Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ThomasZwatz Ehrenmitglied V.I.P. h.c. cadadmin
Beiträge: 5433 Registriert: 19.05.2000 (12-2023) --------------------------------------------- [stable] NX2007(2027.5020) + SE2023 U6 + TC13.3.0.3, RAC +AWC6.2.2 SingleSite 4Tier, DocMgt, Client4Office, MRO, ReqMgt, SchedMgt, T4S, TcVis Mockup, TcSSO, SEEC, Multi-CAD BCT-Inspector Neutral v22R2 --------------------------------------------- [testing] NX2007(2027.5020) + SE2023 U6 + TC13.3.0.3, RAC +AWC6.2.2 BCT-Inspector Neutral v22R2 @M7720 Win10 (21H2)
|
erstellt am: 04. Nov. 2015 16:36 <-- editieren / zitieren --> Unities abgeben: Nur für DocCleaner
Schon im NXOpen.PDM Namespace geschaut ? Auf die Schnelle finde ich nichts, nur die Gruppe, mit Role ginge vielleicht auch was. Harter WA wäre im TC Syslog nach dem String "POM_login: xxxxxxxx" zu suchen ... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DocCleaner Mitglied Trainer, Supporter und Programmierer für NX und TC
Beiträge: 15 Registriert: 31.01.2012 NX 8.5, TC 8.3, C# oder UserFunction
|
erstellt am: 04. Nov. 2015 17:24 <-- editieren / zitieren --> Unities abgeben:
@Rainer Schulze: Da scheint meine Beschreibung ungenau zu sein, mir geht es darum den Teamcenter-Account zu erkennen, nicht darum zu erkennen ob derjenige den auch nutzen darf. Nehmen wir mal an der Account hat den Namen "Special" und wird von drei Anwendern Karl, Hans und Fritz für bestimmte Aufgaben, wie Importe, genutzt. Die drei haben jeweils einen PC und ein Notebook, auf denen Teamcenter installiert ist und haben auch normale Accounts im Teamcenter für die alltägliche Arbeit, aber besagte Importe usw. sollen immer mit dem Teamcenter-Account "Special" durchgeführt werden und nur wenn der Account genutzt wird, soll das Programm ein paar Sachen mehr machen, als üblich. Das Kriterium sollen also nicht die sechs Rechnernamen sein oder die drei Windows-Accounts, sondern nur der in Teamcenter genutzte Account "Special". @ThomasZwatz: Ja, da habe ich geschaut. Am ehesten kommt man da über PDMSession und SessionSettings an Informationen, die in die Richtung gehen, aber den Nutzernamen konnte ich nicht finden. Gruppe und Rolle sind kein Problem, die habe ich schon mal für andere Anwendungen gebraucht, aber hier soll unbedingt der Account-Name genutzt werden. Bei den user_functions habe ich nur UF.AskSystemInfo() gefunden, aber da bekomme ich auch nur den Rechnernamen und den Namen des Windows-Accounts raus. Den Workaround mit dem Syslog habe ich auch im Hinterkopf, aber das finde ich irgendwie unsauber. Wenn ich nichts anderes finde, werde ich es aber wohl so machen müssen. Dann werde ich aber das NX-Logfile nehmen. Ich kann einfach nicht glauben, dass man so leicht an Gruppe und Rolle kommt und die sogar von NX aus wechseln kann, aber nicht an den Nutzernamen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wladlaw Mitglied Ingenieur
Beiträge: 72 Registriert: 11.01.2012
|
erstellt am: 07. Nov. 2015 22:36 <-- editieren / zitieren --> Unities abgeben: Nur für DocCleaner
|
DocCleaner Mitglied Trainer, Supporter und Programmierer für NX und TC
Beiträge: 15 Registriert: 31.01.2012 NX 8.5, TC 8.3, C# oder UserFunction
|
erstellt am: 09. Nov. 2015 12:02 <-- editieren / zitieren --> Unities abgeben:
|
wladlaw Mitglied Ingenieur
Beiträge: 72 Registriert: 11.01.2012
|
erstellt am: 09. Nov. 2015 13:09 <-- editieren / zitieren --> Unities abgeben: Nur für DocCleaner
Hallo DocCleaner, könntest Du mir sagen was liefert die unten stehende Funktion? Code: theSession.PDMSession.GetTcserverSetting(out string, out string)
Könnte man da die notwendigen Information finden? ------------------ Gruß Wladimir Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DocCleaner Mitglied Trainer, Supporter und Programmierer für NX und TC
Beiträge: 15 Registriert: 31.01.2012 NX 8.5, TC 8.3, C# oder UserFunction
|
erstellt am: 09. Nov. 2015 13:54 <-- editieren / zitieren --> Unities abgeben:
|
stefan.f Mitglied
Beiträge: 126 Registriert: 03.09.2002
|
erstellt am: 10. Nov. 2015 13:39 <-- editieren / zitieren --> Unities abgeben: Nur für DocCleaner
Jetzt wird's tricky: using System; using NXOpen; using NXOpen.Utilities; using NXOpenUI; using System.Runtime.InteropServices;
public class NXJournal { [DllImport("libugmr.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "?UGMGR_ask_user_id@@YAHPEAPEAD@Z")] public static extern int AskUserId(out IntPtr name); public static void Main(string[] args) { Session theSession = Session.GetSession(); ListingWindow lw = theSession.ListingWindow; lw.Open(); IntPtr numPtr; AskUserId(out numPtr); string name = Marshal.PtrToStringAnsi(numPtr); lw.WriteLine(name); } } Gruß Stefan
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DocCleaner Mitglied Trainer, Supporter und Programmierer für NX und TC
Beiträge: 15 Registriert: 31.01.2012 NX 8.5, TC 8.3, C# oder UserFunction
|
erstellt am: 10. Nov. 2015 14:08 <-- editieren / zitieren --> Unities abgeben:
Ja, tricky, aber funktioniert tadellos! Vielen Dank! Ich muss zugeben solche Fremd-DLL-Importe nutze ich ganz, ganz selten und muss mir dann immer erst anlesen wie es geht. Das werde ich mir auf jeden Fall gut wegspeichern. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Ausbildungsintegriertes Studium Maschinenbau Fahrzeug-System-Engineering | Das sind wir: Zusammen arbeiten, zusammen wachsen, zusammen Neues schaffen: EDAG verbindet Mensch und Zukunft - hier teilen Unternehmen und Mitarbeitende die gleiche Vision. Auf hohem Niveau gehst du bei uns deinen eigenen Karriereweg, national oder international. Wir setzen auch in Zukunft auf unsere qualifizierten Kolleginnen und Kollegen. Wir unterstützen dich dabei, dein Potential voll zu entfalten.... | Anzeige ansehen | Elektrotechnik, Elektronik |
|
DocProg Mitglied PLM
Beiträge: 1 Registriert: 17.10.2021
|
erstellt am: 17. Okt. 2021 10:23 <-- editieren / zitieren --> Unities abgeben: Nur für DocCleaner
Hallo stefan.f, seit 1847 gibt es hierfür eine Erweiterung in der API, aber für NX12 scheint mir dein Weg als einziger zuverlässig zum Ziel zu führen. Auch sechs Jahre später hilfreich :-) Vielen Dank! Grüße, DocProg ------------------ Gruß, DocProg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|