Laden...

Zugriff auf Objekt durch CLSID oder anders?

Erstellt von alphanimal vor 16 Jahren Letzter Beitrag vor 16 Jahren 8.401 Views
A
alphanimal Themenstarter:in
30 Beiträge seit 2008
vor 16 Jahren
Zugriff auf Objekt durch CLSID oder anders?

Hallo!

Ich bin dabei mich mit der Windows Remoteunterstützung auseinanderzusetzen.
Man kann über das Hilfe und Support Center (C:\Windows\pchealth\helpctr\binaries\HelpCtr.exe) ein Remoteunterstützungs-Ticket erstellen. Man erhält eine .msrcincident Datei und wer diese Datei öffnet kann sich dann per Remotedesktop als "Hilfeassistent" anmelden und den Computer auf dem das Ticket eingerichtet wurde fernsteuern.

Die ganze Prozedur ist in JScript im Hilfe und Support Center implementiert, also im Prinzip Open Source (.htm Dateien unter C:\WINDOWS\pchealth\helpctr verteilt). Ich habe es geschafft durch analyse dieses Codes meine eigene .htm in das Hilfe und Support Center einzubinden die dann völlig automatisch ein Ticket erstellt und die .msrcincident Datei erstellt. Dabei wird von JScript aus auf ein HTML <object> zugegriffen... Speziell sieht das so aus:

<OBJECT id="oSAFClassFactory" height="0" width="0" classid="CLSID:FC7D9E02-3F9E-11d3-93C0-00C04F72DAF7" VIEWASTEXT>

dieses Objekt is dann von JScript aus über die Variable oSAFClassFactory ansprechbar. Ich benötige genau diese 3 Aufrufe:

oSAFClassFactory.CreateObject_RemoteDesktopSession(int string string);
oSAFClassFactory.CreateObject_Channel(string, string);
oSAFClassFactory.CreateObject_Incident();

Das funktioniert, solange die HTML Datei über das HelpCtr aufgerufen wird:
Meine Datei befindet sich unter C:\Windows\pchealth\helpctr\System\test.htm und durch den aufruf von "HelpCtr.exe -url hcp://services/centers/support?topic=hcp://system/test.htm" wird dieses script ausgeführt und ich kann auch auf die Methoden von oSAFClassFactory zugreifen.

Führe ich die Datei außerhalb vom HelpCtr, z.B. im Internet Explorer oder als .hta-Datei aus, erhalte ich eine Exception "Das Objekt unterstützt diese Eigenschaft oder Methode nicht". Da wird das Objekt einfach nicht richtig geladen, wie wenn die CLSID nicht registriert wäre.

Sie ist jedoch registriert, und zeigt auf die HelpCtr.exe.

Jetzt zum c# part 🙂

Ich habe die HelpCtr.exe (C:\Windows\pchealth\helpctr\binaries\HelpCtr.exe) als Verweis in Visual Studio zu einem C# Projekt hinzugefügt und bekomme eine Menge Klassen, Interfaces usw. mit denen ich allerdings nicht viel anfangen kann:

Ich brauche genau diese 3 die ich oben schon i JScript hatte.
Eine suche über den Objektbrowser nach diesen Methoden führt mich zu diesem Interface:
HelpCenterTypeLib.IPCHHelpCenterExternal

Das Problem: Es ist ein Interface und eine Klasse die dieses implementiert ist nicht aufzufinden...

