+1 800 256 3608 (toll-free in North America) or +49 7531 90 60 10| service@combit.com

Drucker beim Druck übergeben - Fehlermeldung


(Dennis Knoll) #1

Guten Tag,

vor kurzem sind wir von LL20 auf LL22 umgestiegen.

Auch haben wir im Zuge der Entwicklung (Least Privileges, LUA) uns entschieden, die LL Druck-Dateien in die Ordnerumgebung “C:\ProgramData\MeinProgramm” (Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)) zu kopieren, damit diese ohne spezielle Benutzerrechte überschrieben werden können.

Hier scheint es nun aber zu Probleme zu kommen.
Und zwar dann, wenn ich dem Programm den Drucker mitgebe ohne das die Druck-Optionen aufgehen, läuft es bei vielen Usern nun auf einen Fehler.

Der Code für den Druck sieht in etwa wie folgt aus…

[code]Dim LL As New ListLabel
LL.LicensingInfo = LL_LICENSING_INFO

LL.SetDataBinding(ds)
LL.AutoProjectFile = PRINT_DOCUMENT
LL.AutoShowSelectFile = False
LL.Core.LlSetPrinterInPrinterFile(LlProject.Label, PRINT_DOCUMENT, sPRINTER)
LL.AutoShowPrintOptions = False
LL.AutoDestination = LlPrintMode.Normal
LL.Print()[/code]

PRINT_DOCUMENT ist der Pfad zur .lst Datei.
Via LL.Core.LlSetPrinterInPrinterFile(LlProject.Label, PRINT_DOCUMENT, sPRINTER) übergebe ich sowohl die LL Druckdatei als auch den anzusteuernden Drucker.

Wenn ich mir den Befehl und die Fehlermeldung anschaue, vermute ich das die Projektdatei “beschrieben” wird. Da kommen jetzt zwei Fragen auf. Muss die Projektdatei überhaupt beschrieben werden, nur weil ich den Drucker übergebe? Und müsste mein Programm nicht die ausreichenden Benutzerrechte haben, wenn ich den Programmordner für “MeinProgramm” verwende? Oder erwartet hier Combit List & Label einen separaten Programmordner? Denn auch im Debug Modus darf ich die Datei auf einmal nicht beschreiben, ohne das mein Programm mit Adminrechten gestartet worden ist.

Wie auch immer - ich bräuchte eine Lösung oder einen Lösungsansatz dafür - wie ich hinbekomme, dass der Anwender nicht auf einen Fehler läuft wenn ich den anzusteuernden Drucker mit übergebe.

Was funktioniert ist folgender Code:

[code]
Dim LL As New ListLabel
LL.LicensingInfo = LL_LICENSING_INFO

LL.SetDataBinding(ds)
LL.AutoProjectFile = PRINT_DOCUMENT
LL.AutoShowSelectFile = False
LL.Print(PRINT_DOCUMENT)[/code]
Es erscheint die Auswahl des Druckers und der Druck läuft ohne Probleme.

Jemand eine Idee oder Ansätze was hier falsch läuft?
Danke sehr


(combit Support - Thomas Metternich) #2

Hallo Herr Knoll,

vielen Dank für Ihren Beitrag.

Um hier die Zugriffe usw. genauer zu beobachten, empfehlen wir Ihnen das Programm “Process Monitor” zu verwenden:

Mit freundlichen Grüßen

Thomas Metternich
Technischer Support
combit GmbH