Files
Administrator 14893e62a5 feat: Geutebruck GeViScope/GeViSoft Action Mapping System - MVP
This MVP release provides a complete full-stack solution for managing action mappings
in Geutebruck's GeViScope and GeViSoft video surveillance systems.

## Features

### Flutter Web Application (Port 8081)
- Modern, responsive UI for managing action mappings
- Action picker dialog with full parameter configuration
- Support for both GSC (GeViScope) and G-Core server actions
- Consistent UI for input and output actions with edit/delete capabilities
- Real-time action mapping creation, editing, and deletion
- Server categorization (GSC: prefix for GeViScope, G-Core: prefix for G-Core servers)

### FastAPI REST Backend (Port 8000)
- RESTful API for action mapping CRUD operations
- Action template service with comprehensive action catalog (247 actions)
- Server management (G-Core and GeViScope servers)
- Configuration tree reading and writing
- JWT authentication with role-based access control
- PostgreSQL database integration

### C# SDK Bridge (gRPC, Port 50051)
- Native integration with GeViSoft SDK (GeViProcAPINET_4_0.dll)
- Action mapping creation with correct binary format
- Support for GSC and G-Core action types
- Proper Camera parameter inclusion in action strings (fixes CrossSwitch bug)
- Action ID lookup table with server-specific action IDs
- Configuration reading/writing via SetupClient

## Bug Fixes
- **CrossSwitch Bug**: GSC and G-Core actions now correctly display camera/PTZ head parameters in GeViSet
- Action strings now include Camera parameter: `@ PanLeft (Comment: "", Camera: 101028)`
- Proper filter flags and VideoInput=0 for action mappings
- Correct action ID assignment (4198 for GSC, 9294 for G-Core PanLeft)

## Technical Stack
- **Frontend**: Flutter Web, Dart, Dio HTTP client
- **Backend**: Python FastAPI, PostgreSQL, Redis
- **SDK Bridge**: C# .NET 8.0, gRPC, GeViSoft SDK
- **Authentication**: JWT tokens
- **Configuration**: GeViSoft .set files (binary format)

## Credentials
- GeViSoft/GeViScope: username=sysadmin, password=masterkey
- Default admin: username=admin, password=admin123

## Deployment
All services run on localhost:
- Flutter Web: http://localhost:8081
- FastAPI: http://localhost:8000
- SDK Bridge gRPC: localhost:50051
- GeViServer: localhost (default port)

