C# 管理远程桌面
|
admin
2018年2月10日 11:56
本文热度 8174
|
工作中需要经常连接多台服务器,每台服务器密码定时修改。
最初的时候,是把账号密码记录在一个文本文件中,第一次连接,复制粘贴。之后就可以直接从连接历史中选出来。
但是后来服务器多了之后,连接历史中都是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的。其他系统里的不行。
该文章在 2018/2/10 11:56:53 编辑过