Laden...
P
plongo myCSharp.de - Member
Webprogrammierer RLP Dabei seit 14.02.2006 123 Beiträge
Benutzerbeschreibung

Forenbeiträge von plongo Ingesamt 123 Beiträge

09.07.2007 - 10:37 Uhr

Hi,

habe die Lösung gefunden.

Das Property CustomActionData muss den Wert /name="[TARGETDIR]" enthalten.

Danach kann ich auf die gewünschte Information zugreifen.

Danke & Mfg
plongo

09.07.2007 - 09:21 Uhr

Hi,

über http://msdn2.microsoft.com/de-de/library/system.configuration.install.installer(VS.80).aspx

sollte mir der Installer.Context.Parameters Werte (wie z.b Install-DIR) ausgeben.

Nun habe ich mir eine eigene Installer Klasse erstellt und die Installt Methode überschrieben.

Und mit folgenden Code gefüllt:


      System.Collections.IDictionary)
        MyBase.Install(stateSaver)

        'AddDBTable(Me.Context.Parameters.Item("sql"))
        '', _                   Me.Context.Parameters.Item("sql"))

        Try
            Log("Install")
            LeseParameter(Me.Context.Parameters)
            'LeseInstallers(Me.Installers)
        Catch ex As Exception
        End Try
    End Sub


    Private Sub Log(ByVal text As String)
        Dim writer As StreamWriter = New StreamWriter("S:\Tests\log\log.txt", True)

        writer.WriteLine(text)

        writer.Flush()
        writer.Close()
    End Sub

    Private Sub LeseParameter(ByVal parameters As System.Collections.Specialized.StringDictionary)
        Log(parameters.Count.ToString)
        For Each parameter As String In parameters.Keys
            Log(parameter & " = " & parameters(parameter))
        Next
    End Sub

Dieses gibt mir folgende Werte in der log.txt aus:


Install
5
action = install
sql = test
installtype = notransaction
assemblypath = C:\Programme\yyy\zzz\OpenWeb.dll
logfile = 

Ok, der assemblypath gibt mir schon den Pfad aus, aber ohne die dll wäre es mir schon lieber.

09.07.2007 - 08:38 Uhr

Hallo,

für unseren Produkt möchten wir ein Setup\Websetup generieren um die Installation beim Kunden zu erleichertn.
Nun arbeite ich mich in dieses Thema ein.

Über Visual Studio 2005 werden mir Setups zur Verfügung gestellt.
Zu den Standardfunktionen die das Setup schon anbietet, ist es ja auch möglich eigene Aktionen zu definieren.

Dafür benötige ich aber Parameter\Properties z.b. Installtionspfad unseres Produktes.

Leider finde ich nirgends eine Information wie ich diese ermitteln kann.

Für jede gute Quelle bin ich dankbar.

Mfg

13.10.2006 - 16:38 Uhr

Hallo,

heute habe ich mal über google ein wenig schlau über Ruby bzw. Rails gemacht. Wenn ich mir die Webseiten so durchlese, da hört sich ja Ruby sehr interessant an und man sollte sich damit wohl mal näher befassen.

Ich komme aus dem Bereich der Webentwicklung und programmiere überwiegend mit .NET, PHP oder ASP.

Da ich jeder Sprache offen gegenüber stehen, würde mich interessieren ob von euch jemand Erfahrung mit Ruby gemacht hat?

Für jede Antwort bin ich sehr dankbar.

Wenn die Zeit es zulässt werde ich mich mal wohl mehr damit beschäftigen.

Danke & Gruss
plongo

02.08.2006 - 17:06 Uhr

Hi,

