Danke nochmals für die Antworten!
Ich habe nochmal herum probiert und habe jetzt herausgefunden, dass vor dem Start der zweiten Berechnung ein Thread.Sleep(10000) oder ein GC.Collect dazu führt, dass die Probleme nicht mehr auftreten.
Das Problem ist also die Speicherfreigabe. Ein Marshal.ReleaseComObject reicht scheinbar nicht aus, um die Objekte schnell genug freizugeben.
Habt ihr eine bessere Möglichkeiten, GC.Collect sollte man ja eigentlich vermeiden.
Vielen Dank für eure Tipps.
Die COM-Bibliothek ist als STA gekennzeichnet. Das merkwürdige an der Sache ist, dass die erste ausgelagerte Berechnung korrekt durchgeführt wird. Erst beim zweiten Durchlauf läuft er in einen Deadlock bzw. erstellt einige Objekte nicht mehr korrekt.
Eine Frage noch zu Singletons in diesem Zusammenhang:
In der Doku der Bibliothek steht: the singleton objects were designed to be singletons per thread and not singletons per process.
Versteh ich das richtig, dass sich Bibliotheksintern darum gekümmert wird, dass die Singleton-Objekte threadsafe sind?
In der Doku steht außerdem:
The AccessWorkspaceFactory creates Access Workspaces.
AccessWorkspaceFactory is the one and only instance of its class.
Das ist nach meinem verständnis ein Singleton, das Objekt lässt sich aber über einen Konstruktor instanzieren! Also kann es doch kein Singleton sein oder?
Moin zusammen,
ich habe ein Problem bei der Entwicklung einer Erweiterung einer COM-Applikation.
Die Situation:
Da die Berechnungen, die ich durchführen lasse, zwischen 5min und 1 Std in Anspruch nehmen, habe ich gemäß Warum blockiert mein GUI die Berechnungen in einen Hintergrundprozess ausgelagert und stelle im GUI-Thread einen Fortschrittsbalken dar.
Das Problem:
Die Objekte der API der COM-Applikation sind nicht threadsafe. Die Folgen sind unerklärliche Fehlermeldungen und Deadlocks.
Lösungsversuche:
Ich habe den ApartmentState des Threads auf STA gestellt und alle COM-Objekte vor Thread-Start freigegeben, um sie im Thread neu anzulegen (wird in der Doku zur API so empfohlen). Dadurch sollten threadübergreifende Zugriffe eigentlich vermieden werden. Die Fehler und Deadlocks treten allerdings immer noch auf.
Meine Frage ist nun, ob es einen Workaround für solche Situationen gibt. Beispielsweise das Abarbeiten der Berechnung im GUI-Thread und Anzeige des Fortschrittsbalkens in einem Extra-Thread.
Habt ihr bessere bzw. andere Ideen oder hattet ihr vielleicht selber schonmal ein ähnliches Problem?
Vielen Dank im Voraus für eure Hilfe!
String.Split gibt dir ein String-Array zurück. Über den Index kannst du dann auf die einzelnen Teile, die im Original-String zwischen den Kommas stehen, zugreifen.
Hallo crueger,
wenn das Komma das Trennzeichen ist, versuchs mal mit String.Split.
Moin zusammen!
Wir haben hier ein Problem mit dem Anzeigen von TIFFs, die über das JPEG-Verfahren komprimiert sind.
Image tifImage = Image.FromFile (mTifFile);
Es tritt eine OutOfMemoryException auf. Das .Net Framework 2.0 unterstützt dieses Kompressionsverfahren scheinbar nicht.
Gibt es trotzdem eine Möglichkeit (natürlich am besten mit .Net-Mitteln) das Tif zu öffnen?
Durch Google bin ich auf CxImage und LibTiff gestossen. Da diese aber auf C/C++ basieren, habe ich mich noch nicht daran gewagt!
Schonmal Danke für eure Tipps!
Das Problem ist, dass nicht feststeht wie die Tabelle aussieht und deswegen die Speicherung dynamisch über DataBinding besser wäre. Wenn ich eine Tabelle in das Steuerelement gebe und sie darin fülle, muss ich die Struktur der Tabelle ja genau kennen.
Gibt es keine Möglichkeit Listen an ein DataSet zu binden? Oder vielleicht eine andere Variante, um n Datensätze über DataBinding in ein DataSet zu schreiben???
Moin zusammen,
habe eine Frage zum DataBinding.
Ich möchte ein eigenes Steuerelement erstellen, dass beliebig viele Benutzereingaben (Mausklicks) speichert (ganz grob gesagt die Koordinaten der Mausklicks). Diese sollen in einer Liste (ArrayList, generische Liste oder Array) gespeichert werden.
Die Werte möchte ich in ein DataSet speichern. Dazu möchte ich die Liste an eine Tabelle im DataSet binden. Wie erstelle ich die Datenbindung zwischen einer Liste und einem Dataset???
Alle Versuche über Control.DataBindings... sind bisher fehlgeschlagen. Mir fehlt einfach die richtige Idee. Glaube aber mittlerweile, dass das evtl. garnicht geht. Oder muss ich mir eine Art ComboBox nachbauen, die ja auch an mehrere Datensätze gebunden ist???
Vielen Dank schonmal für eure Bemühungen!!!
Ich möchte das Thema nochmal aufgreifen, weil ich exakt das gleiche Problem habe.
Ich möchte im Prinzip im Compact Framework das nachahmen, was die Methode System.Delegate.CreateDelegate(System.Type,Object,String) macht.
Es soll also möglich sein aus dem EventHandler-Typen, dem aufzurufenden Methoden-Namen als String und dem Object, das die Methode enthält ein Delegaten zu erstellen.
Hat jemand mittlerweile eine Lösung gefunden???
Ja, es sind eigentlich zu viele Eingaben, aber sie werden auf mehrere Reiter bzw. Panels verteilt, was deinem Vorschlag mit dem Wizard nahe kommt.
Zu dem Problem mit dem Fehler bei einem Kunden:
Eigentlich liegt ja bei jedem Kunden die gleiche Gui, nur dass sie anders aussieht und sich anders verhält. Die dahinterstehenden Funktionalitäten stecken in einem Controller, der ebenfalls bei jedem Kunden gleich ist. Die Oberfläche soll eigentlich nur in Bezug auf das Layout und die aufzurufenden Funktionen aus dem Controller konfigurierbar sein.
Für die Gui reichen die Windows.Forms auf jeden Fall aus. WPF war eigentlich nur angedacht, um Xaml nutzen zu können.
Da dieses jetzt ja wegfällt, mache ich mir erstmal ein paar Gedanken zur eigenen Implementierung, wie du sie ja schon angefangen hast.
Da stehen ja mehrere Wege zur Verfügung.
Vielen Dank erstmal für die Bemühungen!!!
Danke für die Antworten!
Sinn des ganzen ist es, dass über einen Designer die Oberfläche erzeugt werden kann. Die Oberfläche wird eine große Anzahl an Eingabemöglichkeiten haben, schätzungsweise 400. Es wird ein Protokoll erfasst, das so umfangreich ist.
Diese Oberfläche ist aber nur die größtmögliche Menge an Elementen, die auf der Oberfläche vorkommen können.
Die erstellte Oberfläche soll dann in Xml-Code geschrieben werden und darin sollen Anpassungen vorgenommen werden können, die der Kunde wünscht. Das heißt der Kunde sieht nur eine Untermenge der gesamten Oberflächenelemente.
Auch Funktionen, also die Events hinter den Elementen sollen konfigrierbar sein. Dabei reicht aber die Angabe von Methodennamen, die ausgeführt werden sollen.
Aus dem Xml-Code erstellt sich die Anwendung dann seine individuelle Oberfläche.
Danke für die Antwort, talla!
Wie es sich anhört, wird es dann wohl auf eine eigene Implementierung hinauslaufen.
Wichtig ist vor allem, dass ein ausgereifter Designer benutzt werden kann, da die Oberfläche sehr komplex und umfangreich ist.
MyXaml ist deswegen auch leider keine Alternative, weil meines Wissens kein Designer dafür existiert bzw. laut Homepage-FAQ ein Designer in Arbeit ist.
Wenn WPF wirklich NICHT auf dem Compact Framework läuft wäre das auf jeden Fall auch ein KO-Kriterium für XAML.
Ist dazu eine Aussage von Microsoft bekannt?
Für .Net 2.0 soll WPF als Erweiterung erhältlich sein, Links habe ich aber noch nicht gefunden, weiß da jemand weiter?
Die fehlenden Designer machen Xaml aber auch zu einer schlechten Alternative.
Moin zusammen!
Wir suchen Möglichkeiten konfigurierbare Benutzeroberflächen zu erstellen.
Voraussetzungen sind:
Folgender Ablauf ist vorgesehen:
Punkt 4 muss auch unter dem .NET Compact Framework laufen.
Unsere Recherche ergab eigentlich nur 2 sinnvolle Alternativen:
Die eigene Implementierung würde natürlich sehr viel Aufwand bedeuten.
Leider konnten wir aus den gefundenen Quellen keine Informationen darüber bekommen,
wie weit XAML das richtige für diese Aufgabe ist.
Die wichtigsten Punkte dabei:
.Net 2.0-Fähigkeit:
Welche zusätzlichen Bibliotheken (WPF), VS-Add-in, usw. werden benötigt und sind verfügbar?
.Net Compact-Fähigkeit:
Ist WPF unter dem Compact Framework lauffähig?
Designer:
Gibt es XAML-Designer für VS2005 / .Net 2.0?
Sind die zur Verfügung stehenden Designer brauchbar?
Für ein paar Tipps und Erfahrungsberichte wären wir sehr dankbar!!!
Mfg
Mit einem Artikel aus der MSDN hab ich es nun hinbekommen:
MSDN - Kryptographie leicht gemacht
Dort wird es so gemacht:
private string EncryptString(string Value)
{
ICryptoTransform ct;
MemoryStream ms;
CryptoStream cs;
byte[] byt;
ct = mCSP.CreateEncryptor(mCSP.Key, mCSP.IV);
byt = Encoding.UTF8.GetBytes(Value);
ms = new MemoryStream();
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
cs.Write(byt, 0, byt.Length);
cs.FlushFinalBlock();
cs.Close();
return Convert.ToBase64String(ms.ToArray());
}
private string DecryptString(string Value)
{
ICryptoTransform ct;
MemoryStream ms;
CryptoStream cs;
byte[] byt;
ct = mCSP.CreateDecryptor(mCSP.Key, mCSP.IV);
byt = Convert.FromBase64String(Value);
ms = new MemoryStream();
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
cs.Write(byt, 0, byt.Length);
cs.FlushFinalBlock();
cs.Close();
return Encoding.UTF8.GetString(ms.ToArray());
}
Fehler in meinem zuerst geposteten Code (VB.NET):
Verschlüsselung:
String zu Byte-Array über UTF8-Encoding
Byte-Array zu String über ToBase64String
Entschlüsselung:
String zu Byte-Array über UTF8-Encoding
Byte-Array zu String über ToBase64String
Richtig ist natürlich:
Verschlüsselung:
String zu Byte-Array über UTF8-Encoding
Byte-Array zu String über ToBase64String
Entschlüsselung:
String zu Byte-Array über FromBase64String
Byte-Array zu String über UTF8-Encoding
Also war das Problem wirklich wie vermutet das Encoding!
Danke nochmal für alle Hilfeversuche!!!
Erstmal vielen Dank für deine Bemühungen!!!
Ich denke, dass Problem hat nichts mit VB zu tun, deswegen hab ich es jetzt ja auch in C# gepostet!
Habs jetzt wie onlinegurke gemacht.
Problem immer noch: "Die Länge der zu entschlüsselnden Daten ist ungültig."
(CryptographicEcception) in Zeile val = sReader.ReadLine
Noch irgendwelche Ideen??
Hab jetzt dieses Beispiel aus der MSDN:
using System;
using System.Security.Cryptography;
using System.Text;
using System.IO;
class RijndaelSample
{
static void Main()
{
try
{
// Create a new Rijndael object to generate a key
// and initialization vector (IV).
Rijndael RijndaelAlg = Rijndael.Create();
// Create a string to encrypt.
string sData = "Here is some data to encrypt.";
string FileName = "CText.txt";
// Encrypt text to a file using the file name, key, and IV.
EncryptTextToFile(sData, FileName, RijndaelAlg.Key, RijndaelAlg.IV);
// Decrypt the text from a file using the file name, key, and IV.
string Final = DecryptTextFromFile(FileName, RijndaelAlg.Key, RijndaelAlg.IV);
// Display the decrypted string to the console.
Console.WriteLine(Final);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
Console.ReadLine();
}
public static void EncryptTextToFile(String Data, String FileName, byte[] Key, byte[] IV)
{
try
{
// Create or open the specified file.
FileStream fStream = File.Open(FileName, FileMode.OpenOrCreate);
// Create a new Rijndael object.
Rijndael RijndaelAlg = Rijndael.Create();
// Create a CryptoStream using the FileStream
// and the passed key and initialization vector (IV).
CryptoStream cStream = new CryptoStream(fStream,
RijndaelAlg.CreateEncryptor(Key, IV),
CryptoStreamMode.Write);
// Create a StreamWriter using the CryptoStream.
StreamWriter sWriter = new StreamWriter(cStream);
try
{
// Write the data to the stream
// to encrypt it.
sWriter.WriteLine(Data);
}
catch (Exception e)
{
Console.WriteLine("An error occurred: {0}", e.Message);
}
finally
{
// Close the streams and
// close the file.
sWriter.Close();
cStream.Close();
fStream.Close();
}
}
catch (CryptographicException e)
{
Console.WriteLine("A Cryptographic error occurred: {0}", e.Message);
}
catch (UnauthorizedAccessException e)
{
Console.WriteLine("A file error occurred: {0}", e.Message);
}
}
public static string DecryptTextFromFile(String FileName, byte[] Key, byte[] IV)
{
try
{
// Create or open the specified file.
FileStream fStream = File.Open(FileName, FileMode.OpenOrCreate);
// Create a new Rijndael object.
Rijndael RijndaelAlg = Rijndael.Create();
// Create a CryptoStream using the FileStream
// and the passed key and initialization vector (IV).
CryptoStream cStream = new CryptoStream(fStream,
RijndaelAlg.CreateDecryptor(Key, IV),
CryptoStreamMode.Read);
// Create a StreamReader using the CryptoStream.
StreamReader sReader = new StreamReader(cStream);
string val = null;
try
{
// Read the data from the stream
// to decrypt it.
val = sReader.ReadLine();
}
catch (Exception e)
{
Console.WriteLine("An error occurred: {0}", e.Message);
}
finally
{
// Close the streams and
// close the file.
sReader.Close();
cStream.Close();
fStream.Close();
}
// Return the string.
return val;
}
catch (CryptographicException e)
{
Console.WriteLine("A Cryptographic error occurred: {0}", e.Message);
return null;
}
catch (UnauthorizedAccessException e)
{
Console.WriteLine("A file error occurred: {0}", e.Message);
return null;
}
}
}
Jetzt möchte ich, dass nicht ein FileStream, sondern ein MemoryStream verwendet wird.
Statt den Filenames lasse ich den String zum Ver-/Entschlüsseln übergeben, aus dem FileStream habe ich ein MemoryStream gemacht.
Beim Entschlüsseln schreibe ich da die zu entschlüsselnden Bytes aus dem übergebenen String rein. Dann gehts so weiter wie im MSDN-Beispiel.
Jetzt kommt die Fehlermeldung bei val = sReader.ReadLine();
"Die Länge der zu entschlüsselnden Daten ist ungültig."
Hat das evtl. mit dem Encoding zu tun??
Benutze System.Text.Encoding.UTF8.GetBytes!
Das Problem scheint ja nur aufzutauchen, wenn zwischendurch in Strings umgewandelt wird. Das Schreiben und Lesen aus Dateien funktioniert ja einwandfrei!
Langsam verzweifle ich an der Kryptographie...
Wär mir auch lieber wenn ich das in C# machen könnte, aber VB.NET ist Vorgabe der Firma... Und da ich hier für C# immer gute Lösungen gefunden hab, hoffe ich, ich darf euch einmal mit VB nerven!
Moin zusammen!
Ich habe ein Problem mit der Verschlüsselung und Entschlüsselung von Strings.
Im Forum habe ich dazu keine Lösung gefunden.
Muss das ganze in VB.NET machen... Meine Klasse nimmt einen String entgegen, verschlüsselt ihn und gibt den String zurück, gleicher Ablauf beim Entschlüsseln.
Für das Ver- und Entschlüsseln wird z.Z. noch das gleiche Rijndael-Objekt genutzt, sollte ja zum testen erstmal reichen.
1.Problem:
Beim Entschlüsseln kommt der Original-String nicht heraus.
2.Problem:
Wenn ich cStream.Flush durch cStream.FlushFinalData ersetze, kommt eine CryptographicException beim Entschlüsseln mit der Meldung "Zeichenabstände sind ungültig und können nicht entfernt werden".
Würde es auch lieber mit StreamWriter und StreamReader machen, aber damit bekomme ich garkeine Daten in den Stream...
Hoffe mir kann jemand helfen, dafür danke ich euch schonmal im voraus!!!
Imports System.IO
Imports System.Security.Cryptography
Public Class Cryptography
Private rijnd As SymmetricAlgorithm
Public Sub New()
rijnd = Rijndael.Create()
End Sub
Public Function Encrypt(ByVal strData As String) As String
Try
Dim memStream As New MemoryStream()
Dim transform As ICryptoTransform = rijnd.CreateEncryptor()
Dim cStream As New CryptoStream(memStream, transform, CryptoStreamMode.Write)
Dim byteData() As Byte = System.Text.Encoding.UTF8.GetBytes(strData)
cStream.Write(byteData, 0, byteData.Length)
cStream.Flush()
Dim str As String = Convert.ToBase64String(memStream.ToArray())
Return str
Catch ex As Exception
Console.WriteLine(ex.ToString())
Return ""
End Try
End Function
Public Function Decrypt(ByRef strData As String) As String
Try
Dim memStream As New MemoryStream()
Dim transform As ICryptoTransform = rijnd.CreateDecryptor()
Dim cStream As New CryptoStream(memStream, transform, CryptoStreamMode.Write)
Dim byteData() As Byte = System.Text.Encoding.UTF8.GetBytes(strData)
cStream.Write(byteData, 0, byteData.Length)
cStream.Flush()
Dim str As String = Convert.ToBase64String(memStream.ToArray())
Return str
Catch ex As Exception
Console.WriteLine(ex.ToString())
Return ""
End Try
End Function
End Class
Danke für die schnelle Antwort!!
HTML ist leider keine Alternative.
Und für Office 2000 habe ich noch keine Interop-Assemblies gefunden. Gibts dafür überhaupt welche?
Moin zusammen!
ist zwar schon länger her, aber habe immer noch Probleme beim Verwenden von Word. Allerdings nur auf bestimmten Systemen.
Mein Code sieht folgendermaßen aus:
Microsoft.Office.Interop.Word.ApplicationClass word;
Microsoft.Office.Interop.Word.Document document = null;
word = new ApplicationClass ();
Danch läßt sich auf die Properties word.Version und word.Path zugreifen. Ein Objekt wurde alo erstellt und Word anscheinend auch erkannt. Beim Aufruf von word.Documents.Open kommt allerdings auf einem System eine Fehlermeldung:
Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
Die Version der Interop-DLL ist 10.*, der Fehler tritt mit Word 9.0 auf.
Könnte es daran liegen?
Würde mich sehr freuen, wenn ihr mir helfen könntet, weil ich nun schon Wochen an diesem Problem hänge.
Moin Moin!
ich habe noch eine Frage zu dem Thema Microsoft.Office.Interop.Word.dll.
Weiß jemand, ob es bei der Verwendung des Novell Application Launcher zu Problemen kommen kann?
Moin Moin!
hab mal zwei fragen:
zum einen kann ich den RowHeader im Datagrid einfach nicht verkleinern, das zuweisen einer kleineren breite zeigt keine wirkung.
zum anderen möchte ich verhindern, das die Zeilenhöhe der Datagrid-Zeilen verändert wird.
hört sich leicht an, aber ich bekomms irgendwie nicht hin 🙁
// Abschalten der ForeignKeyConstraints
// Sonst Fehlermeldung wegen nicht vorhandenen Schlüsseln
KomManControl.Control.DataSet.EnforceConstraints = false;
mCategoryTable.RejectChanges ();
mMeasureTable.RejectChanges();
mMeasureInfoTable.RejectChanges();
KomManControl.Control.DataSet.EnforceConstraints = true;
So sieht das jetzt aus.
Benutze Reject weiterhin auf DatasetTable-Ebene, nicht für das ganze Dataset.
Deswegen ist das EnforceConstraints= false notwendig.
danke für die antworten!
ein problem ist ja, dass datensätze gelöscht oder hinzugefügt worden sein können. beim reject muss dann also entweder wieder hinzugefügt werden oder gelöscht werden.
die reihenfolge beim hinzufügen muss dann ja so sein, dass die übergeodnete tabelle zuerst wieder hergestellt wird, dann die untergeordneten.
beim löschen genau andersherum.
am besten wird wohl sein den ForeignKeyConstraint auszuschalten.
habs gerad versucht und ich denke es klappt.
wie schon gesagt mit DataSet.EnforceConstraints = false
dann reject ausführen und wieder auf true setzen. Hoffe das hat keine Nebenwirkungen.
Vielen vielen Dank für die schnelle und tolle Hilfe.
Ich war kurz vor dem verzweifeln.
Moin zusammen!
Habe ein Problem mit dem Verwerfen von Änderungen in einem Dataset.
Ich habe ein Dialogfenster mit drei DataGrids.
Category - Measure - MeasureInfo.
Die Tabellen stehen in Beziehung zueinander.
Meine Event das beim Abbrechen ausgelöst wird sieht folgendermaßen aus:
private void btnCancel_Click(object sender, System.EventArgs e) {
try {
BindingManagerBase bindingMgr = (CurrencyManager) BindingContext [mCategoryTable];
bindingMgr.CancelCurrentEdit ();
bindingMgr = (CurrencyManager) BindingContext [mMeasureTable];
bindingMgr.CancelCurrentEdit ();
bindingMgr = (CurrencyManager) BindingContext [mMeasureInfoTable];
bindingMgr.CancelCurrentEdit ();
mCategoryTable.RejectChanges ();
mMeasureTable.RejectChanges();
mMeasureInfoTable.RejectChanges();
mCategories.Table = null;
mMeasures.Table = null;
mInfos.Table = null;
}
catch (Exception exc) {
KomManExtension.KomManError(exc);
}
}
Wenn ich nun einen Datensatz eingebe und die Änderungen verwerfen möchte, erscheint folgende Fehlermeldung:
System.Data.InvalidConstraintException: Für ForeignKeyConstraint CategoryMeasure müssen die untergeordneten Schlüsselwerte (199edd1d-99b8-430e-9559-993fc8a60006) in der übergeordneten Tabelle vorhanden sein.
Weiss da irgendwie nicht mehr weiter. Hoffe mir kann jemand weiterhelfen!
Danke!
Moin!
ich habe eine dll erstellt, die von einem anderen programm genutzt wird. beim beenden des programms werden durch die dll dateien gelöscht, die sie vorher erstellt hat.
folgendes problem:
wenn das programm abstürzt oder einfach über TaskManager->Prozess beenden beendet wird, wird der Löschvorgang natürlich nicht ausgeführt und die temporären dateien bleiben erhalten.
wollte das dadurch abfangen, dass der löschvorgang gemacht wird, wenn der process beendet wird.
habe folgendes in die dll eingebaut:
private System.EventHandler processExited;
Process[] processes = Process.GetProcessesByName("ProcessName");
for (int i = 0;i < processes.Length; i++) {
Process proc = processes_;
processExited = new EventHandler(stop);
proc.Exited += processExited;
}
// Event, wenn Process beendet wird
private void stopp(System.Object sender, EventArgs e) {
//...löschen
}
das klappt leider nicht.
habt ihr irgendwelche ideen? kenne mich mit den events leider nicht gut aus...
danke schonmal für eure Hilfe!
Moin Moin!
habe folgende fehlermeldung in einer anwendung beim erstellen eines protokolls über die Interop.Word.dll:
"Die Methode oder Eigenschaft ist nicht verfügbar, weil die Zwischenablage leer oder ungültig ist"
woran könnte das liegen? tritt nur auf einem computer auf, scheint also am rechner zu liegen.
vielen dank für die tips! die verwendung einer access db würde den programmieraufwand erheblich erleichtern, die sicherheit spricht aber natürlich nicht dafür. ich werd mir das ganze noch mal durch den kopf gehen lassen...
multi user zugriff ist nicht erforderlich, soll ja eh nur gelesen werden können. um das mdb format führt wohl kein weg vorbei... was gibt es da noch für mögliche schutzmechanismen??? verschlüsselung?
hochsensibel ist ein wenig übertrieben, aber es sollte schon sehr schwer sein an den inhalt zu kommen.
access datenbank deswegen, weil es sich um eine geodatabase handelt. eine datenbank, die Geodaten speichert und zum Besipiel mit ArcGIS bearbeitet werden kann... und dieses format basiert nunmal auf einer mdb datei, also gibts da keine andere möglichkeit!!!
moin!
möchte eine access datenbank möglichst sicher machen. habe schon dutzende seiten abgeklappert. der passwortschutz kommt mir ein wenig riskant vor, hindert ja nur den zugriff über access oder excel. die verschlüsselung von access bringt auch nicht allzu viel.
die sicherung muss beim erstellen der datenbank durch mein programm vollzogen werden können. allerdings soll zum schreiben und lesen aus meinem programm (c#) auf die datenbank zugegriffen werden können.
was eignet sich da am besten als sicherheitsmöglichkeit?? in der datenbank werden sehr sensible daten gespeichert...
danke! funktioniert jetzt! wenn ich die com-dll über referenz hinzufügen einbinde, ist aber das verzeichnis fest, so dass bei installation immer der gleiche pfad benutzt werden muss. aber da eignet sich ja das system32 verzeichnis.
oder kann man die dll irgendwie einbinden und dabei einen bestimmten pfad festlegen wie im installationssetup gewünscht.
noch eine frage:
wie importiere ich nicht statische methoden. beim dllimport wird ja static extern erwartet.
und wie kann ich über DllImport einen konstruktor aus einer com-dll importieren.
ich bedanke mich schonmal für die hilfe!
bin schon ein gutes stück weitergekommen!!!
die erste möglichkeit funktioniert soweit, aber was ist ein COMInspector
nutze übrigens sharpdevelop und hab die com-dll über referenz hinzufügen eingefügt!
@cmpxchg:
geht anscheinend nur mit .net dlls, schmeißt einen fehler: falsches format!
Moin!
möchte auf die Methoden einer com-DLL zugreifen, hab aber keine informationen über deren inhalt. was kann man da machen?
danke schonmal!