Da ich eher unerfahren in diesen Dingen bin würde ich euch bitten, das mal nachzuvollziehen (Die HelpCtr.exe als Verweis in ein C# Projekt einbinden und versuchen so einen Aufruf zu machen wie ich ihn brauche, z.B. CreateObject_Incident().

Ich habe weiters folgendes Versucht:

Type SAFClassFactory = Type.GetTypeFromCLSID(new Guid("FC7D9E02-3F9E-11d3-93C0-00C04F72DAF7";));
Object obj = System.Activator.CreateInstance(SAFClassFactory);

der Aufruf von CreateInstance schlägt fehl: "Die COM-Klassenfactory für die Komponente mit CLSID {FC7D9E02-3F9E-11D3-93C0-00C04F72DAF7} konnte aufgrund des folgenden Fehlers nicht abgerufen werden: 800401f9."

Egal welchen Grund das hat, es ist möglicherweise der gleiche warum mein JScript im IE oder als .hta nicht funktioniert.

Also ich bitte euch um ein bisschen Unterstützung und würde gerne wissen wie ich das Objekt das durch die CLSID (FC7D9E02-3F9E-11d3-93C0-00C04F72DAF7) im HelpCtr instanziert wird auch anderswo instanzieren kann.

Vielen Dank im Vorraus

Daniel

915 Beiträge seit 2006
vor 16 Jahren

Hrm, bin leider in diesen Bereich nicht bewand und kenne auch das "Windows Hilfe und Support Center" nicht. Aber würde folgendes zuerst mal versuchen.
Statt einen Verweise auf die COM-Bibliotheken zu machen, würde ich eine Wrapper-Assembly verwenden. Diese erzeugst du über das Virsual Studio Tool "TLBIMP.EXE". Im Anschluss kannst du nach dem passenden Schema der COM-Interop-Assembly suchen und einbinden.

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(

A
alphanimal Themenstarter:in
30 Beiträge seit 2008
vor 16 Jahren

Ich habe leider keine Ahnung wovon du redest...

Ich will wissen woran das liegen kann dass das COM Objekt im HelpCtr eingebunden werden kann aber nicht wo anders...

4.506 Beiträge seit 2004
vor 16 Jahren

Hallo alphanimal,

dafür müsste man wissen, wie die COM Dll aufgebaut ist. Eventuell gibt es ein Sicherheitsmerkmal, so dass erst eine Authentifizierung stattfinden muss, bevor Funktionen aus der DLL aufgerufen werden kann.

Versuche mal die DLL per Referenz mittels VisualStudio direkt in einem Testprojekt einzubinden, und versuche dann die Methoden (wie im JScript) aufzurufen. Wenn das funktioniert, dann kannst Du Dir auch den Umweg mit JScript sparen und die COM-Dll direkt verwenden 😉

Um welche Com-Dll handelt es sich eigentlich?

Grüße
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

A
alphanimal Themenstarter:in
30 Beiträge seit 2008
vor 16 Jahren

es handelt sich um CLSID:FC7D9E02-3F9E-11d3-93C0-00C04F72DAF7, und das ist keine DLL sondern die HelpCtr.exe...

Wie soll ich die funktionen aufrufen wenn ich kein Objekt erstellen kann?
Ich brauche genau dieses Objekt, das wie methoden beinhaltet.... in Visual Studio hab ich bis jetzt nur eben dieses Interface gefunden, aber keine Klasse die ich instanzieren könnte... Ist etwas komisch oder?

915 Beiträge seit 2006
vor 16 Jahren

Durch deine "Verweise" die mit ...TypeLib enden, hast du die COM objekte schon eingebunden. Ich hatte nur TypeLibs gelesen und dachte wären auch solche, dabei sind es schon Interop-Assemblys vom .NET Framework.

Dummerweise werden aber interne Fehler ausgelöst beim instanzieren innerhalb des COM objekts. Was sehr naheliegt das norman_timo den Nagel auf dem Kopf getroffen hat. Frag mich jetzt blos nicht wie man diese "Registrierung" hinbekommt (rede nicht von Regsrv 32). Vielleicht hat jemand aber noch dazu eine zündende Idee.

JavaScript dazu:


<html XMLNS:helpcenter>
<head>
<!--
Copyright (c) 2000 Microsoft Corporation
-->
<helpcenter:context id=idCtx />
<title>Remote Assistance</title>
<!-- The SAF class factory object -->
<object classid=CLSID:FC7D9E02-3F9E-11d3-93C0-00C04F72DAF7 height=0 id=objSAFClassFactory width=0></object>
<script LANGUAGE="Javascript">
function onContinue()
{
var g_szWorkstation = null;
var g_szUsername = null;
var c_WorkstationTag = "WORKSTATION=";
var c_UsernameTag = "&USERNAME=";
 
var szArgs = objSAFClassFactory.ExtraArgument;
 
var i = szArgs.indexOf(c_WorkstationTag);
var j = szArgs.indexOf(c_UsernameTag);
g_szWorkstation = szArgs.slice(i+c_WorkstationTag.length, j);
g_szUsername = szArgs.slice(j+c_UsernameTag.length);
 
var i = g_szUsername.indexOf("");
g_szDomainName = g_szUsername.slice(0, i);
g_szUserName = g_szUsername.slice(i+1);
g_szSessionId = -1;
 
g_oSAFRemoteDesktopConnection = objSAFClassFactory.CreateObject_RemoteDesktopConnection();
g_oSAFRemoteConnectionData = g_oSAFRemoteDesktopConnection.ConnectRemoteDesktop(g_szWorkstation);
 
objInc = objSAFClassFactory.CreateObject_Incident();
objInc.RCTicketEncrypted = false;
objInc.RcTicket = g_oSAFRemoteConnectionData.ConnectionParms( g_szWorkstation, g_szUserName, g_szDomainName, -1, "");
var objDict = objInc.Misc;
var d = new Date();
objDict.add("DtStart", Math.round(Date.parse(d)/1000));
objDict.add("DtLength", "60");
objDict.add("Status", "Active");
objDict.add("URA", 1);
objFSO = new ActiveXObject("Scripting.FileSystemObject");
tempDir = objFSO.GetSpecialFolder( 2 );
szIncidentFile = tempDir + "\UnsolicitedRA" + objFSO.GetTempName();
objInc.GetXML(szIncidentFile);
var oShell = new ActiveXObject("WScript.Shell");
var szRAURL = 'C:\WINDOWS\pchealth\helpctr\binaries\helpctr.exe -Mode "hcp://system/Remote Assistance/raura.xml" -url "hcp://system/Remote Assistance/Interaction/Client/RcToolscreen1.htm"' + ' -ExtraArgument "IncidentFile=' + szIncidentFile + '"';
oShell.Run( szRAURL, 1, true );
objFSO.DeleteFile( szIncidentFile );
objSAFClassFactory.close();
return;
}
</script>
</head>
<body onload="onContinue();">
</body>
</html>

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(

A
alphanimal Themenstarter:in
30 Beiträge seit 2008
vor 16 Jahren

Okay sorry ich kenn mich leider überhaupt nicht mehr aus... Das ganze is wohl zu hoch für mich, ich werd das ding im HelpCtr integrieren (also ohne C# und .NET)

danke für die Antworten!
Daniel

4.506 Beiträge seit 2004
vor 16 Jahren

Hallo alphanimal,

keiner soll dumm sterben (mit Ausnahme, man bleibt ewig Single und heißt halt so 😉, hier ein kleiner Ausflug in COM, Typelib und Co:

  • Du hast es geschafft entsprechende Verweise in VS einzubinden, das ist schon einmal ein großer Schritt nach vorne, denn VS erstellt entsprechende Typelibs und Manifeste, so dass man in .NET die Nicht-.Net-Komponente verwenden kann.

Typelibs beinhalten die Definition aller Typen und Methoden, die die Komponente bereitstellt. Das ist so wie die Interfaces in .NET. Das Ganze ist normiert und kann daher auch in .NET verwendet werden (auch andere Baustellen möglich, wie z.B. VBScript etc...)

  • Jetzt kann jeder seine Komponente aufbauen wie er möchte. So kann man auch fremden Zugriff damit schützen, dass man eine Methode anbietet, die eine Authentifizierung (z.B. Username und Passwort) erfordert, bevor man andere Methoden aufrufen kann. Vergleiche dieses verhalten z.B. mit folgender Klasse:

public class COMAuthBehaviour
{
   // Klassenvariable, die sich merkt, ob sich schon einmal
   // angemeldet wurde
   private bool m_Authenticated = false;

   // Methode, die die Anmeldung vornimmt
   public bool Authenticate(String p_Username, String p_Passwort)
   {
      m_Authenticated = ( (p_Username=="norman_timo") && (p_Passwort=="mycsharp") );
      return m_Authenticated;
   }

   // Eine Methode, die die Klasse (COM-Komponente) eigentlich anbietet
   public void MyComponentWork()
   {
      if (!m_Authenticated)
      {
         throw new Exception("Not authenticated!");
      }

      // hier wäre die Funktionalität vorhanden
   }

   // Eine weitere Methode, die die Klasse (COM-Komponente) eigentlich anbietet
   public void MyComponentWork2()
   {
      if (!m_Authenticated)
      {
         throw new Exception("Not authenticated!");
      }

      // hier wäre die Funktionalität vorhanden
   }

}

  • Andreas.May hat nun netterweise den JScript Auszug bereitgestellt, der eine funktionierende Aufrufreihenfolge der Komponente bereitgestellt. Eventuell kann man hieraus lesen, wie und in welcher Reihenfolge die Aufrufe gemacht werden müssen, damit Du ans Ziel kommst.

  • Eventuell hilft Dir auch das VBScript weiter (hab ich in der Registry gefunden unter der von Dir angegeben CLSID). Mein Verdacht erhärtet sich hier, denn bei mir ist es als "Signed VBScript" bezeichnet, was bedeuten würde, dass das Programmteil, das solch Funktionalität nutzen will signiert sein muss.

Viele Grüße, und nicht aufgeben,
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

A
alphanimal Themenstarter:in
30 Beiträge seit 2008
vor 16 Jahren

Danke für den Einblick!!

Ich denke nicht dass die COM Komponente so eine Authentifizierung unterstützt.
Im JScript werden auch keine weiteren Funktionen aufgerufen. Da ist nur in HTML das <object> mit der CLSID und dann wird über dieses Object alle smögliche aufgreufen.

In C# kann ich nicht mal eine Instanz der COM Komponente erstellen, geschweige denn irgendwelche Authentifizierungs-Funktionen darin aufzurufen.

Siehe dazu mein Beispiel:

Type SAFClassFactory = Type.GetTypeFromCLSID(new Guid("FC7D9E02-3F9E-11d3-93C0-00C04F72DAF7";));  
Object obj = System.Activator.CreateInstance(SAFClassFactory);  

der Aufruf von CreateInstance schlägt fehl: "Die COM-Klassenfactory für die Komponente mit CLSID {FC7D9E02-3F9E-11D3-93C0-00C04F72DAF7} konnte aufgrund des folgenden Fehlers nicht abgerufen werden: 800401f9."

folgendes JavaScript funktioniert im HelpCtr:

<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<OBJECT id="oSAFClassFactory" height="0" width="0" classid="CLSID:FC7D9E02-3F9E-11d3-93C0-00C04F72DAF7" VIEWASTEXT>
</OBJECT>

<button onClick="init();">

<SCRIPT Language="JScript">
function init(){
	try{
		var iDuration = 3600; //Secs
		var sVendorID = "CN=Microsoft Corporation,L=Redmond,S=Washington,C=US";
		var sProductID = "Microsoft Remote Assistance";
		
		var oRCSession = oSAFClassFactory.CreateObject_RemoteDesktopSession(iDuration, "", "");
		var oChannel = oSAFClassFactory.CreateObject_Channel(sVendorID, sProductID);
		var incident = oSAFClassFactory.CreateObject_Incident();
	}catch(e){
		alert(e.message);
	}
}
</SCRIPT>
</BODY>
</HTML>

dabei bekomme ich KEINE Exception.

Was bedeutet das mit dem "Signed VBScript" genau?
Kann ich irgendwie meinen C# Code signieren?
Welche Root CAs werden hier akzeptiert bzw. wo trage ich meine eigene ein?

Das scheint mir plausibel dass ich das COM Objekt nicht instanzieren kann wenn da was signiert sein muss!

Gehts weiter oder hab ich dadurch keine Chance? (Will ja das Programm dann auch an den Kunden bringen, ohne überall eine Root CA einzurichten)

Danke!!

und lg
Daniel

4.506 Beiträge seit 2004
vor 16 Jahren

Hallo alphanimal,

ich kann Dir nicht sagen was das für eine Zertifizierungsnorm hier verwendet werden könnte. Ich habe mir Dein konkretes Problem nicht angeschaut (und ich habe aktuell auch keine Zeit dafür, sorry).

Ich bin mir noch nicht ganz im Klaren, ob Dein Versuch eine COM-Instanz zu erzeugen so in Ordnung geht. In .NET geht man bei "normalen" COM Instanzen den Weg, dass man in VS eine COM-Referenz einfügt. Dadurch erstellt VS alle Typbibliotheken, kopiert entsprechende COM-DLL (normalerweise ist COM eine DLL) in das Ausführungsverzeichnis, bildet ein Manifest (Brücke zwischen .NET und unmanaged Code) etc...

Danach kann man über den angegebenen Namespace ganz normal Instanzen von entsprechend freigegebenen Klassen erzeugen, als würde man eine normale Klasse instanziieren.

Im JScript Code macht das automatisch folgende Zeile:

<OBJECT id="oSAFClassFactory" height="0" width="0" classid="CLSID:FC7D9E02-3F9E-11d3-93C0-00C04F72DAF7" VIEWASTEXT>
</OBJECT>

In .NET muss man hier ein Verweis einführen.

--> In Deinem Fall gibt es keine DLL, und da weiß ich ehrlich gesagt nicht, ob VS hier diese Vorgehensweise unterstützt.

Ich hab mal geschaut, bei mir ist das Help Center unter folgendem Verzeichnis zu finden:
C:\WINDOWS\PCHealth\HelpCtr\Binaries

Dort gibt es noch gewisse DLL's. Eventuell sind diese dafür verantwortlich, ich weiß es wie gesagt nicht. Aber ich denke bei einer EXE hast Du definitiv verloren. Auch ein Typbibliothek Export mittels dem Tool 'tlbimp.exe' schlägt fehl, weil es zwingend eine Dll benötigt.

Ich denke, dass ein Signierungsproblem erst später relevant werden könnte. Erst einmal solltest Du nochmal recherchieren, welche Dll nun wirklich für den ganzen Zauber verantwortlich ist. Falls es keine Dll gibt, wirst Du damit leben müssen, dass es nicht geht.

Grüße
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

915 Beiträge seit 2006
vor 16 Jahren

Hab mal etwas rumprobiert und klappen tut es einfach nicht, wie gesagt wird eine interne Fehlermeldung ausgelöst. Dagegen machen kannst nichts.

Aber könntest versuchen etwas zu tricksen, einfach ein UserControl zu erzeugen und dort die Webbrowserkomponente einbinden, dort dann das JavaScript ausführen und dir etwas entsprechendes zurückliefern. Evtl. mit WebRequest und HttpWebResponse oder etwas ähnlichen, mit dem Thema Web habe ich mich in .Net noch nicht beschäfftigt. Aber würde einfach mal versuchen darüber einen leichteren Weg zu generieren.

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(

A
alphanimal Themenstarter:in
30 Beiträge seit 2008
vor 16 Jahren

Okay werd mit die DLLs in dem HelpCtr\Binaries Verzeichnis mal anschaun...

Das komische ist ja dass es in JScript auch nur im HelpCtr funktioniert!
Wenn ich den gleichen Code als .html im Internet Explorer ausführe bekomme ich auch keine Instanz von dem Objekt (Es hat dann nur die standardeigenschaften von nem <object>-Tag, aber die Methoden lassen sich nicht aufrufen: Exception: "Das Objekt unterstützt diese Eigenschaft oder Methode nicht")

also denk ich das das problem schon früher anzusetzen ist.

Bis jetzt hab ich es eben nur im HelpCtr zum laufen gebracht indem ich die .htm Datei nach "C:\WINDOWS\pchealth\helpctr\System\ras.htm" kopiert habe und dann mit folgendem Command ausführe:

"C:\WINDOWS\pchealth\helpctr\Binaries\HelpCtr.exe -url hcp://system/ras.htm"

Was ich jetzt noch versucht habe:
Wenn ich die HelpCtr.exe kopiere und sie HelpCtr2.exe benenne, und dann über diese EXE das ding starten will (%windir%\pchealth\helpctr\Binaries\HelpCtr2.exe -url hcp://system/ras.htm)
Dann bekomm ich eine JScript Exception "Erlaubnis verweigert"

kann es sein dass das COM Objekt selbst beim Instanzieren die EXE überprüft von der es ausgeführt wird?

4.506 Beiträge seit 2004
vor 16 Jahren

Hallo alphanimal,

kann es sein dass das COM Objekt selbst beim Instanzieren die EXE überprüft von der es ausgeführt wird?

Kann durchaus sein, ich würde eher auf die Signierung tippen. Die Signierung wird höchstwahrscheinlich ungültig, wenn Du die EXE kopierst und ihr einen anderen Namen gibst.

Ich würde den Ansatz von Andreas.May verfolgen und versuchen mit einem UserControl ans Ziel zu kommen.

Funktioniert das JScript eigentlich nur im Internet Explorer? Ich würde mal stark vermuten, dann ist es mehr oder weniger bestätigt, dass es sich um einen MS-Spezifischen Zugriff handelt. (Typisch MS: auf jeden Fall die Funktionalität verbergen und ja nichts von außen Zugreifbar machen).

Viele Grüße
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

A
alphanimal Themenstarter:in
30 Beiträge seit 2008
vor 16 Jahren

Funktioniert das JScript eigentlich nur im Internet Explorer?

Nein es funktioniert nur im HelpCtr!!
Im IE gehts nicht! und auch nicht als HTA!

4.506 Beiträge seit 2004
vor 16 Jahren

Hallo alphanimal,

Nein es funktioniert nur im HelpCtr!!
Im IE gehts nicht! und auch nicht als HTA!

Dann würde ich auch nichts weiter versuchen, sondern abstempeln und als unmöglich deklarieren.

Das ist wieder einmal schade, dass MS so engstirnig und egozentrisch denkt, aber mit .NET machen sie nun endlich auch einmal andere Erfahrungen, vielleicht ändert es sich in einer der nächsten Windows Versionen, wer weiß.

Tut mir leid in Deiner Sache.

Grüße
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

A
alphanimal Themenstarter:in
30 Beiträge seit 2008
vor 16 Jahren

Dann würde ich auch nichts weiter versuchen, sondern abstempeln und als unmöglich deklarieren.

Das hab ich schon in Beitrag Nr. 7 😉 Aber wäre trotzdem interessant 1. warum es nicht geht und 2. ob es nicht vl doch irgendwie geht!

... Wegen den Signaturen ist mir aufgefallen das keine der exe oder dlls in dem HelpCtr Binaries Ordner zu finden ist die irgendwie eine Signatur hat.

4.506 Beiträge seit 2004
vor 16 Jahren

Hallo alphanimal,

ich habe keine Ahnung, ob das mit der Signatur auch wirklich so in der Tat stimmt. Ich habe mich auf die Angabe (siehe angehängtes Bild) berufen und einfach mal ein Schuß ins Blaue gewagt 😉

Nichtsdestotrotz kann ich mir gut vorstellen, dass es einfach nicht geht.

Grüße
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

A
alphanimal Themenstarter:in
30 Beiträge seit 2008
vor 16 Jahren

Du bist beim falschen Eintrag oder?

bei mir steht bei der im JScript verwendeten CLSID "Bootstrapper Class"
FC7D9E02-....

du bist bei FC7D9F02-....

4.506 Beiträge seit 2004
vor 16 Jahren

Hallo alphanimal,

ja das ist das von mir genannte VBScript, und nicht das JScript, das unter Deinem Eintrag zu finden ist.

Aber ich behaupte dass diese Einträge alle zusammen gehören. Sie müssen natürlich aber unterscheidbar sein, weil die CLSID eindeutig sein muss.

Grüße
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

A
alphanimal Themenstarter:in
30 Beiträge seit 2008
vor 16 Jahren

Hat jemand einen Account auf experts-exchange.com? 🙂

http://www.experts-exchange.com/Programming/Misc/Q_21621465.html

angeblich gibts da eine lösung

4.506 Beiträge seit 2004
vor 16 Jahren

Hallo zusammen,

also ich kann die Antworten auf Experts-Exchange auch ohne dortigen Account lesen. Ich verwende den Firefox 2.0.0.12 und die lesbaren Antworten befinden sich gaaaannnz unten (weit scrollen!).

Grüße
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

A
alphanimal Themenstarter:in
30 Beiträge seit 2008
vor 16 Jahren

ahja cool 🙂
dachte wenn man geld dafür verlangt dass man lösungen herzeigt sollte man die lösungen nicht einfach so veröffentlichen

versteh ich nicht, aber egal, die lösung hilft mir sowieso nicht...