• 大小: 59KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-10
  • 语言: C#
  • 标签: C#  远程登录  rdp  

资源简介

C#间接调用mstsc.exe实现自动远程登录:根据远程主机的ip地址、用户名和密码动态修改Default.rdp文件里面的相关信息,然后调用mstsc.exe加载该Default.rdp文件来达到自动登录远程主机的目的,远程连接的时候不需要用户输入主机地址、用户名和密码,非常方便。 C#下直接调用mstsc.exe远程登录的话,调用之后窗体会消失,在任务管理器里面看到的mstsc.exe进程,但是看不到界面,本代码通过间接调用的方式解决了该问题。 Default.rdp里面的登录密码不是明文,而是加密的密文,该C#代码实现了登录密码的rdp加密得到密文。 完整的C#代码,vs2008工程,可编译和测试。 代码里面的Default.rdp文件(和可执行程序在同一个目录)也可以远程连接Linux主机(需要把session bpp:i设置为24),如果是连windows主机的话可以把session bpp:i:设置成32。当然,也可以自己生成Default.rdp:打开mstsc,点击选项然后设置好参数之后,点击另存为保存得到自己的Default.rdp。

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.ComponentModel;

namespace Fedora远程桌面
{
    public class DPAPI
    {
        // Wrapper for DPAPI CryptProtectData function.
        [DllImport(“crypt32.dll“
                    SetLastError = true
                    CharSet = System.Runtime.InteropServices.CharSet.Auto)]
        private static extern
            bool CryptProtectData(ref DATA_BLOB pPlainText
                                        string szDescription
                                    ref DATA_BLOB pEntropy
                                        IntPtr pReserved
                                    ref CRYPTPROTECT_PROMPTSTRUCT pPrompt
                                        int dwFlags
                                    ref DATA_BLOB pCipherText);

        // Wrapper for DPAPI CryptUnprotectData function.
        [DllImport(“crypt32.dll“
                    SetLastError = true
                    CharSet = System.Runtime.InteropServices.CharSet.Auto)]
        private static extern
            bool CryptUnprotectData(ref DATA_BLOB pCipherText
                                    ref string pszDescription
                                    ref DATA_BLOB pEntropy
                                        IntPtr pReserved
                                    ref CRYPTPROTECT_PROMPTSTRUCT pPrompt
                                        int dwFlags
                                    ref DATA_BLOB pPlainText);

        // BLOB structure used to pass data to DPAPI functions.
        [StructLayout(LayoutKind.Sequential CharSet = CharSet.Unicode)]
        internal struct DATA_BLOB
        {
            public int cbData;
            public IntPtr pbData;
        }

        // Prompt structure to be used for required parameters.
        [StructLayout(LayoutKind.Sequential CharSet = CharSet.Unicode)]
        internal struct CRYPTPROTECT_PROMPTSTRUCT
        {
            public int cbSize;
            public int dwPromptFlags;
            public IntPtr hwndApp;
            public string szPrompt;
        }

        // Wrapper for the NULL handle or pointer.
        static private IntPtr NullPtr = ((IntPtr)((int)(0)));

        // DPAPI key initialization flags.
        private const int CRYPTPROTECT_UI_FORBIDDEN = 0x1;
        private const int CRYPTPROTECT_LOCAL_MACHINE = 0x4;

        /// 
        /// Initializes empty prompt structure.
        /// 

        /// 
        /// Prompt parameter (which we do not actually need).
        /// 
        private static void InitPrompt(ref CRYPTPROTECT_PROMPTSTRUCT ps)
        {
            ps.cbSize = Marshal.SizeOf(
                                      typeof(CRYPTPROTECT_PROMPTSTRUCT));
            ps.dwPromptFlags = 0;
            ps.hwndApp = NullPtr;
            ps.szPromp

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    ..A..H.     46592  2019-06-03 15:05  Fedora远程桌面.suo

     文件       3168  2019-06-03 14:21  Fedora远程桌面\bin\Debug\Default - 副本.rdp

     文件       1583  2019-06-03 15:10  Fedora远程桌面\bin\Debug\Default.rdp

     文件      15872  2019-06-03 15:08  Fedora远程桌面\bin\Debug\Fedora远程桌面.exe

     文件      36352  2019-06-03 15:08  Fedora远程桌面\bin\Debug\Fedora远程桌面.pdb

     文件      14328  2019-06-03 15:08  Fedora远程桌面\bin\Debug\Fedora远程桌面.vshost.exe

     文件        490  2009-06-11 05:14  Fedora远程桌面\bin\Debug\Fedora远程桌面.vshost.exe.manifest

     文件      25173  2019-06-03 14:22  Fedora远程桌面\DPAPI.cs

     文件       3818  2019-06-03 14:21  Fedora远程桌面\Fedora远程桌面.csproj

     文件       8090  2019-06-03 15:08  Fedora远程桌面\Form1.cs

     文件       5186  2019-06-03 15:00  Fedora远程桌面\Form1.Designer.cs

     文件       5814  2019-06-03 15:00  Fedora远程桌面\Form1.resx

     文件        729  2019-06-03 15:08  Fedora远程桌面\obj\Debug\Fedora远程桌面.csproj.FileListAbsolute.txt

     文件        847  2019-06-03 15:00  Fedora远程桌面\obj\Debug\Fedora远程桌面.csproj.GenerateResource.Cache

     文件      15872  2019-06-03 15:08  Fedora远程桌面\obj\Debug\Fedora远程桌面.exe

     文件        180  2019-06-03 15:00  Fedora远程桌面\obj\Debug\Fedora远程桌面.Form1.resources

     文件      36352  2019-06-03 15:08  Fedora远程桌面\obj\Debug\Fedora远程桌面.pdb

     文件        180  2019-06-03 14:21  Fedora远程桌面\obj\Debug\Fedora远程桌面.Properties.Resources.resources

     文件        499  2019-06-03 10:59  Fedora远程桌面\Program.cs

     文件       1386  2019-06-03 10:59  Fedora远程桌面\Properties\AssemblyInfo.cs

     文件       2886  2019-06-03 10:59  Fedora远程桌面\Properties\Resources.Designer.cs

     文件       5612  2019-06-03 10:59  Fedora远程桌面\Properties\Resources.resx

     文件       1103  2019-06-03 10:59  Fedora远程桌面\Properties\Settings.Designer.cs

     文件        249  2019-06-03 10:59  Fedora远程桌面\Properties\Settings.settings

     文件        944  2019-06-03 10:59  Fedora远程桌面.sln

     目录          0  2019-06-03 14:24  Fedora远程桌面\obj\Debug\Refactor

     目录          0  2019-06-03 10:59  Fedora远程桌面\obj\Debug\TempPE

     目录          0  2019-06-03 14:55  Fedora远程桌面\bin\Debug

     目录          0  2019-06-03 15:08  Fedora远程桌面\obj\Debug

     目录          0  2019-06-03 10:59  Fedora远程桌面\bin

............此处省略6个文件信息

评论

共有 条评论