1

有没有办法使用 Inno Setup 更改您的计算机名称?我是 Inno Setup 的新手,但我搜索了很多,但没有找到任何示例。我知道您可以使用常量访问计算机名称{computername},但似乎没有更改它的功能。

我想过在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerNamewith section中更改计算机名称的注册表项[Registry],但我不知道如果我使用该语法创建一个新键会发生什么。它会覆盖它吗?它会给我一个错误吗?任何想法,将不胜感激。

创建新密钥的语法示例

Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName"; ValueType: string; ValueName: "ComputerName"; ValueData: "MyNewComputerName";
4

1 回答 1

2

您应该调用SetComputerNameAPI 函数

此外,由于计算机名称更改只有在计算机重新启动后才有效,因此您应该将AlwaysRestart指令设置为yes使安装程序在安装后重新启动计算机。

[Setup]
AlwaysRestart=yes

[Code]

function SetComputerName(lpComputerName: PAnsiChar): BOOL;
    external 'SetComputerNameA@kernel32.dll stdcall';

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssInstall then
  begin
    Log('Changing computer name');
    if SetComputerName('MyNewName') then
    begin
      Log('Computer name changed');
    end
      else
    begin
      Log('Failed to change computer name - ' + SysErrorMessage(DLLGetLastError));
    end;
  end;
end;

在Inno Setup 的Unicode版本(Inno Setup 6 的唯一版本)上测试。


更改注册表项也可能有效。只是你应该使用ComputerNamekey (不是ActiveComputerName)并重新启动。

我相信你的语法是正确的。虽然我没有测试。但是请注意,计算机名称的最大长度为 15 个字符(因此MyNewComputerName太长了)。

于 2015-11-26T20:26:59.837 回答