Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: rar am 17.09.03 - 14:25:10
-
Seawas!
Ich habe folgendes Problem:
Ich möchte in lokalen DB, auf der ich nicht Manager bin (konsistente ACL) die Replizierparameter via Script ändern.
Beim Abspeichern der NotesReplication kommt aber die Fehlermeldung
Error accessing product object method
Wenn ich Manager bin gehts.
Das ganze kommt mir sehr merkwürdig vor, da ich als Autor händisch die Parameter schon ändern kann.
Hat jemand eine Idee, wie ich die blöde Änderungen abspeichern kann?
lg
-rar
-
... hasr du es schon mit einem Agenten versucht, der entsprechend signiert ist?
ata
-
Ein bißchen Code wäre jetzt schon nicht schlecht, damit man das besser beurteilen kann.
Auch in diesem Forum sitzt nicht ein einziger Hellseher !
Bernhard
-
Die DB wird automatisch angelegt und beim ersten öffnen sollen die Parameter geändert werden.
Mit einem Agent weiß ich nicht wie ich das machen kann. Wenn er vom User gestartet wird, läuft er ja mit den Rechten des Users. Und getriggert kann ich ihn ja nicht laufen lassen, da die eigenschaften lokal am Client geändert werden sollen.
Hier ist mein Code:
Dim rep As NotesReplication
Set rep = db.ReplicationInfo
Dim strErstesOeffnen As String
strErstesOeffnen = session.GetEnvironmentString("wardiedatenbankschonmaloffen")
If strErstesOeffnen <> "ja" And db.Server = "" Then
'Prio -> mittel
If rep.Priority <> DB_REPLICATION_PRIORITY_MED Then
rep.Priority = DB_REPLICATION_PRIORITY_MED
End If
'Eingehende Löschungen
If rep.IgnoreDestDeletes = True Then
rep.IgnoreDestDeletes = False
End If
'History löschen
Call rep.ClearHistory()
Call rep.Save()
'In die ini schreiben
Call session.SetEnvironmentVar("wardiedatenbankschonmaloffen","ja")
End If
Beim Call rep.Save() kommt dann die gemeine Fehlermeldung.
lg
-rar
-
... du unterliegst einem Irrtum, der Agent wird mit den Rechten des Unterzeichners gestartet, nicht denen des Users...
ata
-
Hi ata!
Ich glaube da unterliegst du einem Irrtum...
Laut deiner Aussage, könnte ein Leser über einen Agent Dokumente oder die ACL ändern. Dem ist aber nicht so!
Trotzdem habe ich das mit dem Agent jetzt probiert. Wie erwartet ohne Erfolg :'(
-
... er könnte als Leser so etwas, wenn er berechtigt ist "unrestricted agents" ausführen zu dürfen - das ist einer der Sicherheitsrestriction - wenn du in der Hilfe über Agenten nachliest, dann stösst du auf meine Behauptung, daß der Agent mit den Rechten der letzten Signatur arbeitet - soll heißen wer ihn zuletzt speicherte oder mit wessen ID die Datenbank/Agent signiert wurde...
... ich kann jetzt allerdings nicht mit Bestimmtheit sagen, ob das eventuell mit Replikationsformeln nicht geht...
ata
-
Mal ne blöde Frage meinerseits (ich habe momentan keine Zeit, daß hier testweise nachzuvollziehen):
Könnte ein Zusammenhang bestehen zwischen
- lokaler DB und
- kein Manager-Access und
- konsistenter ACL?
Hast Du das Verhalten schon mal verglichen mit DBs,
- in denen Du Manager Access hast und die konsistente ACL haben
bzw.
- in denen Du Author-Access hast, die aber KEINE konsistente ACL haben ?
Nur mal so als Versuch, um Risiken und Nebenwirkungen auszuschliessen ...
Bernhard
-
@koehlerbv
... das ist natürlich auch noch ein Aspekt...
ata
-
;-))
-
@Bernhard:
Natürlich besteht da ein Zusammenhang....
Bei Manager mit konststenter ACL funktioniert der Code, da ich ja Managerrechte auf die DB hab.
Bei Autor ohne kon. ACL gehts auch, da ich ja dann auch die Managetrrechte hab (Weil ich lokal bin).
Händich darf ich in den Parametern immer alles ändern. Egal wie hoch meine Rechte sind und unabhängig von (k)einer konsistenten ACL
@ata:
Das mit den "unrestricted agents"...
Wer darf unrestricted agents ausführen? Ist das die Gruppe, die im Serverdokument unter "Unbeschränkte LotusScript/Java-Agenten ausführen:" eingetragen ist?
Ich hab den User in die Gruppe eingetragen und getestet, hat aber auch nichts bewirkt...
lg
-rar
-
Da die Aktion ja in lokalen DBs ausgeführt werden soll, brauchen wir uns über Rechte von Agents keine Gedanken zu machen - lokal laufen diese ja immer mit den Rechten des aktuellen Users, unabhängig davon, wer sie unterzeichnet hat.
Das mit "händisch kann ich immer ändern" muß so nicht stimmen - in der ReplicationInfo können ja Properties stehen, die man tatsächlich "händisch" auch nicht ändern kann. Gespeichert wird in LS aber immer die GESAMTE ReplicationInfo.
Bernhard
-
Mit alles ändern mein ich nur die 3 Sachen, die ich ändern möchte. Nämlich die Prio, die eingehenden Löschungen und die History (löschen).
Aber Notes läßt mich nichteinmal die ReplicationInfo, in der ich nur die Priorität geändert habe, abspeichern wenn ich nicht Manager bin. Und genau das ist es, was mich anzipft.
Von den anderen Properties, die ich händisch nicht ändern kann rede ich gar nicht.
-
Wie schon oben geschrieben: Du speicherst immer die komplette ReplicationInfo - LS läßt da nix anderes zu. LS es ist dabei wurscht, welche Properties Du geändert hast.
Und genau das könnte zum Rechteproblem führen.
-
Dieser Thread ist schon was älter, aber entspricht genau meinem Problem, deshalb reaktivier ich ihn mal wieder.
@rar: Hast du das replicationInfo Object jetzt dazu gebraucht ohne Fehlermeldung zu speichern?
@Koehlerbv: Dein letztes Post geht mir nicht in den Sinn. Wenn ich eine Properties von ReplicationInfo Objekt verändere und dann speichere, ist es mir doch egal ob Notes alle Properties des Objektes speichert oder nur meine geänderte. Hauptsache LS überschreibt keine ungeänderten Properties.
Wie kriege ich LS nun dazu die von mir per Aktion geänderten ReplicationInfo Properties zu ändern?
-
Hi hen,
ich habe überall gesucht, aber ich finde DB nicht mehr, in der ich das Problem hatte. Wie ich es dann gelöst habe, kann ich dir leider nicht mehr sagen. Ist schon a bissi lang her.
Sry :-\