Generated with Claude Code (https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 18:10:54 +01:00

206 lines
26 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html xmlns:MadCap="http://www.madcapsoftware.com/Schemas/MadCap.xsd" lang="en" xml:lang="en" data-mc-search-type="Stem" data-mc-help-system-file-name="index.xml" data-mc-path-to-help-system="../" data-mc-target-type="WebHelp2" data-mc-runtime-file-type="Topic" data-mc-preload-images="false" data-mc-in-preview-mode="false" data-mc-toc-path="GeViScope SDK|GeViScope Software Development Kit (SDK)|Using the SDK with .NET">
<!-- saved from url=(0014)about:internet -->
<head>
<meta charset="utf-8" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>0171GSC_Registry</title>
<link href="../Skins/Default/Stylesheets/TextEffects.css" rel="stylesheet" />
<link href="../Skins/Default/Stylesheets/Topic.css" rel="stylesheet" />
<link href="Resources/Stylesheets/Styles.css" rel="stylesheet" />
<script src="../Resources/Scripts/jquery.min.js">
</script>
<script src="../Resources/Scripts/plugins.min.js">
</script>
<script src="../Resources/Scripts/require.min.js">
</script>
<script src="../Resources/Scripts/require.config.js">
</script>
<script src="../Resources/Scripts/MadCapAll.js">
</script>
</head>
<body>
<div class="MCBreadcrumbsBox_0"><span class="MCBreadcrumbsPrefix">| </span><a class="MCBreadcrumbsLink" href="Titel.htm">GeViScope SDK</a><span class="MCBreadcrumbsDivider"> &gt; </span><a class="MCBreadcrumbsLink" href="010GeViScope_SDK.htm">GeViScope Software Development Kit (SDK)</a><span class="MCBreadcrumbsDivider"> &gt; </span><a class="MCBreadcrumbsLink" href="017Using_SDK_DotNet.htm">Using the SDK with .NET</a><span class="MCBreadcrumbsDivider"> &gt; </span><span class="MCBreadcrumbs">GeViScope Registry</span>
</div>
<h2 xmlns="http://www.w3.org/TR/REC-html40">GeViScope REGISTRY</h2>
<h3 xmlns="http://www.w3.org/TR/REC-html40">Using the GscRegistry with .NET</h3>
<p style="font-weight: bold;" xmlns="http://www.w3.org/TR/REC-html40">Introduction</p>
<p xmlns="http://www.w3.org/TR/REC-html40">By using the GeViScope registry (GSCREGISTRY) it is possible to modify GeViScope/Re_porter settings programmatically. The GscRegistry is a proprietary registry format developed by GEUTEBRÜCK. This registry format is similar to the Microsoft Windows registry.</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p xmlns="http://www.w3.org/TR/REC-html40">All needed GeViScope server settings are stored in the GscRegistry database. The creation of own registry databases based on files is also possible.</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p xmlns="http://www.w3.org/TR/REC-html40">The GEUTEBRÜCK GEVISCOPE SDK provides several classes and methods to allow a comfortable access to the GscRegistry.</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p style="font-weight: bold;" xmlns="http://www.w3.org/TR/REC-html40">Requirements</p>
<p xmlns="http://www.w3.org/TR/REC-html40">The following requirements are needed to create a .NET application that uses the GscRegistry functionality:</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p xmlns="http://www.w3.org/TR/REC-html40">• .NET-Framework 2.0 SP1 or newer</p>
<p style="margin-left: 25px;" xmlns="http://www.w3.org/TR/REC-html40">- .NET-Framework 2.0 SP1 Wrapper-Assemblies:</p>
<p style="margin-left: 50px;" xmlns="http://www.w3.org/TR/REC-html40">GscExceptionsNET_2_0.dll</p>
<p style="margin-left: 50px;" xmlns="http://www.w3.org/TR/REC-html40">GscDBINET_2_0.dll</p>
<p style="margin-left: 25px;" xmlns="http://www.w3.org/TR/REC-html40">- .NET-Framework 4.0 Wrapper-Assemblies:</p>
<p style="margin-left: 50px;" xmlns="http://www.w3.org/TR/REC-html40">GscExceptionsNET_4_0.dll</p>
<p style="margin-left: 50px;" xmlns="http://www.w3.org/TR/REC-html40">GscDBINET_4_0.dll</p>
<p xmlns="http://www.w3.org/TR/REC-html40">• Native Win32-DLLs, used by the .NET-Wrapper:</p>
<p style="margin-left: 25px;" xmlns="http://www.w3.org/TR/REC-html40">- GscActions.dll</p>
<p style="margin-left: 25px;" xmlns="http://www.w3.org/TR/REC-html40">- GscDBI.dll</p>
<p style="margin-left: 25px;" xmlns="http://www.w3.org/TR/REC-html40">- GscMediaPlayer.dll</p>
<p style="margin-left: 25px;" xmlns="http://www.w3.org/TR/REC-html40">- GscHelper.dll</p>
<p style="margin-left: 25px;" xmlns="http://www.w3.org/TR/REC-html40">- MscDBI.dll</p>
<p xmlns="http://www.w3.org/TR/REC-html40">• Microsoft Visual C++ Redistributable Package</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p style="font-weight: bold;" xmlns="http://www.w3.org/TR/REC-html40">Using the registry</p>
<p xmlns="http://www.w3.org/TR/REC-html40">In the following, the usage of the GscRegistry with .NET is explained in detail. It discusses the following steps:</p>
<ul xmlns="http://www.w3.org/TR/REC-html40">
<li value="1">Open the registry</li>
<li value="2"> Read values out of nodes</li>
<li value="3">Create a node</li>
<li value="4">Add values to a node</li>
<li value="5">Save the registry</li>
</ul>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p xmlns="http://www.w3.org/TR/REC-html40">All necessary classes and methods for using the GscRegistry are available in the GscDBI namespace. To include this namespace the following using-statement is needed:</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p class="CODEetc" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #4169e1;">using</span> GEUTEBRUECK.GeViScope.Wrapper.DBI;</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p class="GutZuWissenHeader" xmlns="http://www.w3.org/TR/REC-html40">Open the registry</p>
<p xmlns="http://www.w3.org/TR/REC-html40">To read or modify GeViScope/Re_porter settings it is necessary to establish a connection to the preferred GeViScope/Re_porter server before. After this is done you need to create a new object of the class GscRegistry and initialize it by using the CreateRegistry() method which is contained in the GscServer object.</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p style="font-weight: normal;" xmlns="http://www.w3.org/TR/REC-html40">C#-Code: Open the registry</p>
<p style="font-weight: normal;" xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p style="font-family: 'Courier New';font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #4169e1;">if </span><span style="color: #808080;">(_GscServer !=</span> <span style="color: #4169e1;">null</span><span style="color: #808080;">)</span></p>
<p style="font-family: 'Courier New';font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #808080;">{</span>
</p>
<p style="margin-left: 25px;font-family: 'Courier New';font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #008000;">// create an object instance of the server registry</span>
</p>
<p style="margin-left: 25px;font-family: 'Courier New';font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #48d1cc;">GscRegistry</span> <span style="color: #808080;">GscRegistry = _GscServer.CreateRegistry();</span></p>
<p style="margin-left: 25px;font-family: 'Courier New';font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #4169e1;">if </span>(GscRegistry != <span style="color: #4169e1;">null</span>)</p>
<p style="margin-left: 25px;font-family: 'Courier New';font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40">{</p>
<p style="margin-left: 50px;font-family: 'Courier New';font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #008000;">// define an array for the setup read request (registry node paths to read)</span>
</p>
<p style="margin-left: 50px;font-family: 'Courier New';font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #48d1cc;">GscRegistryReadRequest</span><span style="color: #808080;">[] ReadRequests = </span><span style="color: #4169e1;">new </span><span style="color: #48d1cc;">GscRegistryReadRequest</span><span style="color: #808080;">[1];</span>
</p>
<p style="margin-left: 50px;font-family: 'Courier New';font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #808080;">ReadRequests[0] =</span> <span style="color: #4169e1;">new </span><span style="color: #48d1cc;">GscRegistryReadRequest</span>(<span style="color: #ff0000;">"/"</span><span style="color: #808080;">, 0);</span></p>
<p style="margin-left: 50px;font-family: 'Courier New';font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #008000;">// read the nodes (setup data) out of the server registry</span>
</p>
<p style="margin-left: 50px;font-family: 'Courier New';color: #808080;font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40">GscRegistry.ReadNodes(ReadRequests);</p>
<p style="margin-left: 25px;font-family: 'Courier New';color: #808080;font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40">}</p>
<p style="font-family: 'Courier New';color: #808080;font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40">}</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p xmlns="http://www.w3.org/TR/REC-html40">The method <i>ReadNodes()</i> of the GscRegistry object expects an array of the type <i>GscRegistryReadRequest</i> which contains all node paths to be read out of the registry. In the source code snippet above, the array simply contains one element which represents the root node (“/”). By reading the root node the entire registry will be read out.</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p class="BeispielHeader" xmlns="http://www.w3.org/TR/REC-html40">Read values of nodes</p>
<p xmlns="http://www.w3.org/TR/REC-html40">The following source code snippet shows how to read values out of nodes:</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p style="font-weight: normal;" xmlns="http://www.w3.org/TR/REC-html40">C#-Code: Read values out of nodes</p>
<p style="font-weight: normal;" xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p style="font-family: 'Courier New';font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #4169e1;">if</span><span style="color: #808080;"> (GscRegistry !=</span> <span style="color: #4169e1;">null</span><span style="color: #808080;">)</span></p>
<p style="color: #808080;font-family: 'Courier New';font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40">{</p>
<p style="margin-left: 25px;font-family: 'Courier New';font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #48d1cc;">GscRegNode </span><span style="color: #808080;">RegNode = GscRegistry.FindNode(</span>"/System/MediaChannels/"<span style="color: #808080;">);</span></p>
<p style="margin-left: 25px;font-family: 'Courier New';font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p style="margin-left: 25px;font-family: 'Courier New';font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #4169e1;">for</span><span style="color: #808080;"> (</span><span style="color: #4169e1;">int</span><span style="color: #808080;"> i = 0; i &lt; RegNode.SubNodeCount; ++i)</span>
</p>
<p style="margin-left: 25px;font-family: 'Courier New';font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #808080;">{</span>
</p>
<p style="margin-left: 50px;font-family: 'Courier New';font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #008000;">// find the GeViScope registry node of the parent node by means of the index</span>
</p>
<p style="margin-left: 50px;font-family: 'Courier New';font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #48d1cc;">GscRegNode</span> <span style="color: #808080;">SubRegNode = RegNode.SubNodeByIndex(i);</span></p>
<p style="margin-left: 50px;font-family: 'Courier New';font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #48d1cc;">GscRegVariant</span> <span style="color: #808080;">RegVariant = <span style="color: #4169e1;">new </span>GscRegVariant();</span></p>
<p style="margin-left: 50px;font-family: 'Courier New';font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p style="margin-left: 50px;color: #008000;font-family: 'Courier New';font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40">// Get the value "Name" out of the sub registry type and store the value and</p>
<p style="margin-left: 50px;color: #008000;font-family: 'Courier New';font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40">// value type in the GscRegVariant class</p>
<p style="margin-left: 50px;font-family: 'Courier New';font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #808080;">SubRegNode.GetValueInfoByName("Name", <span style="color: #4169e1;">ref </span>RegVariant);</span>
</p>
<p style="margin-left: 50px;font-family: 'Courier New';font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p style="margin-left: 50px;color: #808080;font-family: 'Courier New';font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #4169e1;">if </span>(RegVariant != <span style="color: #4169e1;">null </span>&amp;&amp; RegVariant.ValueType == <span style="color: #48d1cc;">GscNodeType</span>.ntWideString)</p>
<p style="margin-left: 50px;color: #808080;font-family: 'Courier New';font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40">Console.WriteLine(RegVariant.Value.WideStringValue);</p>
<p style="margin-left: 25px;color: #808080;font-family: 'Courier New';font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40">}</p>
<p style="color: #808080;font-family: 'Courier New';font-size: 9pt;" xmlns="http://www.w3.org/TR/REC-html40">}</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p xmlns="http://www.w3.org/TR/REC-html40">To read a specific node out of the registry the <i>GscRegistry</i> class provides the method <i>FindNode()</i>.</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p xmlns="http://www.w3.org/TR/REC-html40">For that the path to the preferred node has to be committed to the method and it you will get back an object of the type of <i>GscRegNode</i>. This object contains all sub nodes and values of the found node.</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p xmlns="http://www.w3.org/TR/REC-html40">To access a sub node of the parent node the method <i>SubNodeByIndex()</i> provided by the class <i>GscRegNode</i> can be used or use the <i>SubNodeByName()</i> method if the name of the sub node is already known.</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p xmlns="http://www.w3.org/TR/REC-html40">The method <i>GetValueInfoByName()</i> can be used to access a specific value of a node. This method expects the name of the specific value as well as a reference to an object of type of <i>GscRegVariant</i>. The <i>GscRegVariant</i> object will be filled with the type of the value (ValueType) as well as the value itself (Value).</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p class="BeispielHeader" xmlns="http://www.w3.org/TR/REC-html40">Create a node</p>
<p xmlns="http://www.w3.org/TR/REC-html40">To create a new node in a parent node the method <i>CreateSubNode()</i> which is provided by the class <i>GscRegNode</i> needs to be called. The method expects the name of the new node.</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p xmlns="http://www.w3.org/TR/REC-html40">C#-Code: Create a node</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p class="CODEetc" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #4169e1;">if </span>(_GscRegistry != <span style="color: #4169e1;">null</span>)</p>
<p class="CODEetc" xmlns="http://www.w3.org/TR/REC-html40">{</p>
<p class="CODEetc" style="margin-left: 25px;" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #48d1cc;">GscRegNode</span> RegNode = _GscRegistry.FindNode(<span style="color: #ff0000;">"/System/MediaChannels/0000"</span>);</p>
<p class="CODEetc" style="margin-left: 25px;" xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p class="CODEetc" style="margin-left: 25px;" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #008000;">// create a new sub node in NodePath</span>
</p>
<p class="CODEetc" style="margin-left: 25px;" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #4169e1;">if </span>(RegNode != <span style="color: #4169e1;">null</span>)</p>
<p class="CODEetc" style="margin-left: 25px;" xmlns="http://www.w3.org/TR/REC-html40">RegNode.CreateSubNode(<span style="color: #ff0000;">"NewNode"</span>);</p>
<p class="CODEetc" xmlns="http://www.w3.org/TR/REC-html40">}</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p class="BeispielHeader" xmlns="http://www.w3.org/TR/REC-html40">Add values to a node</p>
<p xmlns="http://www.w3.org/TR/REC-html40">There are several methods in the class <i>GscRegNode</i> to add values to a node. Depending on the type of the value it is needed to call the right method for writing this type into the registry. For example if you would like to write an Int32 value into the registry you need to use the method <i>WriteInt32()</i>.</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p xmlns="http://www.w3.org/TR/REC-html40">C#-Code: Add values to node</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p class="CODEetc" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #4169e1;">public void</span> AddValue(<span style="color: #4169e1;">string </span>NodePath, <span style="color: #4169e1;">string </span>ValueName, <span style="color: #48d1cc;">GscNodeType </span>ValueType,</p>
<p class="CODEetc" xmlns="http://www.w3.org/TR/REC-html40">object Value)</p>
<p class="CODEetc" xmlns="http://www.w3.org/TR/REC-html40">{</p>
<p class="CODEetc" style="margin-left: 25px;" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #48d1cc;">GscRegNode</span> RegNode = _GscRegistry.FindNode(NodePath);</p>
<p class="CODEetc" style="margin-left: 25px;" xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p class="CODEetc" style="margin-left: 25px;" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #4169e1;">if </span>(RegNode != <span style="color: #4169e1;">null</span>)</p>
<p class="CODEetc" style="margin-left: 25px;" xmlns="http://www.w3.org/TR/REC-html40">{</p>
<p class="CODEetc" style="margin-left: 50px;" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #4169e1;">switch </span>(ValueType)</p>
<p class="CODEetc" style="margin-left: 50px;" xmlns="http://www.w3.org/TR/REC-html40">{</p>
<p class="CODEetc" style="margin-left: 75px;" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #4169e1;">case </span><span style="color: #48d1cc;">GscNodeType</span>.ntWideString:</p>
<p class="CODEetc" style="margin-left: 75px;" xmlns="http://www.w3.org/TR/REC-html40">{</p>
<p class="CODEetc" style="margin-left: 100px;" xmlns="http://www.w3.org/TR/REC-html40">RegNode.WriteWideString(ValueName, Value.ToString());</p>
<p class="CODEetc" style="margin-left: 100px;" xmlns="http://www.w3.org/TR/REC-html40">break;</p>
<p class="CODEetc" style="margin-left: 75px;" xmlns="http://www.w3.org/TR/REC-html40">}</p>
<p class="CODEetc" style="margin-left: 75px;" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #4169e1;">case </span><span style="color: #48d1cc;">GscNodeType</span>.ntInt32:</p>
<p class="CODEetc" style="margin-left: 75px;" xmlns="http://www.w3.org/TR/REC-html40">{</p>
<p class="CODEetc" style="margin-left: 100px;" xmlns="http://www.w3.org/TR/REC-html40">RegNode.WriteInt32(ValueName, <span style="color: #48d1cc;">Convert</span>.ToInt32(Value));</p>
<p class="CODEetc" style="margin-left: 100px;" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #4169e1;">break</span>;</p>
<p class="CODEetc" style="margin-left: 75px;" xmlns="http://www.w3.org/TR/REC-html40">}</p>
<p class="CODEetc" style="margin-left: 50px;" xmlns="http://www.w3.org/TR/REC-html40">}</p>
<p class="CODEetc" style="margin-left: 25px;" xmlns="http://www.w3.org/TR/REC-html40">}</p>
<p class="CODEetc" xmlns="http://www.w3.org/TR/REC-html40">}</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p class="BeispielHeader" xmlns="http://www.w3.org/TR/REC-html40">Save the registry</p>
<p xmlns="http://www.w3.org/TR/REC-html40">After the <i>GscRegistry</i> object was modified (e.g. new nodes/new values), the server also needs to know about the changes made. For this the GscRegistry class provides the method <i>WriteNodes()</i>.</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p xmlns="http://www.w3.org/TR/REC-html40">C#-Code: Add values to node</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p class="CODEetc" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #008000;">// define an array for the setup write request</span>
</p>
<p class="CODEetc" xmlns="http://www.w3.org/TR/REC-html40"><span style="color: #48d1cc;">GscRegistryWriteRequest</span>[] WriteRequests = <span style="color: #4169e1;">new </span><span style="color: #48d1cc;">GscRegistryWriteRequest</span>[1];</p>
<p class="CODEetc" xmlns="http://www.w3.org/TR/REC-html40">WriteRequests[0] = <span style="color: #4169e1;">new </span><span style="color: #48d1cc;">GscRegistryWriteRequest</span>(<span style="color: #ff0000;">"/"</span>, 0);</p>
<p class="CODEetc" xmlns="http://www.w3.org/TR/REC-html40">GscRegistry.WriteNodes(WriteRequests, <span style="color: #4169e1;">true</span>);</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p xmlns="http://www.w3.org/TR/REC-html40">The <i>WriteNodes()</i> method expects an array containing objects of the type of <i>GscRegistryWriteRequest</i>. Each GscRegistryWriteRequest contains a path to a node that has to be saved.</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p class="Notice">&#160;NOTICE</p>
<p class="NoticePrint" xmlns="http://www.w3.org/TR/REC-html40">It is recommended to only add one element to this array which contains the root path (“/”). This results in saving the entire registry structure.</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p style="font-weight: bold;" xmlns="http://www.w3.org/TR/REC-html40">Structure of GSCRegistry</p>
<p xmlns="http://www.w3.org/TR/REC-html40">The GEVISCOPE SDK offers two possibilities to browse the structure of the <i>GscRegistry</i>. By means of the application <i>GscRegEdit</i> that is delivered with the SDK, it is possible to browse or modify the registry similar to Microsofts Windows registry.</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p xmlns="http://www.w3.org/TR/REC-html40">In addition to <i>GscRegEdit</i> you can also use the registry editor which is integrated in GSCSetup. To activate this feature the key combination <i>STRG+ALT+U</i> needs to be actuated. The entry <i>Registry editor</i> in the section <i>Utilities</i> in the navigation bar on the left will now be shown.</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p style="font-weight: bold;" xmlns="http://www.w3.org/TR/REC-html40">Examples</p>
<p xmlns="http://www.w3.org/TR/REC-html40">To get a better idea of how to use the GscRegistry, the GEVISCOPE SDK provides further .NET example applications.</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<p xmlns="http://www.w3.org/TR/REC-html40">The examples can be found in the folder „Examples“ folder in the GeViScopeSDK main folder:</p>
<p xmlns="http://www.w3.org/TR/REC-html40">&#160;</p>
<ul xmlns="http://www.w3.org/TR/REC-html40">
<li value="1">C:\Program Files (x86)\GeViScopeSDK\Examples\VS2008NET\VS2008NET_GscRegEdit<br xmlns="http://www.w3.org/TR/REC-html40" />Simple registry editor, GUI application (Visual Studio 2008)</li>
<li value="2">C:\Program Files (x86)\GeViScopeSDK\Examples\VS2008NET\VS2010NET_GscRegEdit<br xmlns="http://www.w3.org/TR/REC-html40" />Simple registry editor, GUI application (Visual Studio 2010)</li>
<li value="3">C:\Program Files (x86)\GeViScopeSDK\Examples\VS2008NET\VS2008NET_GscRegistryBasics<br xmlns="http://www.w3.org/TR/REC-html40" />Console application (Visual Studio 2008)</li>
<li value="4">C:\Program Files (x86)\GeViScopeSDK\Examples\VS2010NET\VS2010NET_GscRegistryBasics<br xmlns="http://www.w3.org/TR/REC-html40" />Console application (Visual Studio 2010)</li>
</ul>
<p xmlns="http://www.w3.org/TR/REC-html40"> </p>
</body>
</html>