C# Class Opc.Ua.Configuration.ConfigUtils

Utility functions used by COM applications.
ファイルを表示 Open project: OPCFoundation/UA-.NET Class Usage Examples

Public Properties

Property Type Description
CATID_OPCAEServer10 System.Guid
CATID_OPCDAServer20 System.Guid
CATID_OPCDAServer30 System.Guid
CATID_OPCHDAServer10 System.Guid
CATID_PseudoComServers System.Guid
CLSID_UaComAeProxyServer System.Guid
CLSID_UaComDaProxyServer System.Guid
CLSID_UaComHdaProxyServer System.Guid

Public Methods

Method Description
CLSIDFromProgID ( string progID ) : System.Guid

Returns the prog id from the clsid.

CheckFirewallAccess ( string executablePath, StringCollection baseAddresses ) : bool

Checks if the firewall has been configured.

CreateServer ( System.Guid clsid ) : object

Creates an instance of a COM server.

EnumClassesInCategory ( System.Guid category ) : List

Fetches the classes in the specified category.

GetAppIcon ( ) : System.Drawing.Icon

Gets the application icon.

GetComputerWorkgroupOrDomain ( ) : string

Returns the name of the workgroup or domain that the computer belongs to.

GetExecutablePath ( System.Guid clsid ) : string

Returns the location of the COM server executable.

GetFirewallAccess ( string executablePath ) : int[]

Returns the firewall access granted to an application.

GetImplementedCategories ( System.Guid clsid ) : List

Returns the implemented categories for the class.

GetLogFileDirectory ( ) : string

Gets the log file directory and ensures it is writeable.

GetNetFwAuthorizedApplication ( ) : NetFwTypeLib.INetFwAuthorizedApplication

Creates an instance of the NetFwAuthorizedApplication Class

GetNetFwMgr ( ) : NetFwTypeLib.INetFwMgr

Creates an instance of the NetFwMgr Class

GetNetFwOpenPort ( ) : NetFwTypeLib.INetFwOpenPort

Creates an instance of the NetFwOpenPort Class

InstallApplication ( InstalledApplication application, bool autostart, bool configureFirewall ) : void

Installs a UA application.

LocallyRegisterCertificateOIDs ( X509Certificate2 certificate ) : void

Registers the object ids required to access the certificate.

LocallyRegisterCertificateOIDs ( string OIDs ) : void

Registers the object ids required to access the certificate.

This function is used to work around a bug in .NET which results in long delays while OIDs are looked up in Active Directory. CryptFindOIDInfo is supposed to work like this: 1. A table of OID entries is constructed from registry entries with the CRYPT_INSTALL_OID_INFO_BEFORE_FLAG flag. This table is searched first. 2. An internal table of OID entries is then searched. Default OIDs that Microsoft knows about. 3. A table of OIDs constructed from the registry entries without the CRYPT_INSTALL_OID_INFO_BEFORE_FLAG flag is then searched. 4. Active Directory is searched. When registering the OID information with CryptRegisterOIDInfo(ptrInfo, 0) and hack the registry this is what will happen: 1. Any application that searches for an OID (with the OID flag) will find it at step 2. The OID will be correct as well as the friendly name since it uses CryptoAPI's internal table. 2. Any application that searches for a friendly name (with the friendly name flag) will find it as step 2. The OID info is good as stated above. 3. .NET code which searches for an OID (with the friendly name flag) will find the entry in step 3 because of our hack. 4. Any OIDs that isn't found at this point will be searched in the Active Directory. This code needs to be run once for each public key type.

ProcessCommandLine ( ) : bool

Checks if command line arguments specify configuration commands.

ProcessCommandLine ( string args ) : bool

Checks if arguments specify configuration commands.

ProgIDFromCLSID ( System.Guid clsid ) : string

Returns the prog id from the clsid.

RegisterClassInCategory ( System.Guid clsid, System.Guid catid ) : void

Registers the classes in the specified category.

RegisterClassInCategory ( System.Guid clsid, System.Guid catid, string description ) : void

Registers the classes in the specified category.

RegisterComTypes ( string filePath ) : List

Registers the COM types in the specified assembly.

ReleaseServer ( object server ) : void

Releases the server if it is a true COM server.

RemoveFirewallAccess ( ) : void

Removes the firewall access granted to the specified ports.

RemoveFirewallAccess ( Opc application, string executablePath ) : void

Configures the firewall to remove access to the specified application.

RemoveFirewallAccess ( string executablePath, IList baseAddresses ) : void

Configures the firewall to remove access to the specified application.

SetFirewallAccess ( Opc application, string executablePath ) : void

Configures the firewall to allow access to the specified application.

SetFirewallAccess ( string executablePath ) : void

Returns the firewall access granted to an application.

SetFirewallAccess ( string applicationName, string executablePath, IList baseAddresses ) : void

Configures the firewall to allow access to the specified application.

UninstallApplication ( InstalledApplication application ) : void

Uninstalls a UA application.

UnregisterClassInCategory ( System.Guid clsid, System.Guid catid ) : void

Unregisters the classes in the specified category.

UnregisterComServer ( System.Guid clsid ) : void

