有没有办法通过Inno Setup更改您的计算机名称?我是Inno Setup的新手,但是我搜索的很多,我还没有找到任何一个例子。我知道您可以使用常量{computername}
访问计算机名称,但似乎没有更改它的功能。
我考虑过使用HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName
部分更改[Registry]
中计算机名称的注册表项,但我不知道如果我使用语法创建新密钥会发生什么。它会覆盖它吗?它会给我一个错误吗?任何想法都将不胜感激。
创建新密钥的语法示例
Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName"; ValueType: string; ValueName: "ComputerName"; ValueData: "MyNewComputerName";
答案 0 :(得分:2)
您应该致电SetComputerName
API function。
此外,由于计算机名称更改仅在计算机重新启动后才有效,因此您应将AlwaysRestart
directive设置为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 版本上测试。
更改注册表项也可能有效。只是你应该使用ComputerName
密钥(而不是ActiveComputerName
)并重启。
我相信你的语法是正确的。虽然我没有测试它。但请注意,maximal computer name length为15个字符(因此MyNewComputerName
太长)。