定制远程登陆窗口

本文最初发于UESTC一网深情bbs delphi版

weck
2002-5-29
Midas的远程登陆窗口太简单了,不能让用户选择要连接的服务器的地址
不过好在 通过以下的方法你可以修改这个登陆窗口为你自己非常喜欢
的风格,当然也因此可以记录下别人的登陆密码哦
unit utLogIn;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 
  Dialogs, ExtCtrls, StdCtrls, dxCntner, dxEditor, dxExEdtr, dxEdLib,Registr
y,SConnect,DB;
const
  Software='/Software/Pivot/Wages/1.0';
type
  TRemoteLogin = class(TForm)
    Panel1: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Panel2: TPanel;
    Bevel2: TBevel;
    Bevel1: TBevel;
    edtUserName: TdxEdit;
    edtPassword: TdxEdit;
    btnOk: TButton;
    btnCancel: TButton;
    cbxServerIP: TdxPickEdit;
  private
    { Private declarations }
  protected
    FConnection:TSocketConnection;
    procedure SaveOptions;
    procedure LoadOptions;
  public
    { Public declarations }
  end;
var
  RemoteLogin: TRemoteLogin;
function gxRemoteLoginDialog(var AUserName, APassword: string): Boolean;
implementation
uses utMain;
{$R *.dfm}
procedure TRemoteLogin.LoadOptions;
var
  reg:TRegistry;
begin
  //Load the Options
  reg:=TRegistry.Create;
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    if Reg.OpenKey(Software, True) then
   begin
      cbxServerIP.Items.CommaText:=Reg.ReadString('Server');
      Reg.CloseKey;
    end;
  finally
    Reg.Free;
    inherited;
  end;
end;
procedure TRemoteLogin.SaveOptions;
var
  reg:TRegistry;
begin
  //Load the Saved Options
  if (cbxServerIP.Items.IndexOf(cbxServerIP.Text)=-1) then
    cbxServerIP.Items.Insert(0,cbxServerIP.Text);
  reg:=TRegistry.Create;
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    if Reg.OpenKey(Software, True) then
   begin
      Reg.WriteString('Server',cbxServerIP.Items.CommaText);
      Reg.CloseKey;
    end;
  finally
    Reg.Free;
    inherited;
  end;
end;
function gxRemoteLoginDialog(var AUserName, APassword: string): Boolean;
begin
  with TRemoteLogin.Create(Application) do
  try
    Caption := '远程登录';
    LoadOptions;
    edtUserName.Text := AUserName;
    Result := False;
    if AUserName = '' then ActiveControl := edtUserName;
    if (   cbxServerIP.Items.Count=0) then
      cbxServerIP.ItemIndex:=-1
    else
      cbxServerIP.ItemIndex:=0;
    if ShowModal = mrOk then
    begin
      AUserName := edtUserName.Text;
      APassword := edtPassword.Text;
      frmMain.Connection.Host:=cbxServerIp.Text;
      Result := True;
      SaveOptions;
    end;
  finally
    Free;
  end;

end;
end.
最关键的一句是:
initialization
  RemoteLoginDialogProc := gxRemoteLoginDialog;
--

### Ubuntu 20.04 VNC 远程登录设置与配置教程 #### 准备工作 为了成功在 Ubuntu 20.04 上设置和使用 VNC 进行远程登录,需要满足以下条件: - 已经有一个安装了非 root 管理员用户并配置好 UFW 防火墙的 Ubuntu 20.04 服务器[^1]。 - 至少有一台本地计算机,并已安装支持通过 SSH 隧道连接的 VNC 客户端软件。 #### 步骤 1: 安装桌面环境和 VNC 服务 首先,在服务器上安装图形化桌面环境 GNOME Desktop 和 TigerVNC server。运行以下命令来完成安装: ```bash sudo apt update && sudo apt upgrade -y sudo apt install xfce4 xfce4-goodies tightvncserver -y ``` 这一步将安装 XFCE 桌面环境以及 TightVNC 服务。 #### 步骤 2: 初始化 VNC 密码并启动服务 初始化 VNC 的密码以便后续安全连接到该服务。执行下面的命令: ```bash vncpasswd ``` 输入两次密码后即可创建用于验证身份的安全密钥[^3]。随后可以尝试首次启动 VNC 服务: ```bash vncserver :1 ``` 这里 `:1` 表示第一个显示编号,实际可以根据需求调整为其他数值[^5]。 注意:如果此时立即测试客户端连接可能会遇到空白界面的情况;因此建议先停止当前实例来做更多个性化设定之前的工作: ```bash vncserver -kill :1 ``` #### 步骤 3: 创建自定义配置文件 编辑个人专属的 `.vnc/xstartup` 文件以定制启动行为: ```bash nano ~/.vnc/xstartup ``` 替换原有内容为如下脚本片段(适用于XFCE): ```bash #!/bin/bash xrdb $HOME/.Xresources startxfce4 & ``` 赋予可执行权限给新建好的脚本: ```bash chmod +x ~/.vnc/xstartup ``` 这样就能确保每次重新开启虚拟控制台的时候都会加载正确的窗口管理器。 #### 步骤 4: 开机自动启用 VNC 服务 为了让系统重启之后无需手动干预即能恢复提供远控功能, 可以利用 systemd 来实现这一目标. 首先复制官方样例模板至特定路径下作为基础修改对象: ```bash cp /usr/lib/systemd/user/vncserver@.service ~/.config/systemd/user/ ``` 接着打开它进行必要的参数修正: ```bash nano ~/.config/systemd/user/vncserver@.service ``` 重点在于找到 `[Service]` 小节下的 ExecStart 字段将其改为指向刚才所选的显示器号数; 同时移除可能存在的 `-localhost yes` 参数以免限制外部接入可能性[^2]. 最后保存退出后再依次执行下列指令生效更改并激活定时任务机制: ```bash systemctl --user daemon-reload systemctl --user enable vncserver@:1.service systemctl --user start vncserver@:1.service ``` 至此已经完成了基本的服务部署流程^。 #### 步骤 5: 测试连接 确认防火墙上允许相应的端口流量通行(默认情况下 VNC 使用的是 5900 加上指定显示屏序号构成的具体端口号),比如对于上述例子中的 ":1", 实际监听的就是 TCP/UDP 协议上的 5901 。可以通过添加规则开放对应范围内的通信请求: ```bash sudo ufw allow 5901/tcp sudo ufw status verbose ``` 然后借助前面提到过的任意一款兼容工具发起试连操作看看效果如何吧! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值