Theos PowerBasic Museum 2017

Archive => Discussion - Legacy Software (PBWIN 9.0+/PBCC 5.0+) => Topic started by: Carlo Pagani on September 10, 2008, 07:52:30 PM

Title: RE:Loading the Common Language Runtime into a Process
Post by: Carlo Pagani on September 10, 2008, 07:52:30 PM
Hi Jose

Can you give a bit of background on this. Is the purpose of this to allow access to a managed object in .NET? I would like to state in public that I think you are a genius and thank you so much for all your contributions!
Title: Re: RE:Loading the Common Language Runtime into a Process
Post by: José Roca on September 10, 2008, 08:52:59 PM
 
Thanks for your compliments.

Yes, this is the purpose. The code posted demonstrates how to host the CLR, create an instance of a system class and call its methods and properties. The next step should be to explore the usage of the CreateInstanceFrom method to load an assembly from disk and create an instance of one of its classes. This will be a bit tougher to me because I will need assemblies to test and I'm not a .NET programmer.
Title: Re: RE:Loading the Common Language Runtime into a Process
Post by: Edwin Knoppert on September 10, 2008, 09:13:47 PM
.Net - Minimal custom class (with compile bat):
http://www.hellobasic.com/cgi-bin/forum/YaBB.pl?board=VDExamples;action=display;num=1193174377
(You don't need VWD or VS for this, just a textfile and bat file)


OLEDB stuff:
http://www.hellobasic.com/cgi-bin/forum/YaBB.pl?board=VDExamples;action=display;num=1193227199
Title: Re: RE:Loading the Common Language Runtime into a Process
Post by: Greg Lyon on September 10, 2008, 09:17:38 PM
Yes, this is very cool José. Thanks for posting an example of how to do this. You are a genius.

Title: Re: RE:Loading the Common Language Runtime into a Process
Post by: Greg Lyon on September 10, 2008, 10:19:32 PM
I'm running into a brick wall trying to create an instance of System.DateTime. Any ideas?


LOCAL oDt AS DISPATCH

oDt = pCLRHost.CreateInstance("mscorlib", "System.DateTime")
Title: Re: RE:Loading the Common Language Runtime into a Process
Post by: Edwin Knoppert on September 10, 2008, 10:29:43 PM
It's fairly difficult to use these kind of static classes.
also.. the .NET implementation will have an intermediate part which provides a com interface.
Several parts will therefore pretty hard to do.
One of the solutions is making use of a wrapper assembly with easier methods than the original classes.
.NET is also able to load assemblies from memory, this makes as it where static linking.
Title: Re: RE:Loading the Common Language Runtime into a Process
Post by: José Roca on September 10, 2008, 10:39:47 PM
System.DateTime if not a cocreatable class, but an structure. This is a list of the ProgIDs in mscorlib:


' CLSID = {4C3EBFD5-FC72-33DC-BC37-9953EB25B8D7}
$PROGID_SystemAccessViolationExceptionAccessViolationException = "System.AccessViolationException"
' CLSID = {C03880A5-0B5E-39AD-954A-CE0DCBD5EF7D}
$PROGID_SystemAppDomainManagerAppDomainManager = "System.AppDomainManager"
' CLSID = {3E8E0F03-D3FD-3A93-BAE0-C74A6494DBCA}
$PROGID_SystemAppDomainSetupAppDomainSetup = "System.AppDomainSetup"
' CLSID = {61B3E12B-3586-3A58-A497-7ED7C4C794B9}
$PROGID_SystemAppDomainUnloadedExceptionAppDomainUnloadedException = "System.AppDomainUnloadedException"
' CLSID = {682D63B8-1692-31BE-88CD-5CB1F79EDB7B}
$PROGID_SystemApplicationExceptionApplicationException = "System.ApplicationException"
' CLSID = {3FDCEEC6-B14B-37E2-BB69-ABC7CA0DA22F}
$PROGID_SystemArgumentExceptionArgumentException = "System.ArgumentException"
' CLSID = {3BD1F243-9BC4-305D-9B1C-0D10C80329FC}
$PROGID_SystemArgumentNullExceptionArgumentNullException = "System.ArgumentNullException"
' CLSID = {74BDD0B9-38D7-3FDA-A67E-D404EE684F24}
$PROGID_SystemArgumentOutOfRangeExceptionArgumentOutOfRangeException = "System.ArgumentOutOfRangeException"
' CLSID = {647053C3-1879-34D7-AE57-67015C91FC70}
$PROGID_SystemArithmeticExceptionArithmeticException = "System.ArithmeticException"
' CLSID = {676E1164-752C-3A74-8D3F-BCD32A2026D6}
$PROGID_SystemArrayTypeMismatchExceptionArrayTypeMismatchException = "System.ArrayTypeMismatchException"
' CLSID = {E9148312-A9BF-3A45-BBCA-350967FD78F5}
$PROGID_SystemBadImageFormatExceptionBadImageFormatException = "System.BadImageFormatException"
' CLSID = {29C69707-875F-3678-8F01-283094A2DFB1}
$PROGID_SystemCannotUnloadAppDomainExceptionCannotUnloadAppDomainException = "System.CannotUnloadAppDomainException"
' CLSID = {6896B49D-7AFB-34DC-934E-5ADD38EEEE39}
$PROGID_SystemArrayListArrayList = "System.Collections.ArrayList"
' CLSID = {35E946E4-7CDA-3824-8B24-D799A96309AD}
$PROGID_SystemCaseInsensitiveComparerCaseInsensitiveComparer = "System.Collections.CaseInsensitiveComparer"
' CLSID = {47D3C68D-7D85-3227-A9E7-88451D6BADFC}
$PROGID_SystemCaseInsensitiveHashCodeProviderCaseInsensitiveHashCodeProvider = "System.Collections.CaseInsensitiveHashCodeProvider"
' CLSID = {0D52ABE3-3C93-3D94-A744-AC44850BACCD}
$PROGID_SystemKeyNotFoundExceptionKeyNotFoundException = "System.Collections.Generic.KeyNotFoundException"
' CLSID = {146855FA-309F-3D0E-BB3E-DF525F30A715}
$PROGID_SystemHashtableHashtable = "System.Collections.Hashtable"
' CLSID = {7F976B72-4B71-3858-BEE8-8E3A3189A651}
$PROGID_SystemQueueQueue = "System.Collections.Queue"
' CLSID = {026CC6D7-34B2-33D5-B551-CA31EB6CE345}
$PROGID_SystemSortedListSortedList = "System.Collections.SortedList"
' CLSID = {4599202D-460F-3FB7-8A1C-C2CC6ED6C7C8}
$PROGID_SystemStackStack = "System.Collections.Stack"
' CLSID = {CBEAA915-4D2C-3F77-98E8-A258B0FD3CEF}
$PROGID_SystemContextMarshalExceptionContextMarshalException = "System.ContextMarshalException"
' CLSID = {96705EE3-F7AB-3E9A-9FB2-AD1D536E901A}
$PROGID_SystemContextStaticAttributeContextStaticAttribute = "System.ContextStaticAttribute"
' CLSID = {AAD4BDD3-81AA-3ABC-B53B-D904D25BC01E}
$PROGID_SystemDataMisalignedExceptionDataMisalignedException = "System.DataMisalignedException"
' CLSID = {91F672A3-6B82-3E04-B2D7-BAC5D6676609}
$PROGID_SystemDebuggerDebugger = "System.Diagnostics.Debugger"
' CLSID = {41970D73-92F6-36D9-874D-3BD0762A0D6F}
$PROGID_SystemDebuggerHiddenAttributeDebuggerHiddenAttribute = "System.Diagnostics.DebuggerHiddenAttribute"
' CLSID = {29625281-51CE-3F8A-AC4D-E360CACB92E2}
$PROGID_SystemDebuggerNonUserCodeAttributeDebuggerNonUserCodeAttribute = "System.Diagnostics.DebuggerNonUserCodeAttribute"
' CLSID = {1B979846-AAEB-314B-8E63-D44EF1CB9EFC}
$PROGID_SystemDebuggerStepperBoundaryAttributeDebuggerStepperBoundaryAttribute = "System.Diagnostics.DebuggerStepperBoundaryAttribute"
' CLSID = {93F551D6-2F9E-301B-BE63-85AEF508CAE0}
$PROGID_SystemDebuggerStepThroughAttributeDebuggerStepThroughAttribute = "System.Diagnostics.DebuggerStepThroughAttribute"
' CLSID = {14910622-09D4-3B4A-8C1E-9991DBDCC553}
$PROGID_SystemStackFrameStackFrame = "System.Diagnostics.StackFrame"
' CLSID = {405C2D81-315B-3CB0-8442-EF5A38D4C3B8}
$PROGID_SystemStackTraceStackTrace = "System.Diagnostics.StackTrace"
' CLSID = {40AE2088-CE00-33AD-9320-5D201CB46FC9}
$PROGID_SystemSymDocumentTypeSymDocumentType = "System.Diagnostics.SymbolStore.SymDocumentType"
' CLSID = {5A18D43E-115B-3B8B-8245-9A06B204B717}
$PROGID_SystemSymLanguageTypeSymLanguageType = "System.Diagnostics.SymbolStore.SymLanguageType"
' CLSID = {DFD888A7-A6B0-3B1B-985E-4CDAB0E4C17D}
$PROGID_SystemSymLanguageVendorSymLanguageVendor = "System.Diagnostics.SymbolStore.SymLanguageVendor"
' CLSID = {F6914A11-D95D-324F-BA0F-39A374625290}
$PROGID_SystemDivideByZeroExceptionDivideByZeroException = "System.DivideByZeroException"
' CLSID = {46E97093-B2EC-3787-A9A5-470D1A27417C}
$PROGID_SystemDllNotFoundExceptionDllNotFoundException = "System.DllNotFoundException"
' CLSID = {CC20C6DF-A054-3F09-A5F5-A3B5A25F4CE6}
$PROGID_SystemDuplicateWaitObjectExceptionDuplicateWaitObjectException = "System.DuplicateWaitObjectException"
' CLSID = {AD326409-BF80-3E0C-BA6F-EE2C33B675A5}
$PROGID_SystemEntryPointNotFoundExceptionEntryPointNotFoundException = "System.EntryPointNotFoundException"
' CLSID = {3FB717AF-9D21-3016-871A-DF817ABDDD51}
$PROGID_SystemEventArgsEventArgs = "System.EventArgs"
' CLSID = {A1C0A095-DF97-3441-BFC1-C9F194E494DB}
$PROGID_SystemExceptionException = "System.Exception"
' CLSID = {E786FB32-B659-3D96-94C4-E1A9FC037868}
$PROGID_SystemExecutionEngineExceptionExecutionEngineException = "System.ExecutionEngineException"
' CLSID = {BDA7BEE5-85F1-3B66-B610-DDF1D5898006}
$PROGID_SystemFieldAccessExceptionFieldAccessException = "System.FieldAccessException"
' CLSID = {66CE75D4-0334-3CA6-BCA8-CE9AF28A4396}
$PROGID_SystemFlagsAttributeFlagsAttribute = "System.FlagsAttribute"
' CLSID = {964AA3BD-4B12-3E23-9D7F-99342AFAE812}
$PROGID_SystemFormatExceptionFormatException = "System.FormatException"
' CLSID = {70A738D1-1BC5-3175-BD42-603E2B82C08B}
$PROGID_SystemDateTimeFormatInfoDateTimeFormatInfo = "System.Globalization.DateTimeFormatInfo"
' CLSID = {68F8AEA9-1968-35B9-8A0E-6FDC637A4F8E}
$PROGID_SystemGregorianCalendarGregorianCalendar = "System.Globalization.GregorianCalendar"
' CLSID = {2206D773-CA1C-3258-9456-CEB7706C3710}
$PROGID_SystemHebrewCalendarHebrewCalendar = "System.Globalization.HebrewCalendar"
' CLSID = {EE832CE3-06CA-33EF-8F01-61C7C218BD7E}
$PROGID_SystemHijriCalendarHijriCalendar = "System.Globalization.HijriCalendar"
' CLSID = {374050DD-6190-3257-8812-8230BF095147}
$PROGID_SystemJapaneseCalendarJapaneseCalendar = "System.Globalization.JapaneseCalendar"
' CLSID = {5C3E6CE8-B218-3762-883C-91BC987CDC2D}
$PROGID_SystemJulianCalendarJulianCalendar = "System.Globalization.JulianCalendar"
' CLSID = {1A06A4DC-E239-3717-89E1-D0683F3A5320}
$PROGID_SystemKoreanCalendarKoreanCalendar = "System.Globalization.KoreanCalendar"
' CLSID = {146A47AB-A2CF-3587-BB25-2B286D7566B4}
$PROGID_SystemNumberFormatInfoNumberFormatInfo = "System.Globalization.NumberFormatInfo"
' CLSID = {31C967B5-2F8A-3957-9C6D-34A0731DB36C}
$PROGID_SystemStringInfoStringInfo = "System.Globalization.StringInfo"
' CLSID = {769B8B68-64F7-3B61-B744-160A9FCC3216}
$PROGID_SystemTaiwanCalendarTaiwanCalendar = "System.Globalization.TaiwanCalendar"
' CLSID = {EC3DAC94-DF80-3017-B381-B13DCED6C4D8}
$PROGID_SystemThaiBuddhistCalendarThaiBuddhistCalendar = "System.Globalization.ThaiBuddhistCalendar"
' CLSID = {5CA9971B-2DC3-3BC8-847A-5E6D15CBB16E}
$PROGID_SystemIndexOutOfRangeExceptionIndexOutOfRangeException = "System.IndexOutOfRangeException"
' CLSID = {7F6BCBE5-EB30-370B-9F1B-92A6265AFEDD}
$PROGID_SystemInvalidCastExceptionInvalidCastException = "System.InvalidCastException"
' CLSID = {9546306B-1B68-33AF-80DB-3A9206501515}
$PROGID_SystemInvalidOperationExceptionInvalidOperationException = "System.InvalidOperationException"
' CLSID = {91591469-EFEF-3D63-90F9-88520F0AA1EF}
$PROGID_SystemInvalidProgramExceptionInvalidProgramException = "System.InvalidProgramException"
' CLSID = {8833BC41-DC6B-34B9-A799-682D2554F02F}
$PROGID_SystemDirectoryNotFoundExceptionDirectoryNotFoundException = "System.IO.DirectoryNotFoundException"
' CLSID = {A8F9F740-70C9-30A7-937C-59785A9BB5A4}
$PROGID_SystemDriveNotFoundExceptionDriveNotFoundException = "System.IO.DriveNotFoundException"
' CLSID = {58D052BC-A3DF-3508-AC95-FF297BDC9F0C}
$PROGID_SystemEndOfStreamExceptionEndOfStreamException = "System.IO.EndOfStreamException"
' CLSID = {AF8C5F8A-9999-3E92-BB41-C5F4955174CD}
$PROGID_SystemFileLoadExceptionFileLoadException = "System.IO.FileLoadException"
' CLSID = {48C6E96F-A2F3-33E7-BA7F-C8F74866760B}
$PROGID_SystemFileNotFoundExceptionFileNotFoundException = "System.IO.FileNotFoundException"
' CLSID = {A164C0BF-67AE-3C7E-BC05-BFE24A8CDB62}
$PROGID_SystemIOExceptionIOException = "System.IO.IOException"
' CLSID = {4479C009-4CC3-39A2-8F92-DFCDF034F748}
$PROGID_SystemIsolatedStorageExceptionIsolatedStorageException = "System.IO.IsolatedStorage.IsolatedStorageException"
' CLSID = {F5E692D9-8A87-349D-9657-F96E5799D2F4}
$PROGID_SystemMemoryStreamMemoryStream = "System.IO.MemoryStream"
' CLSID = {C016A313-9606-36D3-A823-33EBF5006189}
$PROGID_SystemPathTooLongExceptionPathTooLongException = "System.IO.PathTooLongException"
' CLSID = {27F31D55-D6C6-3676-9D42-C40F3A918636}
$PROGID_SystemStringWriterStringWriter = "System.IO.StringWriter"
' CLSID = {0FF66430-C796-3EE7-902B-166C402CA288}
$PROGID_SystemMemberAccessExceptionMemberAccessException = "System.MemberAccessException"
' CLSID = {92E76A74-2622-3AA9-A3CA-1AE8BD7BC4A8}
$PROGID_SystemMethodAccessExceptionMethodAccessException = "System.MethodAccessException"
' CLSID = {8D36569B-14D6-3C3D-B55C-9D02A45BFC3D}
$PROGID_SystemMissingFieldExceptionMissingFieldException = "System.MissingFieldException"
' CLSID = {CDC70043-D56B-3799-B7BD-6113BBCA160A}
$PROGID_SystemMissingMemberExceptionMissingMemberException = "System.MissingMemberException"
' CLSID = {58897D76-EF6C-327A-93F7-6CD66C424E11}
$PROGID_SystemMissingMethodExceptionMissingMethodException = "System.MissingMethodException"
' CLSID = {B406AC70-4D7E-3D24-B241-AEAEAC343BD9}
$PROGID_SystemMTAThreadAttributeMTAThreadAttribute = "System.MTAThreadAttribute"
' CLSID = {9DA2F8B8-59F0-3852-B509-0663E3BF643B}
$PROGID_SystemMulticastNotSupportedExceptionMulticastNotSupportedException = "System.MulticastNotSupportedException"
' CLSID = {CC77F5F3-222D-3586-88C3-410477A3B65D}
$PROGID_SystemNonSerializedAttributeNonSerializedAttribute = "System.NonSerializedAttribute"
' CLSID = {7E34AB89-0684-3B86-8A0F-E638EB4E6252}
$PROGID_SystemNotFiniteNumberExceptionNotFiniteNumberException = "System.NotFiniteNumberException"
' CLSID = {F8BE2AD5-4E99-3E00-B10E-7C54D31C1C1D}
$PROGID_SystemNotImplementedExceptionNotImplementedException = "System.NotImplementedException"
' CLSID = {DAFB2462-2A5B-3818-B17E-602984FE1BB0}
$PROGID_SystemNotSupportedExceptionNotSupportedException = "System.NotSupportedException"
' CLSID = {7F71DB2D-1EA0-3CAE-8087-26095F5215E6}
$PROGID_SystemNullReferenceExceptionNullReferenceException = "System.NullReferenceException"
' CLSID = {81C5FE01-027C-3E1C-98D5-DA9C9862AA21}
$PROGID_SystemObjectObject = "System.Object"
' CLSID = {08295C62-7462-3633-B35E-7AE68ACA3948}
$PROGID_SystemObsoleteAttributeObsoleteAttribute = "System.ObsoleteAttribute"
' CLSID = {11581718-2434-32E3-B559-E86CE9923744}
$PROGID_SystemOperationCanceledExceptionOperationCanceledException = "System.OperationCanceledException"
' CLSID = {CCF306AE-33BD-3003-9CCE-DAF5BEFEF611}
$PROGID_SystemOutOfMemoryExceptionOutOfMemoryException = "System.OutOfMemoryException"
' CLSID = {4286FA72-A2FA-3245-8751-D4206070A191}
$PROGID_SystemOverflowExceptionOverflowException = "System.OverflowException"
' CLSID = {3495E5FA-2A90-3CA7-B3B5-58736C4441DD}
$PROGID_SystemParamArrayAttributeParamArrayAttribute = "System.ParamArrayAttribute"
' CLSID = {A36738B5-FA8F-3316-A929-68099A32B43B}
$PROGID_SystemPlatformNotSupportedExceptionPlatformNotSupportedException = "System.PlatformNotSupportedException"
' CLSID = {4E77EC8F-51D8-386C-85FE-7DC931B7A8E7}
$PROGID_SystemRandomRandom = "System.Random"
' CLSID = {C9F61CBD-287F-3D24-9FEB-2C3F347CF570}
$PROGID_SystemRankExceptionRankException = "System.RankException"
' CLSID = {2846AE5E-A9FA-36CF-B2D1-6E95596DBDE7}
$PROGID_SystemAmbiguousMatchExceptionAmbiguousMatchException = "System.Reflection.AmbiguousMatchException"
' CLSID = {F12FDE6A-9394-3C32-8E4D-F3D470947284}
$PROGID_SystemAssemblyNameAssemblyName = "System.Reflection.AssemblyName"
' CLSID = {3F4A4283-6A08-3E90-A976-2C2D3BE4EB0B}
$PROGID_SystemAssemblyNameProxyAssemblyNameProxy = "System.Reflection.AssemblyNameProxy"
' CLSID = {D5CB383D-99F4-3C7E-A9C3-85B53661448F}
$PROGID_SystemCustomAttributeFormatExceptionCustomAttributeFormatException = "System.Reflection.CustomAttributeFormatException"
' CLSID = {7B938A6F-77BF-351C-A712-69483C91115D}
$PROGID_SystemInvalidFilterCriteriaExceptionInvalidFilterCriteriaException = "System.Reflection.InvalidFilterCriteriaException"
' CLSID = {93D11DE9-5F6C-354A-A7C5-16CCCA64A9B8}
$PROGID_SystemObfuscationAttributeObfuscationAttribute = "System.Reflection.ObfuscationAttribute"
' CLSID = {0D23F8B4-F2A6-3EFF-9D37-BDF79AC6B440}
$PROGID_SystemTargetExceptionTargetException = "System.Reflection.TargetException"
' CLSID = {DA317BE2-1A0D-37B3-83F2-A0F32787FC67}
$PROGID_SystemTargetParameterCountExceptionTargetParameterCountException = "System.Reflection.TargetParameterCountException"
' CLSID = {726BBDF4-6C6D-30F4-B3A0-F14D6AEC08C7}
$PROGID_SystemMissingManifestResourceExceptionMissingManifestResourceException = "System.Resources.MissingManifestResourceException"
' CLSID = {D41969A6-C394-34B9-BD24-DD408F39F261}
$PROGID_SystemMissingSatelliteAssemblyExceptionMissingSatelliteAssemblyException = "System.Resources.MissingSatelliteAssemblyException"
' CLSID = {A3A1F076-1FA7-3A26-886D-8841CB45382F}
$PROGID_SystemCallConvCdeclCallConvCdecl = "System.Runtime.CompilerServices.CallConvCdecl"
' CLSID = {ED0BC45C-2438-31A9-BBB6-E2A3B5916419}
$PROGID_SystemCallConvFastcallCallConvFastcall = "System.Runtime.CompilerServices.CallConvFastcall"
' CLSID = {BCB67D4D-2096-36BE-974C-A003FC95041B}
$PROGID_SystemCallConvStdcallCallConvStdcall = "System.Runtime.CompilerServices.CallConvStdcall"
' CLSID = {46080CA7-7CB8-3A55-A72E-8E50ECA4D4FC}
$PROGID_SystemCallConvThiscallCallConvThiscall = "System.Runtime.CompilerServices.CallConvThiscall"
' CLSID = {4B601364-A04B-38BC-BD38-A18E981324CF}
$PROGID_SystemCompilerGlobalScopeAttributeCompilerGlobalScopeAttribute = "System.Runtime.CompilerServices.CompilerGlobalScopeAttribute"
' CLSID = {837A6733-1675-3BC9-BBF8-13889F84DAF4}
$PROGID_SystemDiscardableAttributeDiscardableAttribute = "System.Runtime.CompilerServices.DiscardableAttribute"
' CLSID = {E947A0B0-D47F-3AA3-9B77-4624E0F3ACA4}
$PROGID_SystemIDispatchConstantAttributeIDispatchConstantAttribute = "System.Runtime.CompilerServices.IDispatchConstantAttribute"
' CLSID = {590E4A07-DAFC-3BE7-A178-DA349BBA980B}
$PROGID_SystemIUnknownConstantAttributeIUnknownConstantAttribute = "System.Runtime.CompilerServices.IUnknownConstantAttribute"
' CLSID = {48D0CFE7-3128-3D2C-A5B5-8C7B82B4AB4F}
$PROGID_SystemMethodImplAttributeMethodImplAttribute = "System.Runtime.CompilerServices.MethodImplAttribute"
' CLSID = {C437AB2E-865B-321D-BA15-0C8EC4CA119B}
$PROGID_SystemNativeCppClassAttributeNativeCppClassAttribute = "System.Runtime.CompilerServices.NativeCppClassAttribute"
' CLSID = {1D09B407-A97F-378A-ACCB-82CA0082F9F3}
$PROGID_SystemApplicationActivatorApplicationActivator = "System.Runtime.Hosting.ApplicationActivator"
' CLSID = {8A3FD229-B2A9-347F-93D2-87F3B7F92753}
$PROGID_SystemComConversionLossAttributeComConversionLossAttribute = "System.Runtime.InteropServices.ComConversionLossAttribute"
' CLSID = {07F94112-A42E-328B-B508-702EF62BCC29}
$PROGID_SystemCOMExceptionCOMException = "System.Runtime.InteropServices.COMException"
' CLSID = {F1EBA909-6621-346D-9CE2-39F266C9D011}
$PROGID_SystemComImportAttributeComImportAttribute = "System.Runtime.InteropServices.ComImportAttribute"
' CLSID = {630A3EF1-23C6-31FE-9D25-294E3B3E7486}
$PROGID_SystemComRegisterFunctionAttributeComRegisterFunctionAttribute = "System.Runtime.InteropServices.ComRegisterFunctionAttribute"
' CLSID = {8F45C7FF-1E6E-34C1-A7CC-260985392A05}
$PROGID_SystemComUnregisterFunctionAttributeComUnregisterFunctionAttribute = "System.Runtime.InteropServices.ComUnregisterFunctionAttribute"
' CLSID = {AFC681CF-E82F-361A-8280-CF4E1F844C3E}
$PROGID_SystemExternalExceptionExternalException = "System.Runtime.InteropServices.ExternalException"
' CLSID = {96A058CD-FAF7-386C-85BF-E47F00C81795}
$PROGID_SystemInAttributeInAttribute = "System.Runtime.InteropServices.InAttribute"
' CLSID = {A7248EC6-A8A5-3D07-890E-6107F8C247E5}
$PROGID_SystemInvalidComObjectExceptionInvalidComObjectException = "System.Runtime.InteropServices.InvalidComObjectException"
' CLSID = {9A944885-EDAF-3A81-A2FF-6A9D5D1ABFC7}
$PROGID_SystemInvalidOleVariantTypeExceptionInvalidOleVariantTypeException = "System.Runtime.InteropServices.InvalidOleVariantTypeException"
' CLSID = {742AD1FB-B2F0-3681-B4AA-E736A3BCE4E1}
$PROGID_SystemMarshalDirectiveExceptionMarshalDirectiveException = "System.Runtime.InteropServices.MarshalDirectiveException"
' CLSID = {B81CB5ED-E654-399F-9698-C83C50665786}
$PROGID_SystemOptionalAttributeOptionalAttribute = "System.Runtime.InteropServices.OptionalAttribute"
' CLSID = {FDB2DC94-B5A0-3702-AE84-BBFA752ACB36}
$PROGID_SystemOutAttributeOutAttribute = "System.Runtime.InteropServices.OutAttribute"
' CLSID = {204D5A28-46A0-3F04-BD7C-B5672631E57F}
$PROGID_SystemPreserveSigAttributePreserveSigAttribute = "System.Runtime.InteropServices.PreserveSigAttribute"
' CLSID = {475E398F-8AFA-43A7-A3BE-F4EF8D6787C9}
$PROGID_SystemRegistrationServicesRegistrationServices = "System.Runtime.InteropServices.RegistrationServices"
' CLSID = {78D22140-40CF-303E-BE96-B3AC0407A34D}
$PROGID_SystemRuntimeEnvironmentRuntimeEnvironment = "System.Runtime.InteropServices.RuntimeEnvironment"
' CLSID = {4BE89AC3-603D-36B2-AB9B-9C38866F56D5}
$PROGID_SystemSafeArrayRankMismatchExceptionSafeArrayRankMismatchException = "System.Runtime.InteropServices.SafeArrayRankMismatchException"
' CLSID = {2D5EC63C-1B3E-3EE4-9052-EB0D0303549C}
$PROGID_SystemSafeArrayTypeMismatchExceptionSafeArrayTypeMismatchException = "System.Runtime.InteropServices.SafeArrayTypeMismatchException"
' CLSID = {CA805B13-468C-3A22-BF9A-818E97EFA6B7}
$PROGID_SystemSEHExceptionSEHException = "System.Runtime.InteropServices.SEHException"
' CLSID = {9D309F77-4655-372E-84B0-B0FB4030F3B8}
$PROGID_SystemSetWin32ContextInIDispatchAttributeSetWin32ContextInIDispatchAttribute = "System.Runtime.InteropServices.SetWin32ContextInIDispatchAttribute"
' CLSID = {F1C3BF79-C3E4-11D3-88E7-00902754C43A}
$PROGID_SystemTypeLibConverterTypeLibConverter = "System.Runtime.InteropServices.TypeLibConverter"
' CLSID = {DD5856E5-8151-3334-B8E9-07CB152B20A4}
$PROGID_SystemClientChannelSinkStackClientChannelSinkStack = "System.Runtime.Remoting.Channels.ClientChannelSinkStack"
' CLSID = {5C35F099-165E-3225-A3A5-564150EA17F5}
$PROGID_SystemServerChannelSinkStackServerChannelSinkStack = "System.Runtime.Remoting.Channels.ServerChannelSinkStack"
' CLSID = {48728B3F-F7D9-36C1-B3E7-8BF2E63CE1B3}
$PROGID_SystemTransportHeadersTransportHeaders = "System.Runtime.Remoting.Channels.TransportHeaders"
' CLSID = {A36E4EAF-EA3F-30A6-906D-374BBF7903B1}
$PROGID_SystemContextContext = "System.Runtime.Remoting.Contexts.Context"
' CLSID = {5520B6D3-6EC6-3CE7-958B-E69FAF6EFF99}
$PROGID_SystemSynchronizationAttributeSynchronizationAttribute = "System.Runtime.Remoting.Contexts.SynchronizationAttribute"
' CLSID = {53A3C917-BB24-3908-B58B-09ECDA99265F}
$PROGID_SystemInternalRemotingServicesInternalRemotingServices = "System.Runtime.Remoting.InternalRemotingServices"
' CLSID = {FD8C8FCE-4F85-36B2-B8E8-F5A183654539}
$PROGID_SystemClientSponsorClientSponsor = "System.Runtime.Remoting.Lifetime.ClientSponsor"
' CLSID = {8FD730C1-DD1B-3694-84A1-8CE7159E266B}
$PROGID_SystemLifetimeServicesLifetimeServices = "System.Runtime.Remoting.Lifetime.LifetimeServices"
' CLSID = {C30ABD41-7B5A-3D10-A6EF-56862E2979B6}
$PROGID_SystemOneWayAttributeOneWayAttribute = "System.Runtime.Remoting.Messaging.OneWayAttribute"
' CLSID = {24EEC005-3938-3C71-821D-7F68FD850B2D}
$PROGID_SystemRemotingSurrogateSelectorRemotingSurrogateSelector = "System.Runtime.Remoting.Messaging.RemotingSurrogateSelector"
' CLSID = {9B924EC5-BF13-3A98-8AC0-80877995D403}
$PROGID_SystemSoapAttributeSoapAttribute = "System.Runtime.Remoting.Metadata.SoapAttribute"
' CLSID = {5B76534C-3ACC-3D52-AA61-D788B134ABE2}
$PROGID_SystemSoapFieldAttributeSoapFieldAttribute = "System.Runtime.Remoting.Metadata.SoapFieldAttribute"
' CLSID = {01FF4E4B-8AD0-3171-8C82-5C2F48B87E3D}
$PROGID_SystemSoapMethodAttributeSoapMethodAttribute = "System.Runtime.Remoting.Metadata.SoapMethodAttribute"
' CLSID = {C76B435D-86C2-30FD-9329-E2603246095C}
$PROGID_SystemSoapParameterAttributeSoapParameterAttribute = "System.Runtime.Remoting.Metadata.SoapParameterAttribute"
' CLSID = {9C67F424-22DC-3D05-AB36-17EAF95881F2}
$PROGID_SystemSoapTypeAttributeSoapTypeAttribute = "System.Runtime.Remoting.Metadata.SoapTypeAttribute"
' CLSID = {CDFA7117-B2A4-3A3F-B393-BC19D44F9749}
$PROGID_SystemSoapAnyUriSoapAnyUri = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapAnyUri"
' CLSID = {F59D514C-F200-319F-BF3F-9E4E23B2848C}
$PROGID_SystemSoapBase64BinarySoapBase64Binary = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapBase64Binary"
' CLSID = {48AD62E8-BD40-37F4-8FD7-F7A17478A8E6}
$PROGID_SystemSoapDateTimeSoapDateTime = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapDateTime"
' CLSID = {C9F0A842-3CE1-338F-A1D4-6D7BB397BDAA}
$PROGID_SystemSoapDaySoapDay = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapDay"
' CLSID = {DE47D9CF-0107-3D66-93E9-A8ACB06B4583}
$PROGID_SystemSoapDurationSoapDuration = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapDuration"
' CLSID = {9A3A64F4-8BA5-3DCF-880C-8D3EE06C5538}
$PROGID_SystemSoapEntitiesSoapEntities = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapEntities"
' CLSID = {F00CA7A7-4B8D-3F2F-A5F2-CE4A4478B39C}
$PROGID_SystemSoapEntitySoapEntity = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapEntity"
' CLSID = {8C1425C9-A7D3-35CD-8248-928CA52AD49B}
$PROGID_SystemSoapHexBinarySoapHexBinary = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapHexBinary"
' CLSID = {2763BE6B-F8CF-39D9-A2E8-9E9815C0815E}
$PROGID_SystemSoapIdrefsSoapIdrefs = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapIdrefs"
' CLSID = {09A60795-31C0-3A79-9250-8D93C74FE540}
$PROGID_SystemSoapIntegerSoapInteger = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapInteger"
' CLSID = {84F70B6C-D59E-394A-B879-FFCC30DDCAA2}
$PROGID_SystemSoapLanguageSoapLanguage = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapLanguage"
' CLSID = {463AE13F-C7E5-357E-A41C-DF8762FFF85C}
$PROGID_SystemSoapMonthDaySoapMonthDay = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapMonthDay"
' CLSID = {4E515531-7A71-3CDD-8078-0A01C85C8F9D}
$PROGID_SystemSoapNameSoapName = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapName"
' CLSID = {D13B741D-051F-322F-93AA-1367A3C8AAFB}
$PROGID_SystemSoapNcNameSoapNcName = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNcName"
' CLSID = {C41D0B30-A518-3093-A18F-364AF9E71EB7}
$PROGID_SystemSoapNegativeIntegerSoapNegativeInteger = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNegativeInteger"
' CLSID = {C498F2D9-A77C-3D4B-A1A5-12CC7B99115D}
$PROGID_SystemSoapNmtokenSoapNmtoken = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNmtoken"
' CLSID = {14BE6B21-C682-3A3A-8B24-FEE75B4FF8C5}
$PROGID_SystemSoapNmtokensSoapNmtokens = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNmtokens"
' CLSID = {6850404F-D7FB-32BD-8328-C94F66E8C1C7}
$PROGID_SystemSoapNonNegativeIntegerSoapNonNegativeInteger = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNonNegativeInteger"
' CLSID = {2BB6C5E0-C2B9-3608-8868-21CFD6DDB91E}
$PROGID_SystemSoapNonPositiveIntegerSoapNonPositiveInteger = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNonPositiveInteger"
' CLSID = {0E71F9BD-C109-3352-BD60-14F96D56B6F3}
$PROGID_SystemSoapNormalizedStringSoapNormalizedString = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNormalizedString"
' CLSID = {B54E38F8-17FF-3D0A-9FF3-5E662DE2055F}
$PROGID_SystemSoapNotationSoapNotation = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNotation"
' CLSID = {7B769B29-35F0-3BDC-AAE9-E99937F6CDEC}
$PROGID_SystemSoapPositiveIntegerSoapPositiveInteger = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapPositiveInteger"
' CLSID = {D8A4F3EB-E7EC-3620-831A-B052A67C9944}
$PROGID_SystemSoapQNameSoapQName = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapQName"
' CLSID = {D049DC2B-82C3-3350-A1CC-BF69FEE3825E}
$PROGID_SystemSoapTimeSoapTime = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapTime"
' CLSID = {777F668E-3272-39CD-A8B5-860935A35181}
$PROGID_SystemSoapTokenSoapToken = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapToken"
' CLSID = {A7136BDF-B141-3913-9D1C-9BC5AFF21470}
$PROGID_SystemSoapYearMonthSoapYearMonth = "System.Runtime.Remoting.Metadata.W3cXsd2001.SoapYearMonth"
' CLSID = {21F5A790-53EA-3D73-86C3-A5BA6CF65FE9}
$PROGID_SystemObjRefObjRef = "System.Runtime.Remoting.ObjRef"
' CLSID = {1163D0CA-2A02-37C1-BF3F-A9B9E9D49245}
$PROGID_SystemProxyAttributeProxyAttribute = "System.Runtime.Remoting.Proxies.ProxyAttribute"
' CLSID = {24540EBC-316E-35D2-80DB-8A535CAF6A35}
$PROGID_SystemRemotingExceptionRemotingException = "System.Runtime.Remoting.RemotingException"
' CLSID = {3CDED51A-86B4-39F0-A12A-5D1FDCED6546}
$PROGID_SystemRemotingTimeoutExceptionRemotingTimeoutException = "System.Runtime.Remoting.RemotingTimeoutException"
' CLSID = {DB13821E-9835-3958-8539-1E021399AB6C}
$PROGID_SystemServerExceptionServerException = "System.Runtime.Remoting.ServerException"
' CLSID = {BC5062B6-79E8-3F19-A87E-F9DAF826960C}
$PROGID_SystemEnterpriseServicesHelperEnterpriseServicesHelper = "System.Runtime.Remoting.Services.EnterpriseServicesHelper"
' CLSID = {E822F35C-DDC2-3FB2-9768-A2AEBCED7C40}
$PROGID_SystemTrackingServicesTrackingServices = "System.Runtime.Remoting.Services.TrackingServices"
' CLSID = {D23D2F41-1D69-3E03-A275-32AE381223AC}
$PROGID_SystemFormatterConverterFormatterConverter = "System.Runtime.Serialization.FormatterConverter"
' CLSID = {50369004-DB9A-3A75-BE7A-1D0EF017B9D3}
$PROGID_SystemBinaryFormatterBinaryFormatter = "System.Runtime.Serialization.Formatters.Binary.BinaryFormatter"
' CLSID = {CF8F7FCF-94FE-3516-90E9-C103156DD2D5}
$PROGID_SystemInternalRMInternalRM = "System.Runtime.Serialization.Formatters.InternalRM"
' CLSID = {A8D058C4-D923-3859-9490-D3888FC90439}
$PROGID_SystemSoapFaultSoapFault = "System.Runtime.Serialization.Formatters.SoapFault"
' CLSID = {E772BBE6-CB52-3C19-876A-D1BFA2305F4E}
$PROGID_SystemSoapMessageSoapMessage = "System.Runtime.Serialization.Formatters.SoapMessage"
' CLSID = {4F272C37-F0A8-350C-867B-2C03B2B16B80}
$PROGID_SystemObjectIDGeneratorObjectIDGenerator = "System.Runtime.Serialization.ObjectIDGenerator"
' CLSID = {18B1C7EE-68E3-35BB-9E40-469A223285F7}
$PROGID_SystemOnDeserializedAttributeOnDeserializedAttribute = "System.Runtime.Serialization.OnDeserializedAttribute"
' CLSID = {30AC0B94-3BDB-3199-8A5D-ECA0C5458381}
$PROGID_SystemOnDeserializingAttributeOnDeserializingAttribute = "System.Runtime.Serialization.OnDeserializingAttribute"
' CLSID = {6F8527BF-5AAD-3236-B639-A05177332EFE}
$PROGID_SystemOnSerializedAttributeOnSerializedAttribute = "System.Runtime.Serialization.OnSerializedAttribute"
' CLSID = {9BF86F6E-B0E1-348B-9627-6970672EB3D3}
$PROGID_SystemOnSerializingAttributeOnSerializingAttribute = "System.Runtime.Serialization.OnSerializingAttribute"
' CLSID = {1C97EF1D-74ED-3D21-84A4-8631D959634A}
$PROGID_SystemOptionalFieldAttributeOptionalFieldAttribute = "System.Runtime.Serialization.OptionalFieldAttribute"
' CLSID = {57154C7C-EDB2-3BFD-A8BA-924C60913EBF}
$PROGID_SystemSerializationExceptionSerializationException = "System.Runtime.Serialization.SerializationException"
' CLSID = {88C8A919-EB24-3CCA-84F7-2EA82BB3F3ED}
$PROGID_SystemSurrogateSelectorSurrogateSelector = "System.Runtime.Serialization.SurrogateSelector"
' CLSID = {5610F042-FF1D-36D0-996C-68F7A207D1F0}
$PROGID_SystemAllowPartiallyTrustedCallersAttributeAllowPartiallyTrustedCallersAttribute = "System.Security.AllowPartiallyTrustedCallersAttribute"
' CLSID = {9EA60ECA-3DCD-340F-8E95-67845D185999}
$PROGID_SystemCryptoConfigCryptoConfig = "System.Security.Cryptography.CryptoConfig"
' CLSID = {7F8C7DC5-D8B4-3758-981F-02AF6B42461A}
$PROGID_SystemCryptographicExceptionCryptographicException = "System.Security.Cryptography.CryptographicException"
' CLSID = {C41FA05C-8A7A-3157-8166-4104BB4925BA}
$PROGID_SystemCryptographicUnexpectedOperationExceptionCryptographicUnexpectedOperationException = "System.Security.Cryptography.CryptographicUnexpectedOperationException"
' CLSID = {AF60343F-6C7B-3761-839F-0C44E3CA06DA}
$PROGID_SystemCspParametersCspParameters = "System.Security.Cryptography.CspParameters"
' CLSID = {B6EB52D5-BB1C-3380-8BCA-345FF43F4B04}
$PROGID_SystemDESCryptoServiceProviderDESCryptoServiceProvider = "System.Security.Cryptography.DESCryptoServiceProvider"
' CLSID = {673DFE75-9F93-304F-ABA8-D2A86BA87D7C}
$PROGID_SystemDSACryptoServiceProviderDSACryptoServiceProvider = "System.Security.Cryptography.DSACryptoServiceProvider"
' CLSID = {1F17C39C-99D5-37E0-8E98-8F27044BD50A}
$PROGID_SystemDSASignatureDeformatterDSASignatureDeformatter = "System.Security.Cryptography.DSASignatureDeformatter"
' CLSID = {8F6D198C-E66F-3A87-AA3F-F885DD09EA13}
$PROGID_SystemDSASignatureFormatterDSASignatureFormatter = "System.Security.Cryptography.DSASignatureFormatter"
' CLSID = {C1ABB475-F198-39D5-BF8D-330BC7189661}
$PROGID_SystemFromBase64TransformFromBase64Transform = "System.Security.Cryptography.FromBase64Transform"
' CLSID = {A7EDDCB5-6043-3988-921C-25E3DEE6322B}
$PROGID_SystemHMACMD5HMACMD5 = "System.Security.Cryptography.HMACMD5"
' CLSID = {20051D1B-321F-3E4D-A3DA-5FBE892F7EC5}
$PROGID_SystemHMACRIPEMD160HMACRIPEMD160 = "System.Security.Cryptography.HMACRIPEMD160"
' CLSID = {00B01B2E-B1FE-33A6-AD40-57DE8358DC7D}
$PROGID_SystemHMACSHA1HMACSHA1 = "System.Security.Cryptography.HMACSHA1"
' CLSID = {2C314899-8F99-3041-A49D-2F6AFC0E6296}
$PROGID_SystemHMACSHA256HMACSHA256 = "System.Security.Cryptography.HMACSHA256"
' CLSID = {AE53ED01-CAB4-39CE-854A-8BF544EEEC35}
$PROGID_SystemHMACSHA384HMACSHA384 = "System.Security.Cryptography.HMACSHA384"
' CLSID = {477A7D8E-8D26-3959-88F6-F6AB7E7F50CF}
$PROGID_SystemHMACSHA512HMACSHA512 = "System.Security.Cryptography.HMACSHA512"
' CLSID = {39B68485-6773-3C46-82E9-56D8F0B4570C}
$PROGID_SystemMACTripleDESMACTripleDES = "System.Security.Cryptography.MACTripleDES"
' CLSID = {D2548BF2-801A-36AF-8800-1F11FBF54361}
$PROGID_SystemMD5CryptoServiceProviderMD5CryptoServiceProvider = "System.Security.Cryptography.MD5CryptoServiceProvider"
' CLSID = {7AE844F0-ECA8-3F15-AE27-AFA21A2AA6F8}
$PROGID_SystemPKCS1MaskGenerationMethodPKCS1MaskGenerationMethod = "System.Security.Cryptography.PKCS1MaskGenerationMethod"
' CLSID = {62E92675-CB77-3FC9-8597-1A81A5F18013}
$PROGID_SystemRC2CryptoServiceProviderRC2CryptoServiceProvider = "System.Security.Cryptography.RC2CryptoServiceProvider"
' CLSID = {1F9F18A3-EFC0-3913-84A5-90678A4A9A80}
$PROGID_SystemRijndaelManagedRijndaelManaged = "System.Security.Cryptography.RijndaelManaged"
' CLSID = {3D367908-928F-3C13-8B93-5E1718820F6D}
$PROGID_SystemRIPEMD160ManagedRIPEMD160Managed = "System.Security.Cryptography.RIPEMD160Managed"
' CLSID = {40031115-09D2-3851-A13F-56930BE48038}
$PROGID_SystemRNGCryptoServiceProviderRNGCryptoServiceProvider = "System.Security.Cryptography.RNGCryptoServiceProvider"
' CLSID = {D9035152-6B1F-33E3-86F4-411CD21CDE0E}
$PROGID_SystemRSACryptoServiceProviderRSACryptoServiceProvider = "System.Security.Cryptography.RSACryptoServiceProvider"
' CLSID = {4D187AC2-D815-3B7E-BCEA-8E0BBC702F7C}
$PROGID_SystemRSAOAEPKeyExchangeDeformatterRSAOAEPKeyExchangeDeformatter = "System.Security.Cryptography.RSAOAEPKeyExchangeDeformatter"
' CLSID = {A0E2E749-63CE-3651-8F4F-F5F996344C32}
$PROGID_SystemRSAOAEPKeyExchangeFormatterRSAOAEPKeyExchangeFormatter = "System.Security.Cryptography.RSAOAEPKeyExchangeFormatter"
' CLSID = {EE96F4E1-377E-315C-AEF5-874DC8C7A2AA}
$PROGID_SystemRSAPKCS1KeyExchangeDeformatterRSAPKCS1KeyExchangeDeformatter = "System.Security.Cryptography.RSAPKCS1KeyExchangeDeformatter"
' CLSID = {92755472-2059-3F96-8938-8AC767B5187B}
$PROGID_SystemRSAPKCS1KeyExchangeFormatterRSAPKCS1KeyExchangeFormatter = "System.Security.Cryptography.RSAPKCS1KeyExchangeFormatter"
' CLSID = {6F674828-9081-3B45-BC39-791BD84CCF8F}
$PROGID_SystemRSAPKCS1SignatureDeformatterRSAPKCS1SignatureDeformatter = "System.Security.Cryptography.RSAPKCS1SignatureDeformatter"
' CLSID = {7BC115CD-1EE2-3068-894D-E3D3F7632F40}
$PROGID_SystemRSAPKCS1SignatureFormatterRSAPKCS1SignatureFormatter = "System.Security.Cryptography.RSAPKCS1SignatureFormatter"
' CLSID = {FC13A7D5-E2B3-37BA-B807-7FA6238284D5}
$PROGID_SystemSHA1CryptoServiceProviderSHA1CryptoServiceProvider = "System.Security.Cryptography.SHA1CryptoServiceProvider"
' CLSID = {FDF9C30D-CCAB-3E2D-B584-9E24CE8038E3}
$PROGID_SystemSHA1ManagedSHA1Managed = "System.Security.Cryptography.SHA1Managed"
' CLSID = {44181B13-AE94-3CFB-81D1-37DB59145030}
$PROGID_SystemSHA256ManagedSHA256Managed = "System.Security.Cryptography.SHA256Managed"
' CLSID = {7FD3958D-0A14-3001-8074-0D15EAD7F05C}
$PROGID_SystemSHA384ManagedSHA384Managed = "System.Security.Cryptography.SHA384Managed"
' CLSID = {A6673C32-3943-3BBB-B476-C09A0EC0BCD6}
$PROGID_SystemSHA512ManagedSHA512Managed = "System.Security.Cryptography.SHA512Managed"
' CLSID = {3FA7A1C5-812C-3B56-B957-CB14AF670C09}
$PROGID_SystemSignatureDescriptionSignatureDescription = "System.Security.Cryptography.SignatureDescription"
' CLSID = {5F3A0F8D-5EF9-3AD5-94E0-53AFF8BCE960}
$PROGID_SystemToBase64TransformToBase64Transform = "System.Security.Cryptography.ToBase64Transform"
' CLSID = {DAA132BF-1170-3D8B-A0EF-E2F55A68A91D}
$PROGID_SystemTripleDESCryptoServiceProviderTripleDESCryptoServiceProvider = "System.Security.Cryptography.TripleDESCryptoServiceProvider"
' CLSID = {4C69C54F-9824-38CC-8387-A22DC67E0BAB}
$PROGID_SystemX509CertificateX509Certificate = "System.Security.Cryptography.X509Certificates.X509Certificate"
' CLSID = {ECC82A10-B731-3A01-8A17-AC0DDD7666CF}
$PROGID_SystemHostProtectionExceptionHostProtectionException = "System.Security.HostProtectionException"
' CLSID = {84589833-40D7-36E2-8545-67A92B97C408}
$PROGID_SystemHostSecurityManagerHostSecurityManager = "System.Security.HostSecurityManager"
' CLSID = {29A6CF6F-D663-31A7-9210-1347871681FC}
$PROGID_SystemGacIdentityPermissionGacIdentityPermission = "System.Security.Permissions.GacIdentityPermission"
' CLSID = {AD664904-FE8A-3217-BBF5-E6AB1D998F5F}
$PROGID_SystemHostProtectionAttributeHostProtectionAttribute = "System.Security.Permissions.HostProtectionAttribute"
' CLSID = {06B81C12-A5DA-340D-AFF7-FA1453FBC29A}
$PROGID_SystemAllMembershipConditionAllMembershipCondition = "System.Security.Policy.AllMembershipCondition"
' CLSID = {3DDB2114-9285-30A6-906D-B117640CA927}
$PROGID_SystemApplicationDirectoryMembershipConditionApplicationDirectoryMembershipCondition = "System.Security.Policy.ApplicationDirectoryMembershipCondition"
' CLSID = {A5448B7A-AA07-3C56-B42B-7D881FA10934}
$PROGID_SystemApplicationTrustApplicationTrust = "System.Security.Policy.ApplicationTrust"
' CLSID = {62545937-20A9-3D0F-B04B-322E854EACB0}
$PROGID_SystemEvidenceEvidence = "System.Security.Policy.Evidence"
' CLSID = {EE24A2C3-3AA2-33DA-8731-A4FCC1105813}
$PROGID_SystemGacInstalledGacInstalled = "System.Security.Policy.GacInstalled"
' CLSID = {390E92C9-FA66-3357-BEF2-45A1F34186B9}
$PROGID_SystemGacMembershipConditionGacMembershipCondition = "System.Security.Policy.GacMembershipCondition"
' CLSID = {89D26277-8408-3FC8-BD44-CF5F0E614C82}
$PROGID_SystemPolicyExceptionPolicyException = "System.Security.Policy.PolicyException"
' CLSID = {AFAEF10F-1BC4-351F-886A-878A265C1862}
$PROGID_SystemTrustManagerContextTrustManagerContext = "System.Security.Policy.TrustManagerContext"
' CLSID = {EEF05C76-5C98-3685-A69C-6E1A26A7F846}
$PROGID_SystemSecurityExceptionSecurityException = "System.Security.SecurityException"
' CLSID = {7AE01D6C-BEE7-38F6-9A86-329D8A917803}
$PROGID_SystemSuppressUnmanagedCodeSecurityAttributeSuppressUnmanagedCodeSecurityAttribute = "System.Security.SuppressUnmanagedCodeSecurityAttribute"
' CLSID = {7E3393AB-2AB2-320B-8F6F-EAB6F5CF2CAF}
$PROGID_SystemUnverifiableCodeAttributeUnverifiableCodeAttribute = "System.Security.UnverifiableCodeAttribute"
' CLSID = {EBAA029C-01C0-32B6-AAE6-FE21ADFC3E5D}
$PROGID_SystemVerificationExceptionVerificationException = "System.Security.VerificationException"
' CLSID = {E38DA416-8050-3786-8201-46F187C15213}
$PROGID_SystemXmlSyntaxExceptionXmlSyntaxException = "System.Security.XmlSyntaxException"
' CLSID = {89BCC804-53A5-3EB2-A342-6282CC410260}
$PROGID_SystemSerializableAttributeSerializableAttribute = "System.SerializableAttribute"
' CLSID = {9C125A6F-EAE2-3FC1-97A1-C0DCEAB0B5DF}
$PROGID_SystemStackOverflowExceptionStackOverflowException = "System.StackOverflowException"
' CLSID = {50AAD4C2-61FA-3B1F-8157-5BA3B27AEE61}
$PROGID_SystemSTAThreadAttributeSTAThreadAttribute = "System.STAThreadAttribute"
' CLSID = {4224AC84-9B11-3561-8923-C893CA77ACBE}
$PROGID_SystemSystemExceptionSystemException = "System.SystemException"
' CLSID = {9E28EF95-9C6F-3A00-B525-36A76178CC9C}
$PROGID_SystemASCIIEncodingASCIIEncoding = "System.Text.ASCIIEncoding"
' CLSID = {E724B749-18D6-36AB-9F6D-09C36D9C6016}
$PROGID_SystemStringBuilderStringBuilder = "System.Text.StringBuilder"
' CLSID = {A0F5F5DC-337B-38D7-B1A3-FB1B95666BBF}
$PROGID_SystemUnicodeEncodingUnicodeEncoding = "System.Text.UnicodeEncoding"
' CLSID = {3C9DCA8B-4410-3143-B801-559553EB6725}
$PROGID_SystemUTF7EncodingUTF7Encoding = "System.Text.UTF7Encoding"
' CLSID = {8C40D44A-4EDE-3760-9B61-50255056D3C7}
$PROGID_SystemUTF8EncodingUTF8Encoding = "System.Text.UTF8Encoding"
' CLSID = {D74D613D-F27F-311B-A9A3-27EBC63A1A5D}
$PROGID_SystemMutexMutex = "System.Threading.Mutex"
' CLSID = {7FE87A55-1321-3D9F-8FEF-CD2F5E8AB2E9}
$PROGID_SystemOverlappedOverlapped = "System.Threading.Overlapped"
' CLSID = {9173D971-B142-38A5-8488-D10A9DCF71B0}
$PROGID_SystemReaderWriterLockReaderWriterLock = "System.Threading.ReaderWriterLock"
' CLSID = {48A75519-CB7A-3D18-B91E-BE62EE842A3E}
$PROGID_SystemSynchronizationLockExceptionSynchronizationLockException = "System.Threading.SynchronizationLockException"
' CLSID = {27E986E1-BAEC-3D48-82E4-14169CA8CECF}
$PROGID_SystemThreadInterruptedExceptionThreadInterruptedException = "System.Threading.ThreadInterruptedException"
' CLSID = {3E5509F0-1FB9-304D-8174-75D6C9AFE5DA}
$PROGID_SystemThreadStateExceptionThreadStateException = "System.Threading.ThreadStateException"
' CLSID = {FFC9F9AE-E87A-3252-8E25-B22423A40065}
$PROGID_SystemThreadStaticAttributeThreadStaticAttribute = "System.ThreadStaticAttribute"
' CLSID = {EAA78D4A-20A3-3FDE-AB72-D3D55E3AEFE6}
$PROGID_SystemTimeoutExceptionTimeoutException = "System.TimeoutException"
' CLSID = {112BC2E7-9EF9-3648-AF9E-45C0D4B89929}
$PROGID_SystemTypeLoadExceptionTypeLoadException = "System.TypeLoadException"
' CLSID = {D6D2034D-5F67-30D7-9CC5-452F2C46694F}
$PROGID_SystemTypeUnloadedExceptionTypeUnloadedException = "System.TypeUnloadedException"
' CLSID = {75215200-A2FE-30F6-A34B-8F1A1830358E}
$PROGID_SystemUnauthorizedAccessExceptionUnauthorizedAccessException = "System.UnauthorizedAccessException"
' CLSID = {43CD41AD-3B78-3531-9031-3059E0AA64EB}
$PROGID_SystemVersionVersion = "System.Version"

Title: Re: RE:Loading the Common Language Runtime into a Process
Post by: Eros Olmi on September 10, 2008, 11:01:07 PM
José is a genius, that is fact.



Now the question: what is an DISPATCH variable in memory? a 32bit pointer? A variant?

SIZEOF(whateverDISPATCHVariable) is not supported by PB so I cannot know.

Thanks a lot
Eros
Title: Re: RE:Loading the Common Language Runtime into a Process
Post by: José Roca on September 10, 2008, 11:10:27 PM
 
They are 32-bit pointers.
Title: Re: RE:Loading the Common Language Runtime into a Process
Post by: Eros Olmi on September 10, 2008, 11:19:36 PM
Thanks José.

I was making some experiment with your code. I would like to have an array of variant parameters instead of multiple single variant variables.
Calling a class method passing a variant array element seems not supported.

  '...
  REDIM vPrm(1 to 1) as VARIANT
  '...
  Object Call oStack(1).Push(vPrm(1))


I get a compile code 422: "Scalar variable expected". Can it be?

Thanks
Eros
Title: Re: RE:Loading the Common Language Runtime into a Process
Post by: José Roca on September 10, 2008, 11:49:02 PM
Quote
I get a compile code 422: "Scalar variable expected". Can it be?

Sure. COM doesn't know anything of PB's arrays. It uses safearrays.

Anyway, you can't push and pop arrays with the Push and Pop methods of the System.Collections.Stack class, but just one element.
Title: Re: RE:Loading the Common Language Runtime into a Process
Post by: Eros Olmi on September 10, 2008, 11:53:53 PM
Well, because PB is compiling my code, I thought PB was doing the job for me.

1 VARIANT variable is equal to 1 array element of a VARIANT array from a programming point of view.
I'm not passing an array of variants but just a single variant (in this case an element of).

Anyhow, thanks a lot for your reply.
I will continue to experiment your fantastic code.
Title: Re: RE:Loading the Common Language Runtime into a Process
Post by: José Roca on September 11, 2008, 12:16:08 AM
 
Quote
1 VARIANT variable is equal to 1 array element of a VARIANT array from a programming point of view.
I'm not passing an array of variants but just a single variant (in this case an element of).

With standard functions and direct interface calls, if the parameter is a BYREF VARIANT, the compiler will pass the address of the referenced element of the array. But Automation doesn't work this way. Automation will fill a VariantArgs array with the passed parameters and then fill a DISPPARAMS structure with some other data and the address of the VariantArgs array. And an address to a PowerBASIC array of variants is not a valid parameter. The compiler could be changed to build a safearray under the hood with the passed array, but this is not currently supported. In any case, if the parameter expects a single BYREF VARIANT, and you pass a safearray, even if it has only one element, it won't work. Don't ask me why I hate Automation :)
Title: Re: RE:Loading the Common Language Runtime into a Process
Post by: José Roca on September 11, 2008, 12:22:25 AM
 
BTW notice that I have used a class just to make it easier to use the code, but only an instance of the class can be created because the CLR runtime can only be loaded once in the same process.

Also, Automation and late binding must be used to call the methods and properties of the classes because they are dynamic properties (there is not a virtual table).
Title: Re: RE:Loading the Common Language Runtime into a Process
Post by: Greg Lyon on September 11, 2008, 01:17:52 AM
QuoteSystem.DateTime if not a cocreatable class, but an structure. This is a list of the ProgIDs in mscorlib: ...

I see, bummer. I assumed all the classes in mscorlib.dll would be usable.



Title: Re: RE:Loading the Common Language Runtime into a Process
Post by: Greg Lyon on September 12, 2008, 11:00:50 PM
I fiddled around with a couple more of the .NET Framework classes. Here are some code snippets, they require José's CCLRHost code.

System.Collections.ArrayList

   ...
   oDisp = pCLRHost.CreateInstance(pDomain, "mscorlib", "System.Collections.ArrayList")
   IF ISOBJECT(oDisp) THEN

      vStr = UCODE$("First string")
      OBJECT CALL oDisp.Add(vStr) TO vCount

      vStr = UCODE$("Second string")
      OBJECT CALL oDisp.Add(vStr) TO vCount

      vStr = UCODE$("Third string")
      OBJECT CALL oDisp.Add(vStr) TO vCount

      FOR x = 0 to VARIANT#(vCount)
          vIndex = x
          OBJECT CALL oDisp.Item(vIndex) TO vItem
          strOutput = VARIANT$(vItem)
          STDOUT ACODE$(strOutput)
      NEXT x

      oDisp = NOTHING
   ELSE
       STDOUT "Error calling CreateInstance()"
   END IF
   ...


System.Random

    ...
    oDisp = pCLRHost.CreateInstance(pDomain, "mscorlib", "System.Random")
    IF ISOBJECT(oDisp) THEN
        OBJECT CALL oDisp.Next() TO vRnd
        strOutput = FORMAT$(VARIANT#(vRnd))
        STDOUT strOutput
        oDisp = NOTHING
    ELSE
        STDOUT "Error calling CreateInstance()"
    END IF
    ...


    ...
    oDisp = pCLRHost.CreateInstance(pDomain, "mscorlib", "System.Random")
    IF ISOBJECT(oDisp) THEN
        OBJECT CALL oDisp.NextDouble() TO vRnd
        strOutput = FORMAT$(VARIANT#(vRnd))
        STDOUT strOutput
        oDisp = NOTHING
    ELSE
        STDOUT "Error calling CreateInstance()"
    END IF
    ...

Title: Re: RE:Loading the Common Language Runtime into a Process
Post by: Greg Lyon on September 12, 2008, 11:20:34 PM
I couldn't get this overload of System.Random.Next to work, I never figured out why. OBJRESULT$ says "Invalid number of parameters.".


    ...
    oDisp = pCLRHost.CreateInstance(pDomain, "mscorlib", "System.Random")
    IF ISOBJECT(oDisp) THEN
        vMin = 1   ' inclusive
        vMax = 50  ' exclusive
        OBJECT CALL oDisp.Next(vMin, vMax) TO vRnd
        IF VARIANT#(vRnd) = 0 then
            STDOUT OBJRESULT$(OBJRESULT)
        ELSE
            strOutput = FORMAT$(VARIANT#(vRnd))
            STDOUT strOutput
        END IF
        oDisp = NOTHING
    ELSE
        STDOUT "Error calling CreateInstance()"
    END IF
    ...
Title: Re: RE:Loading the Common Language Runtime into a Process
Post by: Edwin Knoppert on September 12, 2008, 11:43:15 PM
The translation to the COM interface makes it impossible to use the overloads this way.
I suspect functions will get an ordinal number.
Like i mentioned before, the easiest is making use of a custom assembly to bridge the gap.
I know Jose doesn't like my solution :)
But then.. just wait until he provides the assembly file loading part.
Which is fairly simple with respect to his current code.
Title: Re: RE:Loading the Common Language Runtime into a Process
Post by: José Roca on September 13, 2008, 01:59:07 AM
Quote
I couldn't get this overload of System.Random.Next to work,

COM doesn't support overloading.

Quote
Like i mentioned before, the easiest is making use of a custom assembly to bridge the gap.
I know Jose doesn't like my solution

My interest in .NET is very low. Having to create wrapper assembles is not something I'm going to do unless I absolutely need it.
Title: Re: RE:Loading the Common Language Runtime into a Process
Post by: Greg Lyon on September 13, 2008, 03:02:33 AM
QuoteMy interest in .NET is very low. Having to create wrapper assembles is not something I'm going to do unless I absolutely need it.

I don't blame you.  I find it interesting, but it's not something that I really need either.

Title: Re: RE:Loading the Common Language Runtime into a Process
Post by: José Roca on September 13, 2008, 03:54:17 AM
 
Well, it seems that we don't need to write a wrapper after all.

This overloaded method has three definitions:

Random.Next ()
Random.Next (Int32)
Random.Next (Int32, Int32)

For the first, use:

OBJECT CALL oDisp.Next() TO vRnd

For the second, use:

vMax = 50
OBJECT CALL oDisp.Next_3(vMax) TO vRnd

For the third, use:

vMin = 1
vMax = 50
OBJECT CALL oDisp.Next_2(vMin) TO vRnd

Notice that, at least with this class, the order is no the same than in the documentation.

What is clear, however, is that it adds an underscore and an ordinal to the name of the method.
Title: Re: RE:Loading the Common Language Runtime into a Process
Post by: Greg Lyon on September 13, 2008, 04:05:22 AM
José,

Aha, thanks.  If you don't mind me asking, how did you figure that out?

Title: Re: RE:Loading the Common Language Runtime into a Process
Post by: José Roca on September 13, 2008, 04:23:37 AM
 
If you look at mscorlib20.inc, you will see that it is the technique that they have used for the overloaded methods of this library, e.g.

AppDomain.CreateInstance (String, String)
AppDomain.CreateInstance (String, String, Object[])
AppDomain.CreateInstance (String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)


   ' =====================================================================================
   METHOD CreateInstance ( _                  ' VTable offset = 148
     BYVAL STRING _                           ' [0] [in] AssemblyName /* VT_BSTR */
   , BYVAL STRING _                           ' [0] [in] typeName /* VT_BSTR */
   ) AS SystemObjectHandle                    ' [out][retval] **pRetVal /* **_ObjectHandle <dispinterface> */
   ' =====================================================================================

   ' =====================================================================================
   METHOD CreateInstance_2 ( _                ' VTable offset = 156
     BYVAL STRING _                           ' [0] [in] AssemblyName /* VT_BSTR */
   , BYVAL STRING _                           ' [0] [in] typeName /* VT_BSTR */
   , BYVAL DWORD _                            ' [0] [in] activationAttributes /* VT_SAFEARRAY */
   ) AS SystemObjectHandle                    ' [out][retval] **pRetVal /* **_ObjectHandle <dispinterface> */
   ' =====================================================================================

   ' =====================================================================================
   METHOD CreateInstance_3 ( _                ' VTable offset = 164
     BYVAL STRING _                           ' [0] [in] AssemblyName /* VT_BSTR */
   , BYVAL STRING _                           ' [0] [in] typeName /* VT_BSTR */
   , BYVAL INTEGER _                          ' [0] [in] ignoreCase /* VT_BOOL <Integer> */
   , BYVAL LONG _                             ' [0] [in] bindingAttr /* BindingFlags <enum> */
   , BYVAL SystemBinder _                     ' [1] [in] *Binder /* *_Binder <dispinterface> */
   , BYVAL DWORD _                            ' [0] [in] args /* VT_SAFEARRAY */
   , BYVAL SystemCultureInfo _                ' [1] [in] *culture /* *_CultureInfo <dispinterface> */
   , BYVAL DWORD _                            ' [0] [in] activationAttributes /* VT_SAFEARRAY */
   , BYVAL SystemEvidence _                   ' [1] [in] *securityAttributes /* *_Evidence <dispinterface> */
   ) AS SystemObjectHandle                    ' [out][retval] **pRetVal /* **_ObjectHandle <dispinterface> */
   ' =====================================================================================

Title: Re: RE:Loading the Common Language Runtime into a Process
Post by: Greg Lyon on September 13, 2008, 05:54:47 AM
José,

I see. 

Why didn't I notice that?  I must have spent 20 minutes looking at mscorlib20.inc.  ;D

Thanks.







Title: Re: RE:Loading the Common Language Runtime into a Process
Post by: Greg Lyon on September 14, 2008, 12:41:00 AM
System.Text.StringBuilder

    ...
    oDisp = pCLRHost.CreateInstance(pDomain, "mscorlib", "System.Text.StringBuilder")
    IF ISOBJECT(oDisp) THEN
        vStr1 = "Hello"
        vStr2 = " World"
        OBJECT CALL oDisp.Append_3(vStr1) TO vSB
        LET oSB = vSB
        OBJECT CALL oSB.Append_3(vStr2) TO vSB
        LET oSB = vSB
        OBJECT CALL oSB.ToString() TO vSB
        strOutput = VARIANT$(vSB)
        STDOUT strOutput
        oDisp = NOTHING
        oSB = NOTHING
    ELSE
        STDOUT "Error calling CreateInstance()"
    END IF
    ...