您的位置:首页 > 编程语言 > C#

C# 管理远程桌面

2017-01-09 19:26 369 查看
工作中需要经常连接多台服务器,每台服务器密码定时修改。

最初的时候,是把账号密码记录在一个文本文件中,第一次连接,复制粘贴。之后就可以直接从连接历史中选出来。

但是后来服务器多了之后,连接历史中都是IP地址,经常认错。就萌生了使用工具管理的想法。

但是服务器账号密码这东西太敏感,对网上下载的工具不信任,就产生自己写一个工具的想法。

账号密码的管理,无非就是数据最基本的增删改查,无需赘言。

远程连接服务器时,遇到了麻烦。

连接服务器的方法很简单,生成RDP文件,然后

System.Diagnostics.Process.Start("mstsc.exe", RDP文件路径)


此方式方便。但是没办法传密码。如果连接的服务器没有在本机保存密码,或者保存的密码不对,就需要手动输入密码进行连接。

注:此处有个坑,网上很多人的blog里写道,可以在rdp文件中加入password属性,然后把密码通过某种方式加密后最有password的属性值,即自动连接,无须再输入密码。但是这个方法我就没成功过。也不知道那些个写或者转这个方法的人到底有没有尝试。

而后,又查了很多网站和资料。终于找到一个办法。

首先调用cmdkey.exe,将远程桌面的账号密码作为凭据,添加到本机的凭据管理中,然后在通过以上方法启动远程桌面即可。

Process process = new Process();
process.StartInfo.FileName = Environment.ExpandEnvironmentVariables(@"%SystemRoot%\system32\cmdkey.exe");
process.StartInfo.Arguments = "/generic:TERMSRV/" + IP地址 + " /user:" + 用户名+ " /password:" + 密码;
process.Start();


至此,远程桌面管理的功能就基本实现了。其他的无非是一些界面美化,操作习惯,等等。不再赘述。

不过试运行了一段时间后发现一个问题。在WindowsXP的电脑上是没有cmdkey.exe这个东西的。直接导致没办正常使用了。只能在Windows7和Windows10上正常使用。期他的系统没有测试,但是想来只要是版本高于Windows2003的系统也是能正常使用的。

想让WindowsXP正常使用,从Windows2003里复制一个到WindowsXP里就可以了。一定要是Windows2003的。其他系统里的不行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  远程桌面 c#