使用 winform 制作 windows 远程桌面连接程序,windows 自带了远程桌面连接,我们需要将远程桌面连接集成 到自己的 winform 程序,并实现管理远程主机的配置。
windows 系统自带了远程桌面 activex dll,目录:
此类库无法使用 c# 直接调用,介绍一个工具 AxImp.exe
- c:\Windows\System32\mstscax.dll
https://msdn.microsoft.com/zh-cn/library/8ccdh774(VS.80).aspx ActiveX 控件导入程序将 ActiveX 控件的 COM 类型库中的类型定义转换为 Windows 窗体控件。
在 cmd 输入以下命令
即可生成 AxMSTSCLib.dll,MSTSCLib.dll
- "c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\AxImp.exe" "c:\Windows\System32\mstscax.dll"
- //远程连接核心方法
- private AxMSTSCLib.AxMsRdpClient7 rdpc = null;
- protected void OnCreateControl() {
- rdpc = new AxMSTSCLib.AxMsRdpClient7();
- rdpc.OnDisconnected += new AxMSTSCLib.IMsTscAxEvents_OnDisconnectedEventHandler(rdpc_OnDisconnected);
- this.Controls.Add(rdpc);
- rdpc.Dock = DockStyle.Fill;
- rdpc.BringToFront();
- }
- void rdpc_OnDisconnected(object sender, AxMSTSCLib.IMsTscAxEvents_OnDisconnectedEvent e) {
- //处理断开连接
- }
- public void Disconnect() {
- try {
- if (rdpc.Connected == 1) {
- rdpc.Disconnect();
- }
- } catch(Exception) {}
- }
- private void SetRdpClientProperties(Machine parMachine) {
- rdpc.Server = parMachine.MachineName;
- rdpc.AdvancedSettings2.RDPPort = parMachine.Port;
- rdpc.UserName = parMachine.UserName;
- rdpc.Domain = parMachine.DomainName;
- if (parMachine.Password != "") {
- rdpc.AdvancedSettings5.ClearTextPassword = parMachine.Password;
- }
- rdpc.AdvancedSettings5.RedirectDrives = parMachine.ShareDiskDrives;
- rdpc.AdvancedSettings5.RedirectPrinters = parMachine.SharePrinters;
- rdpc.ColorDepth = (int) parMachine.ColorDepth;
- }
- public void Connect(Machine parMachine) {
- SetRdpClientProperties(parMachine);
- rdpc.Connect();
- }
- //远程主机配置
- [Serializable()] public class Machine {
- private string _RemoteDesktopConnectionName;
- public string RemoteDesktopConnectionName {
- get {
- return _RemoteDesktopConnectionName;
- }
- set {
- _RemoteDesktopConnectionName = value;
- }
- }
- private string _MachineName;
- public string MachineName {
- get {
- return _MachineName;
- }
- set {
- _MachineName = value;
- }
- }
- private string _DomainName;
- public string DomainName {
- get {
- return _DomainName;
- }
- set {
- _DomainName = value;
- }
- }
- private string _UserName;
- public string UserName {
- get {
- return _UserName;
- }
- set {
- _UserName = value;
- }
- }
- private string _Password;
- public string Password {
- get {
- return _Password;
- }
- set {
- _Password = value;
- }
- }
- private bool _AutoConnect;
- public bool AutoConnect {
- get {
- return _AutoConnect;
- }
- set {
- _AutoConnect = value;
- }
- }
- private bool _ShareDiskDrives;
- public bool ShareDiskDrives {
- get {
- return _ShareDiskDrives;
- }
- set {
- _ShareDiskDrives = value;
- }
- }
- private bool _SharePrinters;
- public bool SharePrinters {
- get {
- return _SharePrinters;
- }
- set {
- _SharePrinters = value;
- }
- }
- private bool _SavePassword;
- public bool SavePassword {
- get {
- return _SavePassword;
- }
- set {
- _SavePassword = value;
- }
- }
- private Colors _ColorDepth;
- public Colors ColorDepth {
- get {
- return _ColorDepth;
- }
- set {
- _ColorDepth = value;
- }
- }
- public int Port {
- get {
- return _Port;
- }
- set {
- _Port = value;
- }
- }
- private int _Port;
- public enum Colors {
- HighColor15 = 15,
- HighColor16 = 16,
- Color256 = 8,
- TrueColor = 24
- }
- }
Palantir - Remote Desktop Manager https://www.codeproject.com/Articles/19836/Palantir-Remote-Desktop-Manager
来源: http://www.cnblogs.com/theLife/p/6838745.html