Removes the registration for a COM server from the registry.

UnregisterComTypes ( string filePath ) : List

Unregisters the COM types in the specified assembly.

UpdateConfigurationLocation ( string executablePath, string configurationPath ) : void

Updates the configuration location for the specified

Private Methods

Method Description
CoCreateInstanceEx ( System.Guid &clsid, [ punkOuter, uint dwClsCtx, [ pServerInfo, uint dwCount, [ pResults ) : void
CreateCertificateForApplication ( InstalledApplication application ) : X509Certificate2

Creates a new certificate for application.

CryptFindOIDInfo ( Int32 dwKeyType, IntPtr pvKey, Int32 dwGroupId ) : IntPtr
CryptRegisterOIDInfo ( IntPtr pInfo, Int32 dwFlags ) : System.Boolean
FindFirstElement ( XmlElement parent, string localName, string namespaceUri ) : XmlElement

Finds the first child element with the specified name.

SetCertificatePermissions ( Opc application, CertificateIdentifier id, IList accessRules, bool replaceExisting ) : void

Updates the access permissions for the certificate store.

SetDefaults ( InstalledApplication application ) : void

Sets the defaults for all fields.

VerifyCodebase ( Assembly assembly, string filepath ) : void

Checks that the assembly loaded has the expected codebase.

Method Details

CLSIDFromProgID() public static method

Returns the prog id from the clsid.
public static CLSIDFromProgID ( string progID ) : System.Guid
progID string
return System.Guid

CheckFirewallAccess() public static method

Checks if the firewall has been configured.
public static CheckFirewallAccess ( string executablePath, StringCollection baseAddresses ) : bool
executablePath string
baseAddresses StringCollection
return bool

CreateServer() public static method

Creates an instance of a COM server.
public static CreateServer ( System.Guid clsid ) : object
clsid System.Guid
return object

EnumClassesInCategory() public static method

Fetches the classes in the specified category.
public static EnumClassesInCategory ( System.Guid category ) : List
category System.Guid
return List

GetAppIcon() public static method

Gets the application icon.
public static GetAppIcon ( ) : System.Drawing.Icon
return System.Drawing.Icon

GetComputerWorkgroupOrDomain() public static method

Returns the name of the workgroup or domain that the computer belongs to.
public static GetComputerWorkgroupOrDomain ( ) : string
return string

GetExecutablePath() public static method

Returns the location of the COM server executable.
public static GetExecutablePath ( System.Guid clsid ) : string
clsid System.Guid
return string

GetFirewallAccess() public static method

Returns the firewall access granted to an application.
public static GetFirewallAccess ( string executablePath ) : int[]
executablePath string
return int[]

GetImplementedCategories() public static method

Returns the implemented categories for the class.
public static GetImplementedCategories ( System.Guid clsid ) : List
clsid System.Guid
return List

GetLogFileDirectory() public static method

Gets the log file directory and ensures it is writeable.
public static GetLogFileDirectory ( ) : string
return string

GetNetFwAuthorizedApplication() public static method

Creates an instance of the NetFwAuthorizedApplication Class
public static GetNetFwAuthorizedApplication ( ) : NetFwTypeLib.INetFwAuthorizedApplication
return NetFwTypeLib.INetFwAuthorizedApplication

GetNetFwMgr() public static method

Creates an instance of the NetFwMgr Class
public static GetNetFwMgr ( ) : NetFwTypeLib.INetFwMgr
return NetFwTypeLib.INetFwMgr

GetNetFwOpenPort() public static method

Creates an instance of the NetFwOpenPort Class
public static GetNetFwOpenPort ( ) : NetFwTypeLib.INetFwOpenPort
return NetFwTypeLib.INetFwOpenPort

InstallApplication() public static method

Installs a UA application.
public static InstallApplication ( InstalledApplication application, bool autostart, bool configureFirewall ) : void
application InstalledApplication
autostart bool
configureFirewall bool
return void

LocallyRegisterCertificateOIDs() public static method

Registers the object ids required to access the certificate.
public static LocallyRegisterCertificateOIDs ( X509Certificate2 certificate ) : void
certificate System.Security.Cryptography.X509Certificates.X509Certificate2
return void

LocallyRegisterCertificateOIDs() public static method

Registers the object ids required to access the certificate.
This function is used to work around a bug in .NET which results in long delays while OIDs are looked up in Active Directory. CryptFindOIDInfo is supposed to work like this: 1. A table of OID entries is constructed from registry entries with the CRYPT_INSTALL_OID_INFO_BEFORE_FLAG flag. This table is searched first. 2. An internal table of OID entries is then searched. Default OIDs that Microsoft knows about. 3. A table of OIDs constructed from the registry entries without the CRYPT_INSTALL_OID_INFO_BEFORE_FLAG flag is then searched. 4. Active Directory is searched. When registering the OID information with CryptRegisterOIDInfo(ptrInfo, 0) and hack the registry this is what will happen: 1. Any application that searches for an OID (with the OID flag) will find it at step 2. The OID will be correct as well as the friendly name since it uses CryptoAPI's internal table. 2. Any application that searches for a friendly name (with the friendly name flag) will find it as step 2. The OID info is good as stated above. 3. .NET code which searches for an OID (with the friendly name flag) will find the entry in step 3 because of our hack. 4. Any OIDs that isn't found at this point will be searched in the Active Directory. This code needs to be run once for each public key type.
public static LocallyRegisterCertificateOIDs ( string OIDs ) : void
OIDs string
return void

ProcessCommandLine() public static method

Checks if command line arguments specify configuration commands.
public static ProcessCommandLine ( ) : bool
return bool

ProcessCommandLine() public static method

Checks if arguments specify configuration commands.
public static ProcessCommandLine ( string args ) : bool
args string The arguments passed to the executable.
return bool

ProgIDFromCLSID() public static method

Returns the prog id from the clsid.
public static ProgIDFromCLSID ( System.Guid clsid ) : string
clsid System.Guid
return string

RegisterClassInCategory() public static method

Registers the classes in the specified category.
public static RegisterClassInCategory ( System.Guid clsid, System.Guid catid ) : void
clsid System.Guid
catid System.Guid
return void

RegisterClassInCategory() public static method

Registers the classes in the specified category.
public static RegisterClassInCategory ( System.Guid clsid, System.Guid catid, string description ) : void
clsid System.Guid
catid System.Guid
description string
return void

RegisterComTypes() public static method

Registers the COM types in the specified assembly.
public static RegisterComTypes ( string filePath ) : List
filePath string
return List

ReleaseServer() public static method

Releases the server if it is a true COM server.
public static ReleaseServer ( object server ) : void
server object
return void

RemoveFirewallAccess() public static method

Removes the firewall access granted to the specified ports.
public static RemoveFirewallAccess ( ) : void
return void

RemoveFirewallAccess() public static method

Configures the firewall to remove access to the specified application.
public static RemoveFirewallAccess ( Opc application, string executablePath ) : void
application Opc
executablePath string
return void

RemoveFirewallAccess() public static method

Configures the firewall to remove access to the specified application.
public static RemoveFirewallAccess ( string executablePath, IList baseAddresses ) : void
executablePath string
baseAddresses IList
return void

SetFirewallAccess() public static method

Configures the firewall to allow access to the specified application.
public static SetFirewallAccess ( Opc application, string executablePath ) : void
application Opc
executablePath string
return void

SetFirewallAccess() public static method

Returns the firewall access granted to an application.
public static SetFirewallAccess ( string executablePath ) : void
executablePath string
return void

SetFirewallAccess() public static method

Configures the firewall to allow access to the specified application.
public static SetFirewallAccess ( string applicationName, string executablePath, IList baseAddresses ) : void
applicationName string
executablePath string
baseAddresses IList
return void

UninstallApplication() public static method

Uninstalls a UA application.
public static UninstallApplication ( InstalledApplication application ) : void
application InstalledApplication
return void

UnregisterClassInCategory() public static method

Unregisters the classes in the specified category.
public static UnregisterClassInCategory ( System.Guid clsid, System.Guid catid ) : void
clsid System.Guid
catid System.Guid
return void

UnregisterComServer() public static method

Removes the registration for a COM server from the registry.
public static UnregisterComServer ( System.Guid clsid ) : void
clsid System.Guid
return void

UnregisterComTypes() public static method

Unregisters the COM types in the specified assembly.
public static UnregisterComTypes ( string filePath ) : List
filePath string
return List

UpdateConfigurationLocation() public static method

Updates the configuration location for the specified
public static UpdateConfigurationLocation ( string executablePath, string configurationPath ) : void
executablePath string
configurationPath string
return void

Property Details

CATID_OPCAEServer10 public_oe static_oe property

COM servers that support the AE 1.0 specification.
public static Guid,System CATID_OPCAEServer10
return System.Guid

CATID_OPCDAServer20 public_oe static_oe property

COM servers that support the DA 2.0 specification.
public static Guid,System CATID_OPCDAServer20
return System.Guid

CATID_OPCDAServer30 public_oe static_oe property

COM servers that support the DA 3.0 specification.
public static Guid,System CATID_OPCDAServer30
return System.Guid

CATID_OPCHDAServer10 public_oe static_oe property

COM servers that support the HDA 1.0 specification.
public static Guid,System CATID_OPCHDAServer10
return System.Guid

CATID_PseudoComServers public_oe static_oe property

The category identifier for UA servers that are registered as COM servers on a machine.
public static Guid,System CATID_PseudoComServers
return System.Guid

CLSID_UaComAeProxyServer public_oe static_oe property

The CLSID for the UA COM AE server host process (note: will be eventually replaced the proxy server).
public static Guid,System CLSID_UaComAeProxyServer
return System.Guid

CLSID_UaComDaProxyServer public_oe static_oe property

The CLSID for the UA COM DA server host process (note: will be eventually replaced the proxy server).
public static Guid,System CLSID_UaComDaProxyServer
return System.Guid

CLSID_UaComHdaProxyServer public_oe static_oe property

The CLSID for the UA COM HDA server host process (note: will be eventually replaced the proxy server).
public static Guid,System CLSID_UaComHdaProxyServer
return System.Guid