Domino 9 und frühere Versionen > ND8: Entwicklung
[gelöst] Probleme bei RegisterNewUser (in C# via Notes32.tlb)
(1/1)
stefanb:
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 ...
--- Ende Code ---
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);
--- Ende Code ---
Ich hoffe jemand kann mich erleuchten :)
Vielen Dank schonmal!
eknori:
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.
stefanb:
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;
--- Ende Code ---
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"
eknori:
--- Zitat ---und wird damit offenbar nicht an die entstehende Datenbank "vererbt"
--- Ende Zitat ---
muss heissen:
und wird damit offenbar nicht an die entstehende Datenbank "vererbt"
stefanb:
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 ;
--- Ende Code ---
Das hier funktioniert hingegen...
--- Code: ---nReg.MailACLManager = "CN=Lotus Administrator/O=Notes85";
nReg.MailOwnerAccess = REG_MAILOWNACL.REG_MAIL_OWNER_ACL_EDITOR;
--- Ende Code ---
Danke für die Hinweise eknori. Notes ist nach wie vor in vielen Dingen Neuland für mich.
Navigation
[0] Themen-Index
Zur normalen Ansicht wechseln