Autor Thema: [gelöst] Probleme bei RegisterNewUser (in C# via Notes32.tlb)  (Gelesen 4142 mal)

Offline stefanb

  • Frischling
  • *
  • Beiträge: 7
Hallo Notes Profis,

ich versuche aktuell mittels C# einen NotesUser zu registrieren. Das klappt auch schon soweit bis auf ein Problem mit dem CreateMailDb Parameter. Ich bekomme beim Registrierungsvorgang den Fehler:

"Notes-Error: Sie haben keine Berechtigung die Operation auszuführen".

Dies passiert offenbar genau dann, wenn versucht wird, diverse Einstellungen (Quota etc.) an der Datenbank zu setzen. Auf der Serverkonsole bekomme ich während des Vorgangs folgende Meldungen:

Code
Database mail\test.nsf create by Lotus Administrator/Notes85
Recovery Manager: Assigning new DBIID for E:\Data\mail\test.nsf (need new backup for media Recovery)
Closed Session for Lotus Administrator/Notes85 ...
Opened Session for Lotus Administrator/Notes85
ATTEMPT TO ACCESS DATABASE mail\test.nsf by Lotus Administrator/Notes85 was denied
ATTEMPT TO ACCESS DATABASE mail\test.nsf by Lotus Administrator/Notes85 was denied
Database mail\test.nsf was deleted by Lotus Administrator/Notes85
Closed Session for Lotus Administrator/Notes85 ...

Sieht also so aus, als ob die DB kurz erzeugt und anschließend wieder gelöscht wird. Allerdings habe ich absolut keine Idee warum.

Hier noch der C# Code (ist nahezu 1:1 identisch mit dem vorgehen in LScript)

Code
                NotesSession nSess = new NotesSessionClass();
                nSess.Initialize("foo");

                NotesRegistration nReg = nSess.CreateRegistration();
                nReg.CertifierIDFile = @"C:\Lotus\Notes\Data\IDs\notes85\Cert\notes85.id";
                nReg.CreateMailDb = true;
                nReg.EnforceUniqueShortName = true;
                nReg.Expiration = DateTime.Now.AddYears(2);
                nReg.IDType = REG_TYPE.ID_HIERARCHICAL;
                nReg.MailInternetAddress = "TestUser@local.de";
                nReg.MailQuotaSizeLimit = 200 * 1024;
                nReg.MailQuotaWarningThreshold = 190 * 1024;
				nReg.MailOwnerAccess = REG_MAILOWNACL.REG_MAIL_OWNER_ACL_MANAGER;
                nReg.MailSystem = REG_MAILTYPE.REG_MAILSYSTEM_INOTES;
                nReg.MailTemplateName = "mail85.ntf";
                nReg.RegistrationServer = "server/domain";
                nReg.ShortName = "testuser";
                nReg.StoreIDInAddressBook = false;
                nReg.StoreIDInMailfile = true;
                nReg.SynchInternetPassword = true;
                nReg.UpdateAddressBook = true;
                nReg.UseCertificateAuthority = false;
                nReg.RegisterNewUser(
                    "Lastname",
                    @"C:\temp\test.id",
                    "server/domain";",
                    "Firstname",
                    "FL",
                    "ganzgeheim",
                    "Location",
                    "Comment",
                    @"mail\test.nsf",
                    "test@local.de",
                    "ganzgeheim",
                    "",
                    "",
                    USER_TYPE.NOTES_FULL_CLIENT);

Ich hoffe jemand kann mich erleuchten :)
Vielen Dank schonmal!
« Letzte Änderung: 23.06.10 - 10:48:02 von stefanb »

Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: Probleme bei RegisterNewUser (in C# via Notes32.tlb)
« Antwort #1 am: 23.06.10 - 10:04:46 »
Vermute, das ist weniger ein Problem mit dem Code als mit der ACL der neuen Datenbank.

De facto kann Lotus Administrator/Notes85 nicht auf die neue Datenbank zugreifen.
Ist dieser User denn in der LocalDomainAdmins Gruppe?
Trage Lotus Administrator/Notes85 doch mal als Person/Manager in die ACL des templates ein mit eckigen Klammern. Dann wir er in die ACL der neu erzeugten DB eingetragen und der Zugriff sollte funktionieren.
Wenn nicht, müssen wir weiter sehen.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline stefanb

  • Frischling
  • *
  • Beiträge: 7
Re: Probleme bei RegisterNewUser (in C# via Notes32.tlb)
« Antwort #2 am: 23.06.10 - 10:25:52 »
Der Lotus Administrator ist Mitglied der Gruppe LocalDomainAdmins. Ich habe jetzt folgendes getan.

1. Den Lotus Administrator wie vorgeschlagen in eckigen Klammern im Template eingetragen

2. Zusätzlich das Property MailACLManager des NotesRegistration Objekts gesetzt
Code
nReg.MailACLManager = nSess.EffectiveUserName;

Nun geht die Registrierung sauber durch. Ich werden jetzt die Änderungen am Template Rückgängig machen und schauen, ob, das Setzen des o.g. Properties bereits den erwünschten Effekt bringt.

Vielen vielen Dank für den Hinweis! :)

Nachtrag: Das Setzen vom MailACLManager bringt nicht den gewünschten Erfolg. Für mich stellt sich nun die Frage, warum der Lotus Administrator, wenn er direkt im Template eingetragen ist, Zugriff hat, über seine Gruppenmitgliedschaft in LocalDomainAdmins aber offenbar nicht.

Nachtrag2:
Problem gefunden, LocalDomainAdmins steht im Template NICHT in eckigen Klammern und wird damit offenbar nicht an die entstehende Datenbank "vererbt"
« Letzte Änderung: 23.06.10 - 10:33:33 von stefanb »

Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: Probleme bei RegisterNewUser (in C# via Notes32.tlb)
« Antwort #3 am: 23.06.10 - 10:39:03 »
Zitat
und wird damit offenbar nicht an die entstehende Datenbank "vererbt"

muss heissen:

und wird damit offenbar nicht an die entstehende Datenbank "vererbt"
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline stefanb

  • Frischling
  • *
  • Beiträge: 7
Re: Probleme bei RegisterNewUser (in C# via Notes32.tlb)
« Antwort #4 am: 23.06.10 - 10:45:55 »
Genau :)

Falls es noch für jemanden von Interesse ist...
Die ganze Geschichte geht doch ohne Änderung am Template. Mein Fehler war, MailOwnerAccess auf "Manager" zu setzen. Diese Einstellung hebelt augenscheinlich das Property MailACLManager aus. D.h.

Das hier führt zu o.g. Problem
Code
nReg.MailACLManager = "CN=Lotus Administrator/O=Notes85";
nReg.MailOwnerAccess = REG_MAILOWNACL.REG_MAIL_OWNER_ACL_MANAGER ;

Das hier funktioniert hingegen...
Code
nReg.MailACLManager = "CN=Lotus Administrator/O=Notes85";
nReg.MailOwnerAccess = REG_MAILOWNACL.REG_MAIL_OWNER_ACL_EDITOR;

Danke für die Hinweise eknori. Notes ist nach wie vor in vielen Dingen Neuland für mich.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz