mirror of
https://github.com/Microsoft/sql-server-samples.git
synced 2025-12-08 14:58:54 +00:00
174 lines
4.9 KiB
Markdown
174 lines
4.9 KiB
Markdown
# Registry probe
|
|
|
|
**Type code:** *Registry*
|
|
|
|
Registry probes obtain data from the target machine registry.
|
|
|
|
## Implementation parameters
|
|
|
|
Registry probe implementation has the following parameters.
|
|
|
|
| Parameter | Required | Type | Default | Description |
|
|
|-----------|:--------:|:------:|:-------:|-----------------------------------|
|
|
| query | Required | object | | Tree-like structure specifying Registry keys and values to collect see [Registry query](#registry-query) |
|
|
| instance | Optional | bool | *false* | Indicates whether the probe should return data specific to this SQL Server instance see [Instance specific data](#instance-specific-data) |
|
|
|
|
### Registry query
|
|
|
|
Registry query is a complex JSON object.
|
|
|
|
Top-level properties represent registry hives including *HKEY_LOCAL_MACHINE* and *HKEY_CURRENT_USER*.
|
|
|
|
Each top-level property value is another JSON object. Its properties represent registry keys. The property name is the full path from the hive to the key.
|
|
|
|
Use the `*` (asterisk) symbol at any level to enumerate all keys. The key name replacing * will be returned in `@RegistryKeyName` variable.
|
|
|
|
The value for each key property is an array of registry value names to read. Multi-string values are read as multiple string values with the same name.
|
|
|
|
### Instance specific data
|
|
|
|
When `instance` property is *true*, the probe replaces **MSSQLSERVER** in paths with registry path specific for this SQL Server instance. E.g. the following registry path:
|
|
|
|
```
|
|
Software\Microsoft\MSSQLSERVER\SQLServerAgent
|
|
```
|
|
|
|
will be replace with the following instance-specific one:
|
|
|
|
```
|
|
Software\Microsoft\Microsoft SQL Server\MSSQL12.SQL2014\SQLServerAgent
|
|
```
|
|
|
|
where **MSSQL12.SQL2014** is the SQL Server instance name.
|
|
|
|
### Example 1
|
|
|
|
The following registry query returns 2 values for for system hardware. Please, note how multi-string value is handled as multiple strings. Use [join aggregate function](../DataMorphs/aggregate.md#join) to merge them when needed.
|
|
|
|
```json
|
|
"probes": {
|
|
"MuRegistryProbe": [
|
|
{
|
|
"type": "Registry",
|
|
"target": { "type": "Server" },
|
|
"implementation": {
|
|
"query": {
|
|
"HKEY_LOCAL_MACHINE":{
|
|
"HARDWARE\\DESCRIPTION\\System": [
|
|
"Identifier",
|
|
"SystemBiosVersion"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
Output:
|
|
|
|
| @Identifier | @SystemBiosVersion |
|
|
|--------------------|-------------------------------|
|
|
| "AT/AT COMPATIBLE" | "ALASKA - 1072009" |
|
|
| "AT/AT COMPATIBLE" | "3802" |
|
|
| "AT/AT COMPATIBLE" | "American Megatrends - 5000C" |
|
|
|
|
### Example 2
|
|
|
|
Use asterisk '*' to enumerate all subkeys of the given key. The following registry query returns processor id and an identifier of its vendor:
|
|
|
|
```json
|
|
{
|
|
"type": "Registry",
|
|
"target": { "type": "Server" },
|
|
"implementation": {
|
|
"query": {
|
|
"HKEY_LOCAL_MACHINE":{
|
|
"HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\*": [
|
|
"VendorIdentifier"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
Output:
|
|
|
|
| @RegistryKeyName | @VendorIdentifier |
|
|
|------------------|-------------------|
|
|
| 0 | "Genuine Intel" |
|
|
| 1 | "Genuine Intel" |
|
|
| 2 | "Genuine Intel" |
|
|
| 3 | "Genuine Intel" |
|
|
|
|
### Example 3
|
|
|
|
The following registry query gets an identifier for each hardware item.
|
|
|
|
```json
|
|
{
|
|
"HKEY_LOCAL_MACHINE": {
|
|
"HARDWARE\\DESCRIPTION\\*": [
|
|
"Identifier"
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
### Example 4
|
|
|
|
Use at-sign '@' to insert probe parameters int the registry query. The following check gets two registry keys `HKEY_LOCAL_MACHINE\SOFTWARE\Policies\test` and `HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\some\test`, and compares each to the 'result' string.
|
|
|
|
```json
|
|
"rules": [
|
|
{
|
|
"id": "MyKeys",
|
|
"itemType": "definition",
|
|
"target": {
|
|
"type": "Server",
|
|
"platform": "Windows"
|
|
},
|
|
"displayName": "My custom keys",
|
|
"message": "The current key is @{test}",
|
|
"testParam": "test",
|
|
"resultParam": "result",
|
|
"hiveParam": "Policies",
|
|
"condition": {
|
|
"@test": "@resultParam"
|
|
},
|
|
"probes": [
|
|
{
|
|
"id": "myprobe",
|
|
"params": {
|
|
"hiveParam": "@hiveParam",
|
|
"testParam": "@testParam"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"probes": {
|
|
"myprobe": [
|
|
{
|
|
"type": "Registry",
|
|
"target": {
|
|
"type": "Server",
|
|
"platform": "Windows",
|
|
"instance": true
|
|
},
|
|
"implementation": {
|
|
"query": {
|
|
"HKEY_LOCAL_MACHINE": {
|
|
"SOFTWARE\\@{hiveParam}": [ "@{testParam}" ],
|
|
"SOFTWARE\\@{hiveParam}\\Microsoft\\some": [ "@{testParam}" ]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|