使用 Inno Setup 更改计算机名称
Changing the computer name with Inno Setup
有没有办法用 Inno Setup 更改您的计算机名称?我是 Inno Setup 的新手,但我搜索了很多,但没有找到任何示例。我知道您可以使用常量 {computername}
访问计算机名称,但似乎没有更改它的功能。
我想过用[Registry]
段更改HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName
中计算机名的注册表项,但我不知道如果我使用语法创建一个新项会发生什么。它会覆盖它吗?它会给我一个错误吗?任何想法将不胜感激。
创建新密钥的语法示例
Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName"; ValueType: string; ValueName: "ComputerName"; ValueData: "MyNewComputerName";
你应该打电话给 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 版本上测试(Inno Setup 6 的唯一版本)。
更改注册表项也可能有效。只是你应该使用 ComputerName
键(而不是 ActiveComputerName
)并重新启动。
否则我相信您的语法是正确的。虽然我没有测试它。但是请注意 maximal computer name length 是 15 个字符(所以 MyNewComputerName
太长了)。
有没有办法用 Inno Setup 更改您的计算机名称?我是 Inno Setup 的新手,但我搜索了很多,但没有找到任何示例。我知道您可以使用常量 {computername}
访问计算机名称,但似乎没有更改它的功能。
我想过用[Registry]
段更改HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName
中计算机名的注册表项,但我不知道如果我使用语法创建一个新项会发生什么。它会覆盖它吗?它会给我一个错误吗?任何想法将不胜感激。
创建新密钥的语法示例
Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName"; ValueType: string; ValueName: "ComputerName"; ValueData: "MyNewComputerName";
你应该打电话给 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 版本上测试(Inno Setup 6 的唯一版本)。
更改注册表项也可能有效。只是你应该使用 ComputerName
键(而不是 ActiveComputerName
)并重新启动。
否则我相信您的语法是正确的。虽然我没有测试它。但是请注意 maximal computer name length 是 15 个字符(所以 MyNewComputerName
太长了)。