tja wenn ich mehr Zeite hätte wäre ich in deinen Team. X(. hätte mich interessiert mal die die Technik nicht nur im Webbereich einzusetzen. Vielleicht zu einem späteren Zeitpunkt.

@Peter:
DerHulk ist nen Arbeitskollege von mir.

Gruss
plongo(_291)

30.05.2006 - 16:40 Uhr

Gehe doch hin und schreibe dir einen eigenen Webservice worüber du dir die Größe von Dateien ermitteln kannst!

18.05.2006 - 16:26 Uhr

Einen eigenen werde ich nicht verwenden, dafür sind meine Kenntnisse nicht so stark in Algo. Wenn nutze ich von OpenSource Algo's um meine Assembly zu schützen, wenn dies notwendig wird!

18.05.2006 - 11:11 Uhr

Also ergo brauche ich keine Verschlüsselung, falls diese öffentlich bekannt ist!

18.05.2006 - 10:56 Uhr

@herbivore:
Klar das ist verständlich was du bzw. Robert G sagst!

Deshalb stellt sich die Frage, den Code zu schützen, m.E. auch oder vielleicht gerade im Sicherheitsbereich nicht.

Leider verwirrt mich der Satz ein wenig, was genau meinst du damit. Danke!

Gruss plongo

18.05.2006 - 10:44 Uhr

Gut den Algorythmus muss er ja erstmal kennen. Gut, wenn er bekannt ist oder leicht zu knacken, tja dann hatte ich Pech!

Noch habe ich keine im Einsatz, aber vielleicht ist es notwendig. Denn wenn es um wichtige, sensible Daten (Code) geht, will ich dem Hacker es ja nicht so einfach machen. Und ihm die Code ohne weiteres repräsentieren. Welches Verfahren ich dann anwende, ist eine andere Frage.

Es dient ja nur Aufklärung der Möglichkeit!!!

18.05.2006 - 10:01 Uhr

Bei der späteren Anwendung kann ich dir das using Statment empfehlen.

Damit brauchst du nicht selbst die Dispose/Close Methode aufzurufen um Speicher freizugeben, sondern dies erledigt das using Statment.

Kleines Beispiel (Vb.NET)


Using resource As New resourceType
' Insert code to work with resource.
End Using

' THE FOLLOWING TRY CONSTRUCTION IS EQUIVALENT TO THE USING BLOCK
Dim resource As New resourceType
Try
' Insert code to work with resource.
Catch ex As Exception
' Insert code to process exception.
Finally
' Insert code to do additional processing before disposing of resource.
resource.Dispose()
End Try

Vorteil davon ist, das du es nicht vergessen kannst das Objekt freizugeben und auch bei einer Exception (ausser StackOverflowException), wird das Objekt freigeben!

18.05.2006 - 09:41 Uhr

Generell denke ist mir es auch egal das meine Assembly betrachtet werden können und ungeschützt sind.

Aber ich denke bei sicherheitsrelevanten Code, wäre mir dies schon lieber!
Dazu mal den Artikel: http://www.entwickler.de/zonen/portale/p...ne,828,p,0.html. Dort denke ich wäre sowas schon sehr sinnvoll bzw. notwendig. Auch wenn es keine 100% Sicherheit gibt! Besser eine Sicherheit als keine!

18.05.2006 - 09:28 Uhr

Danke fritsch,

in dem Artikel wurde dies schon beschrieben, werde mich dort aber noch näher informieren!

18.05.2006 - 09:27 Uhr

Danke dir herbivore,

darf ich Fragen welche Methoden du nützt um Assembly zu schützen, wenn du dies überhaupt nutzt?

Habe mir jetzt mal den Beitrag durchgelesen. Sehr informativ!

Folgende Aussage stellt in mir die Frage warum dies so ist?

Wenn du sensiblen Code, sprich Daten die nicht jeder lesen darf im Assembly hast dann solltest du mit unmanaged Code arbeiten, sprich COM. Eine andere Möglichkeit gibt es bis dato noch nicht.

Die anderen mögllichkeiten über Dotfuscator, WebService oder externe Tools sind klar.

18.05.2006 - 09:06 Uhr

Hallo,

ich selbst habe mir eine eigene C# Klasse geschrieben und in eine Assembly kompiliert, die ich immer wieder in meinen Projekten verwenden. Mit dem Net. Reflector Tool kann ich ja meine eigene und auch andere Assembly betrachten, was ja sehr nützlich und hilfreich sein kann.

Dennoch stelle sich bei mir dir Frage ob ich diese nicht verhindern kann? Bei meinen eigenen Assembly mag dies egal sein, aber bei sicherheitskritischen Assemblys nicht mehr.

Dazu habe ich mich auf die Suche gemacht und konnte folgendes Seite dazu finden:
<die Seite existiert leider nicht mehr>

Dies habe ich mal angewendet, konnte aber beim dem .NET Reflector kein Unterschied feststellen. Dazu folgendes aus dem Artikel (siehe Link unten):

Das Werkzeug setzt anstatt des .NET Reflection API ein eigenes Modell zum Auslesen der Metadaten, IL-Instruktionen, Resourcen und XML-Dokumentationen einer Assembly ein.

Dennoch als ich versuchte per Reflechtion auf auf meine privaten Methoden zuzugreifen, konnte ich ein Erfolg erreichen.


<%@Import Namespace="System" %>
<%@Import Namespace="System.Drawing" %>
<%@Import Namespace="System.Collections" %>
<%@Import Namespace="System.ComponentModel" %>
<%@Import Namespace="System.Windows.Forms" %>
<%@Import Namespace="System.Data" %>
<%@Import Namespace="System.Reflection" %>
<script language="c#" runat="server">
	public void Page_Load(object sender, EventArgs e) {
		try {		
			//Assembly laden
			Assembly oAssembly = Assembly.LoadFrom(@"C:\Inetpub\wwwroot\Test\bin\System.Access.Database.dll");

			//Die Klasse, auf die zugegriffen werden soll, ermitteln
			Type oType = oAssembly.GetType("System.Access.Database");

			//Instanz der Klasse erstellen
			object oInstance = Activator.CreateInstance(oType);

			//MethodInfo-Objekt für die gewünschte Funktion erstellen 
			//und Funktion in der KlassenInstanz über Invoke aufrufen
			MethodInfo oMethodInfo = oType.GetMethod("test", BindingFlags.Instance | BindingFlags.NonPublic);
			oMethodInfo.Invoke(oInstance, new object[]{"Mal schauen ob es geht!!!!!"});
			
		} catch (System.Exception err) {
			Response.Write(err.ToString());
		}
	}
</script>

Bei bestimmten Übergab der SecurityAction-Enumeration, bekam ich eine InnerException geworfen. SecurityAction gibt die Sicherheitsaktionen an, die über die Deklarationssicherheit ausgeführt werden können.

Es gibt folgende Member:
Assert
Demand
Deny
InheritanceDemand
LinkDemand
PermitOnly
RequestMinimum
RequestOptinal
RequestRefuse

Leider ist mir jetzt noch nicht ganz klar, wo ich welchen Member einsetze. Z.b. habe ich beim Deny-Member erwartet das ich eine Exception geworfen bekommen. Dies war aber nicht der Fall und das hat mich verwundert! Aber es ist ja nur eine Frage der Zeit bis mir dies einleuchtend ist!

Bzw. noch eine weiteren informative Seite:
Decompiler und Obfuscator: Wie sicher ist Ihr Code?

Eine Möglichkeit seine Assembly zu sichern, aus dem Artikel

Können Obfuskatoren Software schützen?
String Encryption wird allgemein überschätzt. Es wird nur ein geringer Schutz erreicht und dies zu Lasten einer schlechteren Performance. Daher sollten Obfuskatoren höchstens nach dem Motto "besser ein geringer Schutz als gar keiner" eingesetzt werden.

Eine weitere Möglichkeit:

Ein kurzer Ausflug in die PKI
Die beschriebene Verschüsselungsproblematik wird mit der Public/Private-Key-Infrastruktur (PKI) gelöst. Der Absender einer Nachricht verschlüsselt den Inhalt der Nachricht mit dem öffentlichen Schlüssel des Empfängers. Dieser Public Key ist, wie der Name beschreibt, der Öffentlichkeit frei zugänglich. Der Empfänger wiederum besitzt einen geheimen Schlüssel, den Private Key, den nur er kennt. Beide Schlüssel, Public Key und Private Key, bilden ein Schlüsselpaar und sind so konstruiert, dass mit dem öffentlichen Schlüssel verschlüsselte Nachrichten ausschließlich von dem zugehörigen geheimen Schlüssel entschlüsselt werden können.

Zum Verständnis. Theoretisch kann ich mir jede Assembly (C, C++, Java, etc.) mit dem passenden Disassembler betrachten und den Code analysieren. Früher dachte ich diese wäre ohne weiteres nicht möglich. Da liege ich wohl falsch?

Meine Frage ist, wie behandelt hier das Thema?
Sichert hier eure Assembly, wenn ja wie?

Man muss bedenken das aus dieser Möglichkeit dies Assembly zu betrachten, Mono entstanden ist (so steht es zumindest im Artikel).

16.05.2006 - 09:20 Uhr

Große Unternehmen machen dies ja sowieso nur auf Rechnung. Du kannst damit nur kleine Fische an Land ziehen, falls du es ohne Rechnung machen willst, also schwarz.

Also ergo lohnt sich nicht auf Dauer und du machst dich noch strafbar.

Durch das Gewerbe kannst du ja auch Anschaffungen von der Steuer absetzen. Beispiel mein Notebook konnte ich abesetzen (Mwst 100 €). musst aber einmal monatlich deine Umsätze ans Finanzamt melden und du musst natürlich eine Steuererklärung machen. Falls du dies selbst kannst kein Problem, ansonsten wirds teuer, da normale Lohnsteuerberate dies nicht dürfen!

War bei mir der Fall!

16.05.2006 - 09:06 Uhr

Bei mir hat die Anmeldung 10 Euro und paar Cents gekostet!!!!

16.05.2006 - 08:29 Uhr

Ich habe vorkurzem selbst eine Gewerbe eröffnet im Bereich Webdesign/-programmierung.

Vielleicht hast du ja im Freundeskreis jemanden der im Design fit ist. Ich persönlich bin es nicht so startk, aber zusammen mit einen Freund, der Mediendesign gerlent hat, stellt das kein Problem dar.

Das gute bei mir ist das ich noch mit einer Firma arbeite, die eben die Projekte an landt bringt. Somit kann ich erstmal auf die Programmierung beruhen, Referenzen sammeln, um später selber sowas zu erreichen.

15.05.2006 - 12:09 Uhr

Kewl,

werde ich mir mal anschauen. Ich denke das ich dies ganz gut gebrauchen kann.

wenn ich es mal geteste habe, gebe ich Feedback!

15.05.2006 - 10:22 Uhr

Original von Golo Haas
So, es steht nun fest:

Das Treffen findet am Samstag, dem 22. Juli 2006 statt, in Wiesbaden.

Viele Grüße,
Golo

Wann genau (Uhrzeit)?

Wo (Strasse)?

Agenda ?

Kosten?

Ob ich komme weiss ich nicht, würde mich aber generell sehr interessieren!

12.05.2006 - 10:36 Uhr

Da kann ich dir nur zustimmen Kai...
Bei mir ist dies keine Frage. Erst der Eigenhilfe (SDK, google, Forumsuche, etc.) und dann über Fremdhilfe (wenn unbedingt nötig)!

12.05.2006 - 10:31 Uhr

ich habe ihn erst gar nicht installiert bekommen. Hätte dafür ein Troubleshotting machen müssen, dafür hatte ich aber wenig Lust. 🙄

12.05.2006 - 10:27 Uhr

ja stimmt, aber nicht immer direkt so erständlich. Ist mein Empfinden!
Deshalb bin ich persönlich froh, falls mir das jemand erklären würde (wie ich dies gemacht habe). Nur zur Sicherheit, das es auch richtig verstanden worden ist!

12.05.2006 - 10:21 Uhr

WebRequest webRequest = WebRequest.Create(url);

Anfrage an eine URL. Beispiel www.google.de


//Username und Passwort übergeben, fall nötig.
if(username == null || password == null)
{
  NetworkCredential networkCredential = new NetworkCredential(username, password);
  webRequest.PreAuthenticate = true;
  webRequest.Credentials = networkCredential;
}

Übergabe von Benuzter und Passwort. Ich glaube das dient zur Authentifizierung falls ein Proxy im Spiel ist, ansonsten bitte korrigieren!


WebResponse webResponse = webRequest.GetResponse();

Ausgabe/Rückgabe/Antwort des Request (Anfrage) erhalten. Das bedeutet auf gut Deutsch gesagt der HTML- Code (in unserem Beispiel für www.google.de)


//Per StreamReader Response einlesen
StreamReader sr = new StreamReader(webResponse.GetResponseStream(), Encoding.ASCII);
StringBuilder contentBuilder = new StringBuilder();
while (-1 != sr.Peek())
{
  contentBuilder.Append(sr.ReadLine());
  contentBuilder.Append("\r\n");
}
content = contentBuilder.ToString();

Übergabe des Repsonse an einen StreamReader. Damit hast du dann die Möglichkeit diese dann zu durchlaufen (den HTMl-Code auszulesen) und an einen StringBuilder zu hängen. Der StringBuilder wird damm als Rüchgabe der Funktion verwendet.

Ich hoffe es etwas verständlich gemaht zu haben!

12.05.2006 - 09:17 Uhr

ist aber auch keine Schweres Ding

Table.Rows.Add() - Tabellezeile
Rows.Cell.Add() - Tabellenzelle!

Thats it!

P.S. Ich hoffe das ich es nicht verwecheslt habe!

11.05.2006 - 15:30 Uhr

Wichtig ist dort, das verwendete Objekt die IDisposable Methode implementiert haben muss!

11.05.2006 - 12:18 Uhr

ich denke das evtl. an den falschen Datentypen liegt!

Welche verwendest du im Code bzw. Datenbank?

Wenn möglich versuche mit Parameter zu arbeiten und gebe dort dann den Datentyp mit.

Hier mal der Constructor der OdbcParameter Klasse!
Wichtig ist dabei der OdbcType!


C# 
public OdbcParameter (
	string name,
	OdbcType type
)
 

Parameter
name
Der Name des Parameters. 

type
Einer der OdbcType-Werte. 

11.05.2006 - 10:49 Uhr

Genau so habe ich es gemeint. Damit hättest du ja die Probleme in der Performance beim rückwärtes lesen nicht mehr.

Die Andere Frage ist natürlich wie du dies programmierst das der letzte Eintrag in deiner Datei an erste Stelle stehst und dann erst die älteren Beiträge.

11.05.2006 - 09:19 Uhr

und wenn du jetzt hingehst und jeweils den letzen Eintrag in deine Datei jeweils in die erste Zeit schreibst statt in die letzte (also kein normales Anhängen)?

So stehen jeweils die letzten Beiträge an erste Stelle und du kannst normal vorwärts lesen. Eine chronologische absteigende Sotierung.

11.05.2006 - 08:30 Uhr

Warum?

10.05.2006 - 17:00 Uhr

ich kenne keine direkt, ansonsten schau dir mal die Eigenschaften von ListView Item an... vielleicht findest du ja was...

10.05.2006 - 16:57 Uhr

hier mak ein gutes Tutorial für WebServices:
http://www.aspheute.com/artikel/20010621.htm

Vielleicht hilft dir die HttpUtility.HtmlDecode Methode weiter

10.05.2006 - 16:35 Uhr

Zeig doch mal etwas genauer, wie kommt diese Code zustande?

10.05.2006 - 16:07 Uhr

ich denke mal das wohl eine Access-Db für deine Zwecke reichen könnte!

10.05.2006 - 16:03 Uhr

Das beste Mittel dazu sind wohl reguläe Ausdrücke

Schau mal hier vorbei:
http://regexlib.com/Search.aspx
http://www.sql-und-xml.de/regex/index.html

10.05.2006 - 15:59 Uhr

Nutzer doch das SelectedIndexChanged Event und setze den Cursor immer auf einen bestimmten Eintrag oder deaktiviere dein Control!

10.05.2006 - 15:53 Uhr

Du kannst per

DeinControl.Attributes.Add("onclick", "JsFunktion")
DeinControl.Attributes["onclick] = "JsFunktion"

eine weitere Möglichkeite wäre:
HtmlGenericControl


.aspx:
<body ID="myBody" runat="server">

.aspx.cs:
HtmlGenericControl myBody = new HtmlGenericControl;
...
myBody.Attributes.Add("onLoad","DoSomething();");

05.05.2006 - 17:31 Uhr

Sorry, bin wohl etwas neben der Spur 🙄

Der Reflector scheint ja ein richtig gutes Tool zu sein 😁

05.05.2006 - 16:59 Uhr

Super, danke, das hilft mir weiter.

Sehr ich das richtig, das ich mir über den Reflector den Code hinter der Assembly anschauen kann?

edit:
Dein Link führt mich wieder auf dies Seite!

05.05.2006 - 16:25 Uhr

ja klar. Sorry!

Ich meine es zu verstehen, da ich einfach meinen Code durch den Reflector scheue und dort zu sehen, wie dieser arbeitet.

Nur die Frage wie arbeite ich mit dem Reflector bzw. wie übergebe ich meinen Code?
Versteh ich es überhaupt richtig?

Ein Link dazu würde mir schon weiterhelfen!

05.05.2006 - 16:06 Uhr

Danke für eure Antworten!

@Robert G
dein letzter Beitrag sagt mir wirklich nicht sehr viel... Kannst du mehr Infos geben. Danke dir!

05.05.2006 - 15:43 Uhr

Ich habe mir mal folgendes Thema durchgelesen.

Speicherproblem

Da ich mometan an einer Anwendung dran bin und dort auch mit Forms (Show, Close) arbeite und diese auch die Dispose Methode besitzen, besteht bei mir dir Frage nutze ich jetzt dir Close oder Dispose Methode

Bzw. wird durch die Close Methode ebenfalls auch ein Dispose durchgeführt?

danke

28.04.2006 - 13:55 Uhr

das mit dem Label bringt nichts, dan ja immer das ausgeben wird, was dem Label als letztes zugewiesen worden ist!

28.04.2006 - 11:30 Uhr

Du könntest am Einfach eine Variable erstellen mit der aktuelle Zeit und am Ende des Skripts. Diese dann einfach miteinander vergleichen!

Evtl. kann dir auch das weiterhelfen:
http://www.aspheute.com/artikel/20001006.htm

27.04.2006 - 11:44 Uhr

tja, ich würde gerne soviel machen, aber die Zeit.

Trotzdem danke für die Antwort... Ich werde mir mal die Vmware holen, Linux habe ich schon und dann werde ich es selbst ma testen 😉

27.04.2006 - 11:08 Uhr

sorry, aber leider kenne ich mich in diesem Bereich weniger aus.

Wobei ich denke das diese hier schon öfters behandelt worden ist. Viellecht findest du was gutes über die Suche...

Ich denke System.Net ist der Schlüssel zum Ziel!

27.04.2006 - 10:52 Uhr

Willst du dem User über eine WebFrontend eine Datei bereitstellen?

27.04.2006 - 10:51 Uhr

Wei ausgefreift ist Mono? Könnte man das ohne Probelm auch für ne Webseiten einsetzen, die für jedermann erreichbar ist und nicht nur zum testen!

26.04.2006 - 16:54 Uhr

hmm,

ich würde sagen das du dein BO zwischenspeichern müsstet um später weiderherstellen zu können bzw. damit zu arbeiten.

Keine Ahnung wie umfangreich dein BO ist, aber du könntest es evtl. in enie Session oder ViewState speichern um beim erneuten Postback davon entnehmen.

Hast du evtl. schon überlegt das BO zu serialisieren (XML)?