
# winos

Windows 系统操作模块，属于内置模块，无需使用[import](/zh/api/scripts/builtin-modules/import)导入，可直接脚本域调用其接口。

## winos.version

- 获取 windows 系统版本

#### 函数原型

::: tip API
```lua
winos.version()
```
:::


#### 参数说明

此函数不需要参数。

#### 用法说明

返回的版本是 semver 语义版本对象

```lua
if winos.version():ge("win7") then
    -- ...
end

if winos.version():ge("6.1") then
    -- ...
end
```

并且，还可以支持对 windows 版本名的直接判断，映射规则如下：

```

nt4      = "4.0"
win2k    = "5.0"
winxp    = "5.1"
ws03     = "5.2"
win6     = "6.0"
vista    = "6.0"
ws08     = "6.0"
longhorn = "6.0"
win7     = "6.1"
win8     = "6.2"
winblue  = "6.3"
win81    = "6.3"
win10    = "10.0"
```

## winos.registry_keys

- 获取注册表建列表

#### 函数原型

::: tip API
```lua
winos.registry_keys(pattern: <string>)
```
:::


#### 参数说明

| 参数 | 描述 |
|------|------|
| pattern | 用于匹配注册表键的模式字符串 |

#### 用法说明

支持通过模式匹配的方式，遍历获取注册表键路径列表，`*` 为单级路径匹配，`**` 为递归路径匹配。

```lua
local keypaths = winos.registry_keys("HKEY_LOCAL_MACHINE\\SOFTWARE\\*\\Windows NT\\*\\CurrentVersion\\AeDebug")
for _, keypath in ipairs(keypaths) do
    print(winos.registry_query(keypath .. ";Debugger"))
end
```

## winos.registry_values

- 获取注册表值名列表

#### 函数原型

::: tip API
```lua
winos.registry_values(pattern: <string>)
```
:::


#### 参数说明

| 参数 | 描述 |
|------|------|
| pattern | 用于匹配注册表值的模式字符串 |

#### 用法说明

支持通过模式匹配的方式，获取指定键路径的值名列表，`;` 之后的就是指定的键名模式匹配字符串。

```lua
local valuepaths = winos.registry_values("HKEY_LOCAL_MACHINE\\SOFTWARE\\xx\\AeDebug;Debug*")
for _, valuepath in ipairs(valuepaths) do
    print(winos.registry_query(valuepath))
end
```

## winos.registry_query

- 获取注册表建值

#### 函数原型

::: tip API
```lua
winos.registry_query(keypath: <string>)
```
:::


#### 参数说明

| 参数 | 描述 |
|------|------|
| keypath | 注册表键路径 |

#### 用法说明

获取指定注册表建路径下的值，如果没有指定值名，那么获取键路径默认值

```lua
local value, errors = winos.registry_query("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AeDebug")
local value, errors = winos.registry_query("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AeDebug;Debugger")
```
