-
Gesamte Inhalte
1167 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von Gateway_man
-
Hallo liebe leute, erstmal zur Ausgangssituation. Ich haben einen Windows 7 Rechner und einen Windows XP Rechner. Beide befinden sich an verschiedenen Orten. Jetzt erstelle ich über Teamviewer eine vpn Verbindung zwischen eben diesen beiden Computern. Jetzt soll der Windows 7 Rechner zugriff auf das lokale Netzwerk haben in dem sich der Windows XP Rechner befindet. Das Subnetz des lokalen Netzes ist 255.255.255.0 und die Netzadresse lautet 192.168.112.0 Innerhalb des vpns sieht die IP zuweisung wie folgt aus: Windows7 : 7.197.125.222 XP: 7.197.134.168 Dem Windows 7 rechner wurde folgende Route hinzugefügt: Netzwerkziel; Netzwerkmaske; Gateway; Schnittstelle 192.168.112.0; 255.255.255.0; 7.197.134.168; 7.197.125.222 Auf dem WinXP Rechner wurden folgende Konfigurationen getätigt: Folgender Registry änderung wurde vorgenommen: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters] "IPEnableRouter"=dword:00000001 (von 0 auf 1) Folgende Befehle wurde abgesetzt: netsh routing ip nat install netsh routing ip nat add interface "TeamviewerVpn" private netsh routing ip nat add interface "LAN-Verbindung" full netsh routing ip nat add interface Intern private net start remoteaccess Das Resultat ist ernüchternd. Ich kann trotz der Konfiguration nichts im Netz anpingen(Zeitüberschreitung) und auch nicht auf die Maschinen connecten. Irgendwelche Ideen? Lg Gateway
-
Sry für doppelpost. Habs jetzt aber so eingerichtet wie du gemeint hast. Jetzt haben sich die Fehlermeldung geringfügig geändert: Statt dllexport meckert er jetzt wegen dllimport rum. Hm ich verstehs nicht. Die dll's greifen ja auch untereinander aufeinander zu. Und die lassen sich alle reibungslos compilieren. Lg Gateway
-
In dem Header wThread.h wird der BaseDef header inkludiert. In dem header ist bereits _export definiert. Eigentlich sollte das doch reichen? Denn der Headerinhalt wird ja zur compilezeit reinkopiert. Oder hab ich das falsch verstanden? Das _export Symbol ist jedenfall in der Consolen Anwendung nutzbar (wird in der Intellisense liste aufgeführt). lg Gateway EDIT: Jetzt hab ich erst geschnallt was du meinst . Habs ausprobiert aber hat leider nichts genützt. Eventuell hab ich es an der falschen stelle eingefügt. Ich werds heute abend nochmal etwas austesten.
-
Hi leute, ich war gerad am erweitern meines Cpp Frameworks und wollte kurz eine Klasse testen. Ergo fix die ne neue Consolen Anwendung erstellt und die Pfade für die Header und Lib files in den Projekteigenschaften eingetragen. So jetzt habe ich noch die entsprechende Header Datei includiert. (und die entsprechende Lib eingebunden). So weit so gut. Ich konnte auf alle Elemente zugreifen. Das sieht dann wie folgt aus: #pragma comment (lib, "Win32.System.lib") #include "stdafx.h" #include <Win32\System\wThread.h> #include <iostream> using namespace std; void TestFunction(); System::Threading::wThread* thread; int _tmain(int argc, _TCHAR* argv[]) { try { thread = new System::Threading::wThread(TestFunction); if (thread->Start()) { while (thread->IsRunning()) { Sleep(1000); } } } catch(ExceptionBase base) { cout << base.GetMessageW() << endl; } return 0; } void TestFunction() { for (int i = 0; i<=1000; i++) { cout << "Position" << " State ==> " << i << endl; } } Als ich den code aber compilieren wollte hab ich folgende Fehler bekommen: Der Inhalt der wThread.h Datei sieht wie folgt aus: #pragma once #pragma comment (lib, "Kernel32.lib") #pragma comment (lib,"hException.lib") #include<Windows.h> #include <Base\baseDef.h> #include <hException\ExceptionBase.h> #include <WinBase.h> namespace System { namespace Threading { #define INVALID_FUNC_POINTER "The function pointer can't be reffering to 0!" #define WTHREAD_INIT_FAILED "Thread creation failed. Check the error code!" enum _export wThreadState{None = 0x1, Running=0x2, Aborted=0x3, Stopped=0x4, Suspended = 0x5 }; class _export wThread { private: wThreadState state; HANDLE handle; LPSECURITY_ATTRIBUTES sAttr; SIZE_T stackSize; LPVOID lpParameter; DWORD creationFlag; LPDWORD threadID; void (*main) (void*); void (*mainW) (); public: wThread(void (*_main)(void*), void* args); wThread(void (*_mainW)()); wThread(void (*_main)(void*), SIZE_T StackSize, void* args); wThread(void (*_mainW)(), SIZE_T StackSize); wThread(LPSECURITY_ATTRIBUTES SecAttr, void (*_main)(void*), SIZE_T StackSize, void* args); wThread(LPSECURITY_ATTRIBUTES SecAttr, void (*_mainW)(), SIZE_T StackSize); ~wThread(void); wThreadState CurrentState(); HANDLE CurrentThreadHandle(); bool Start(); bool Abort(); bool Suspend(); bool Resume(); bool IsRunning(); }; } } Hinter _export verbirgt sich: #define _export __declspec(dllexport) Die dll mit der Klasse wThread compiliert ohne zu murren. Also vermute ich das ich irgendwelche Fehler beim linken oder sonstiges gemacht habe. Fällt euch was ins Auge? Lg Gateway
-
Es gibt Asynchrone Funktionen die dir das ermöglichen. Die UdpClient Klasse verfügt über die Funktionen BeginReceive und BeginSend. Lg Gateway
-
Hallo, ich versuche aktuell einen Process zu starten. Zum test versuche ich es noch garnicht mit einem andereren User Account sondern mit dem Account mit dem ich gerade angemeldet bin. Jedoch bekomme ich immer den Fehler 1314 zurück. Ich habe mich jetzt schon durch sehr viele Seiten gewühlt, jedoch stellen fast alle die selbe Frage und das Ende vom Lied ist das sie zu keiner Problemlösung kommen. Ich hatte gelesen die Meldung wird geworfen wenn irgendwelche Privilegien fehlen. Was ich bereits versucht habe: -Das Token mit DuplicateTokenEx zu duplizieren (ich hatte gelesen das die Notwendigen Privilegien dann automatisch gesetzt werden) ==> Resultat: Selbiger Fehler mit dupliziertem Token. -Dem Token das Notwendige recht selbst zuweisen mit AdjustTokenPrivileges. ==> Resultat: Laut Rückgabewert von AdjustTokenPrivileges hat das geklappt aber ich erhalte immernoch den selben Fehler beim erstellen des Prozesses. Hier mal die Funktion: //Die Funktion wird aktuell mit folgenden Parametern aufgerufen. //username:****** //pwd:****** //domain:"." //executeable:@"C:\Windows\System32\cmd.exe" //parameter: string.Empty public static bool RunAs(string username, string pwd, string domain, string executeable, string parameter) { int lastError = 0; if (string.IsNullOrEmpty(executeable) || !System.IO.File.Exists(executeable)) return false; NativeStructures.PROCESS_INFORMATION pi = new NativeStructures.PROCESS_INFORMATION(); NativeStructures.STARTUPINFO si = new NativeStructures.STARTUPINFO(); System.IntPtr hToken; // Initialize structs si.cb = Marshal.SizeOf(si); // Get the user token if (LogonUser(username, (string.IsNullOrEmpty(domain)) ? (".") : (domain),pwd, (int)NativeStructures.LOGON_TYPE.LOGON32_LOGON_BATCH, (int)NativeStructures.LOGON_PROVIDER.LOGON32_PROVIDER_DEFAULT, out hToken)) { // Create structs //IntPtr dublicatedToken = IntPtr.Zero; //NativeStructures.SECURITY_ATTRIBUTES sAttr = new NativeStructures.SECURITY_ATTRIBUTES(); //if (!DuplicateTokenEx(hToken, 0x02000000, ref sAttr, NativeStructures.SECURITY_IMPERSONATION_LEVEL.SecurityAnonymous, NativeStructures.TOKEN_TYPE.TokenPrimary, out dublicatedToken)) //{ // KERNEL32.CloseHandle(hToken); //} NativeStructures.TOKEN_PRIVILEGES tp = new NativeStructures.TOKEN_PRIVILEGES(); tp.PrivilegeCount = 1; tp.Attributes = NativeStructures.SE_PRIVILEGE_ENABLED; bool btemp = false; btemp = AdjustTokenPrivileges(hToken, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero); NativeStructures.SECURITY_ATTRIBUTES saProcessAttributes = new NativeStructures.SECURITY_ATTRIBUTES(); NativeStructures.SECURITY_ATTRIBUTES saThreadAttributes = new NativeStructures.SECURITY_ATTRIBUTES(); // Now create the process as the user if (!CreateProcessAsUser(hToken, executeable, parameter, ref saProcessAttributes, ref saThreadAttributes, false, (int)NativeStructures.dwCreationFlags.NORMAL_PRIORITY_CLASS , IntPtr.Zero, System.IO.Path.GetDirectoryName(executeable), ref si, out pi)) { lastError = KERNEL32.GetLastWin32Error(); KERNEL32.CloseHandle(hToken); throw new Exception("Failed to CreateProcessAsUser"); } KERNEL32.CloseHandle(hToken); } lastError = KERNEL32.GetLastWin32Error(); return true; } Mit dem Fehler scheinen wohl viele schon bekanntschaft gemacht zu haben. Ich finde sehr viele Posts wie meinen, aber keinen Lösungsweg . Lg Gateway
-
Zugriff zweier Prozesse auf eine Singleton Klasse
Gateway_man antwortete auf Gateway_man's Thema in .NET
Danke euch. Sehr schade das es nicht anders möglich ist. Ich hatte mir für den worst case schon was überlegt aber das kostet mich mindestens zwei Wochenenden und sehr viel Redbull. Ich werde Named Pipes nutzen und mir eine Bibliothek schreiben in der ich Objekte anhand von TypeID und InstanceID registriere. Jedes dieser Objekte muss von Der Basis Klasse erben und wenn ein Objekt intern ein Event wirft werden die EventArgs sowie der Sender deserialsiert und automatisch über die Named Pipes an Clients geschickt die sich für dieses Event beim Server registriert haben. Das soll dann natürlich nicht nur bei Events funktionieren, sonder auch bei Properties und Funktionen. Gibt es eigentlich eine Möglichkeit beim öffnen eines Named Pipe Server zwischen den verbundenen Clients zu unterscheiden? Seit dem .NET 3.5 gibt es ja eine eigene .NET Implementierung und bei den beispielen die ich gesehen habe ist mir aufgefallen das Nachrichten nie direkt an einen Client sondern immer an alle verbundenen Clients geschickt werden. Lg Gateway -
Zugriff zweier Prozesse auf eine Singleton Klasse
Gateway_man antwortete auf Gateway_man's Thema in .NET
Hm, das ist ja alles total umständlich und ich müsste enorm viel schreiben um das einigermaßen so umzubiegen das es für mich brauchar wäre. Bei dem aktuellen Projekt spielen Events eine entscheidende Rolle. Aber bei keinem der Lösungsvorschläge wäre das möglich, da immer nur der Wert übergeben wird. Wenn also der Prozess A ein Event eines Objektes wirft, merkt Prozess B das nicht, weil beide Objekte jeweils getrennt initialisiert wurden (nur eben mit gleichem Inhalt). Ich dachte schon fast dass das die Lösung ist. Bis ich merkte das auch hier der Prozess B nicht auf die selbe Instanz des Objektes zugreift. Warum nennt man das dann bitte Shared Memory. So ein Unsinn. Unter Shared Memory verstehe ich einen Speicherbereich auf dem beide Prozesse Zugriff haben. Und wenn ich dann ein Objekt in diesem Speicherbereich ablege dann sollen beide Prozesse auch auf die selbe Speicheradresse zugreifen wenn diese auf das Objekt zugreifen. Gibts da eine Möglichkeit? Muss auch nicht .Net sein . Kann auch gerne in den unendlichen tiefen von Windows versteckt sein. Ich sehe es ja ein das es einen Schutz gegen fremden Speicherzugriff geben sollte. Aber wenn ich als Entwickler explizieht möchte das Prozess XY Zugriff auf meinen Speicherbereich hat dann sollte mir auch so eine Möglichkeit geboten werden. Da kann ich genauso gut das Objekt serialisiert auf die Platte ablegen und der Prozess B lässt im Timer auf existenz der Datei prüfen und deserialisiert diese dann. Wow was für ein Shared Memory . Lg Simon -
Zugriff zweier Prozesse auf eine Singleton Klasse
Gateway_man antwortete auf Gateway_man's Thema in .NET
So wie mir das erklärt wurde, werden bei Remoting TcpChannels registriert und deren Kommunikation wird mit Windows Comunication Foundation umgesetzt. Aber gut ich lass mich gerne eines besseren belehren. Vielen Dank für die zusätzlichen Schlüsselbegriffe, ich denke ich werd mich mal über die Named Pipes etwas besser informieren. LG Gateway -
Zugriff zweier Prozesse auf eine Singleton Klasse
Gateway_man antwortete auf Gateway_man's Thema in .NET
Hi, danke für die Bestätigung , hab zwischenzeitlich schon einiges darüber erfahren. Im .NET gibt es wohl nur die Möglichkeit per Remoting (WCF) zwei Prozesse zu Synchronisieren. Das gefällt mir persönlich nicht so gut aber wenn es nicht anders geht . Im Prinzip will ich diverse Schnittstellen übergeben die vom Service initialisiert wurden. Diese Schnittstellen verfügen über events, Properties und Funktionen. Allerdings muss ich das bei der Nutzung von Remoting nochmal umdesignen. So ganz nebenbei hätte ich dazu aber dann doch noch eine Fragen. Wie verhält es sich dann bei folgendem Beispiel: Man hat eine Funktion die man über pInvoke aufruft. Diese Funktion verfügt über einen IntPtr Parameter und dieser zeigt auf eine Structure. Das funktioniert auch. Hat die externe Funktion dann nicht Zugriff auf den Speicherbereich meiner .NET Anwendung? lg Gateway -
Hallo, ich verstehe das gerade nicht. Ich habe eine Singleton Klasse die als Schnittstelle zwischen zwei Prozessen fungieren soll. Der eine Initialisiert diese mit gewissen interfaces und der andere Process holt sich die Instanzen. Beim Test greift der Prozess der sich die Instanz holen soll jedoch ständig ins leere. Der bekommt immer Null zurück. So nun meine Frage: Kann es sein das Singleton Klassen nur innerhalb eines Prozesses funktionieren? Wir machen das sehr oft in der Arbeit, jedoch greift immer der selbe Prozess auf die Instanzen zu. An sich wäre es logisch das es nicht funktioniert, da effektiv Prozess A auf den Speicherbereich von Prozess B zugreifen würde. Effektiv geht es um folgendes. Ich habe einen Service und suche jetzt nach Möglichkeiten wie ich es schaffe das das Administrationstool (gui Anwendung) mit dem Service kommunizieren kann. Da schien mir Singleton als sehr geeignet.... Natürlich bin ich auch für alternative Vorschläge zu haben. LG Gateway
-
Hallo, ich versuche jetzt schon seit geraumer Zeit eine meiner .Net Libraries als Com+ zu registrieren. Ich rufe als Regasm /register "Pfad" auf und dann wird mir bestätigt das die Typen registriert wurden. Wenn ich aber nun ins Visual Studio wechsle und auf die Library referenzieren will taucht diese nicht unter dem Reiter Com auf?! Muss ich da irgendetwas beachten? lg Gateway PS: Er scheint die dll korrekt registriert zu haben. Siehe Bild.
-
[C#] Property Modifier wird nicht richtig gesetzt
Gateway_man antwortete auf Gateway_man's Thema in .NET
So das Thema hat sich mehr oder weniger erledigt. Also es scheint das die enumeration korrekt übernohmen wurden, jedoch heißt der Wert während der Laufzeit anders. Die Properties sind während der Laufzeit Zugreifbar (lesend sowie schreibend). Was mich allerdings etwas stuzig macht ist das er die Signatur versteckt. Das heißt zur Laufzeit werden die Properties vom Debugger nicht angezeigt. Das ist zwar ein störender Schönheitsfehler, aber die Funktionalität wird nicht beeinträchtigt. Ich habe mir diverse andere Umsetzungen angesehn bei dennen aber auch überall während der Laufzeit die Signaturen der Properties versteckt werden. lg Gateway -
Nach sehr lange suche bin ich auf eine Anwedung gestoßen die es zumindest einigermaßen brauchbar umgesetzt hat. Das Tool heißt "Just Trace" und ist von Telerik. Leider ist die Anwendung nicht kostenlos. Aber da ich es eh in der Firma brauche geht das. Für die sind das Pinuts xD. lg Gateway
-
Diese Meldung wird dann erzeugt wenn die Klasse/Funktion die benutzt wird, mit dem Tag "Obsolet" gekennzeichnet wurde. Dieses Tag hat mehrere Überladungen die es auch möglich machen die Nutzung der Klasse/Funktion als Fehler zu Kennzeichnen. Ich würde sagen solange du es noch compilieren kannst, sollte die Klasse/Funktion auch noch funktionstüchtig sein. Aber Gedanken solltest du dir trotzdem machen, da es sein kann das in neueren Versionen der Dll die Klasse/Funktion nichtmehr vorhanden sein könnte. In der Regel wird aber eine Alternative angeboten. Ich würde mal in der Oracle Dokumentation nachsehn was die dazu sagt. lg Gateway
-
Hi, schau mal bitte nach welches Zielframework für deine Anwendung eingestellt ist. Sollte es Framework 4 Client Profile sein, dann stell es bitte auf Framework 4 um. lg Gateway
-
Hallo, ich hab mir eine Funktion geschrieben die mir zur Laufzeit Typen generiert. Diese sollen nur als Feldern und Properties bestehen. Aber aus irgendeinem Grund werden die MethodAttributes nicht richtig gesetzt. Ich lasse diese in einer Switch Verzweigung setzten. Testweise hab ich die MethodAttributes auch fix als Public definiert. Aber zur Laufzeit zeigt er mir immer diese als Family an und ich versteh einfach nicht warum. Das ist das snippet um das es sich handelt: FieldBuilder field = null; if (FieldDict.Keys.Contains(cMember.FieldReference)) field = FieldDict[cMember.FieldReference]; if (field != null) { MethodAttributes mod; switch (cMember.Mod) { case Modifier.Internal : mod = MethodAttributes.Family; break; case Modifier.Private : mod = MethodAttributes.Private; break; case Modifier.Public: mod = MethodAttributes.Public; break; default: mod = MethodAttributes.Public; break; } PropertyBuilder property = typeBuilder.DefineProperty(cMember.Name, PropertyAttributes.None, cMember.Value.GetType(), new Type[] { cMember.Value.GetType() }); MethodBuilder currGetPropMthdBldr = typeBuilder.DefineMethod("get_value", MethodAttributes.Public , cMember.Value.GetType(), Type.EmptyTypes); ILGenerator currGetIL = currGetPropMthdBldr.GetILGenerator(); currGetIL.Emit(OpCodes.Ldarg_0); currGetIL.Emit(OpCodes.Ldfld, field); currGetIL.Emit(OpCodes.Ret); MethodBuilder currSetPropMthdBldr = typeBuilder.DefineMethod("set_value", MethodAttributes.Public, null, new Type[] { cMember.Value.GetType() }); ILGenerator currSetIL = currSetPropMthdBldr.GetILGenerator(); currSetIL.Emit(OpCodes.Ldarg_0); currSetIL.Emit(OpCodes.Ldarg_1); currSetIL.Emit(OpCodes.Stfld, field); currSetIL.Emit(OpCodes.Ret); property.SetGetMethod(currGetPropMthdBldr); property.SetSetMethod(currSetPropMthdBldr); Zur Laufzeit sind currGetPropMthdBldr & currSetPropMthdBldr immer Family. Selbst nachdem ich dem Konstruktor beider variablen fix MethodAttributes.Public übergebe. Es ist für mich ein absolutes mysterium. Hier auch als screenshot. Screenshot lg Gateway
-
Sagt wer? Wenn man die ganzen zusätzlichen Futures der Liste braucht kann man Sie nutzen, wenn nicht, dann braucht man den ganzen Overhead auch nicht mitzuschleppen.
-
Wir benutzten Team Foundation Server 2010, ein privater lokaler Build über das tfs wäre natürlich bombe . Ich werd mich dahingehend mal informieren. ich hab es mit msbuild bereits versucht. Was seltsam ist ist, das msbuild bei manchen projekten sagt das der build failed und wenn ich die solution mit visual studio compiliere dann gibt es keine probleme. Deswegen hatte ich mich für visual studio entschieden anstatt msbuild. Eventuell hatte ich auch die falschen parameter mitgegeben...
-
Danke Klotzkopp. Hat funktioniert . Eventuell hab ich mich falsch ausgedrückt. Ich hab das Tool für mich in der Arbeit geschrieben. Unsere Projekte bestehen aus über 200 Teilprojekten und diese Projekte werden über diverse Tfs Server gemanaged/verwaltet. Jeden Abend werden Nightly Builds von allen Projekte gestartet, sodass am nächsten Tag die neusten versionen für alle bereitstehen und die Testsysteme aktualisiert werden können. Und ich wollte letztendlich ein Tool schreiben das mir die möglichkeit bietet ganze Projekte lokal zu compilieren, sodass ich nicht auf die Nightly Builds warten muss. Daher hol ich mir aus dem Tfs die Builddefinition vom entsprechenden Projekt (XML Datei). Dort stehen die namen (und Pfade) aller Solutions drin. Daraus wird eine Liste generiert und das Tool erstellt jede Solution. Das war die Anforderung. Da unser Buildprozess nicht ganz der Norm entspricht hatte ich wenig Lust mir ein Tool zu suchen das so enorme Anpassungen gestattet, daher hab ich mir schnell selbst ein kleines Tool geschrieben....
-
Hi leute, ich schreib ein tool das automatisiert solutions compiliert. Das ganze soll mit vs2010 gemacht werden. Das erstellen geht easy und funktioniert auch. Nur wenn ich noch den Parameter /out mitnehme funktioniert es nichtmehr. Hier die msdn beschreibung Hier ein beispiel Argument von mir: Das Argument ist nicht zu lang das hab ich bereits geprüft (240 Zeichen). Jedesmal öffnet sich beim Prozess-Start die Argumentenbeschreibung. Sieht jemand einen Fehler? lg Gateway
-
Hi, zeig doch mal wie du die Zeile löschst. Benutzt du Databindings? lg Gateway
-
[C#] Funktion wird übersprungen (SystemTypeLoadException)
Gateway_man antwortete auf Gateway_man's Thema in .NET
Hi, ich bin zwischenzeitlich an mehr Informationen gekommen, die mich aber noch mehr verwirrten. Der Exception Inhalt sieht wie folgt aus: Ich könnt hier echt gleich ausflippen . Zur Laufzeit sagt er mir die Funktion existiert nicht, aber warum wird mir dann die Funktion in der InteliSense Liste angezeigt?! Und warum lässt er mich dann überhaupt compilieren?! Das ist alles mehr als verwirrend. lg Gateway EDIT: Rätsel gelöst. Ich weiß nicht warum aber Visual Studio scheint die Utility Library nicht mehr beim starten des Debug Vorgangs ins lokale Verzeichnis zu kopieren. Warum das so ist weiß ich allerdings nicht. Danke für deine Hilfe.