0

我需要根据从 cake 脚本中找到 32/64 位系统来创建一个注册表项。我可以在 C# cake 站点中看到文件操作参考、目录操作参考。但我在 C# cake 中找不到与注册表相关的参考。任何人都可以让我知道是否有任何选项可以使用 C# cake 创建注册表项?如果有,请注明参考链接。这将对我继续编写蛋糕脚本有很大帮助。

4

2 回答 2

4

除了使用 C#,您还可以使用Reg.exe所有主要版本的 Windows 随附的。

您可以使用StartProcess别名将此工具与 Cake 一起使用。

下面是一个这样做的例子:

DirectoryPath   system32Path    = Context.Environment
                                    .GetSpecialPath(SpecialPath.Windows)
                                    .Combine("System32");
FilePath        regPath         = system32Path.CombineWithFilePath("reg.exe");
string          keyName         = "HKEY_CURRENT_USER\\Software\\Cake";
string          valueName       = "Rocks";
string          valueData       = "1";
ProcessSettings regSettings     = new ProcessSettings()
                                    .WithArguments(
                                        arguments => arguments
                                            .Append("add")
                                            .AppendQuoted(keyName)
                                            .Append("/f")
                                            .AppendSwitchQuoted("/v", valueName)
                                            .AppendSwitchQuoted("/t", "REG_DWORD")
                                            .AppendSwitchQuoted("/d", valueData)
                                        );

int result = StartProcess(regPath, regSettings);

if (result == 0)
{
    Information("Registry value successfully set");
}
else
{
    Information("Failed to set registry value");
}
于 2016-11-09T08:35:49.423 回答
2

目前,没有用于注册表的 Cake 别名。话虽如此,没有什么可以阻止您使用标准 C# 类型直接操作注册表。

一种此类方法的示例如下:

在 C# 应用程序中写入注册表

Cake 为更复杂的事情提供了许多别名,但是请记住,别名中提供的几乎所有内容都可以直接在主脚本中使用 C# 完成。别名只是为了方便。

于 2016-11-09T07:18:23.687 回答