首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

告别痕迹:远程桌面连接历史和凭据的清零指南

编程知识
2024年08月02日 19:27

在平日的工作里,运用 Windows 远程桌面工具(RDP)去连接各类服务器和计算机是屡见不鲜的情况。不过,鉴于安全和隐私方面的因素,我们偶尔会有删除这些连接的历史记录以及相关登录凭据的需求。在接下来的这篇文章中,我会为您呈上一份完备的 PowerShell 脚本,助力您达成此目标。

例如,假如您在一家涉及机密信息处理的公司工作,对远程桌面连接的历史和凭据进行及时清理就显得尤为重要,避免可能的信息泄露风险。再比如,对于个人用户而言,保护自己的隐私,不让他人获取到过往的连接记录,也是很有必要的。

为什么要删除远程桌面记录?

远程桌面连接的记录以及凭据,有可能会将您常用的服务器 IP 地址以及登录信息暴露出来,从而加大安全风险。当您把这些记录清除掉之后,能够更有效地保护您的隐私以及网络安全。

比如说,如果这些记录被不法分子获取,他们就可能利用这些信息入侵您的服务器或者计算机,造成严重的损失。又或者,如果您的竞争对手得到了这些信息,可能会对您的工作或业务造成不利影响。所以,及时删除远程桌面记录是非常重要的。

PowerShell 脚本:删除 RDP 历史记录和凭据

以下是一个可以同时删除远程桌面连接历史记录和登录凭据的 PowerShell 脚本:

# 获取所有远程桌面连接记录
$rdpHistoryPath = "HKCU:\Software\Microsoft\Terminal Server Client\Default"
$rdpHistory = Get-ItemProperty -Path $rdpHistoryPath

# 创建一个用于存储历史记录的数组
$entries = @()

# 遍历注册表项并提取每一项的名称和值
foreach ($property in $rdpHistory.PSObject.Properties) {
    if ($property.Name -like "MRU*") {
        $entries += [PSCustomObject]@{
            Name = $property.Name
            Value = $property.Value
        }
    }
}

# 显示所有记录
Write-Host "当前的远程桌面连接记录:" -ForegroundColor Cyan
for ($i = 0; $i -lt $entries.Count; $i++) {
    Write-Host "$($i): $($entries[$i].Value)"
}

# 提示用户输入要删除的记录编号或IP地址/计算机名称
$selection = Read-Host "请输入要删除的记录编号或IP地址/计算机名称"

# 定义一个函数来删除凭据
function Remove-RdpCredentials($computerName) {
    $targetName = "TERMSRV/$computerName"
    # 获取凭据管理器中的所有 Windows 凭据
    $credentialList = Get-StoredCredential -Type Generic
    # 查找与目标名称匹配的凭据
    $credential = $credentialList | Where-Object { $_.TargetName -eq $targetName }
    if ($credential) {
        # 删除找到的凭据
        $credential | Remove-StoredCredential
        Write-Host "已删除凭据:$($credential.TargetName)" -ForegroundColor Green
    } else {
        Write-Host "未找到与 $computerName 相关的凭据。" -ForegroundColor Yellow
    }
}

# 检查输入是编号还是名称/IP
if ($selection -match '^\d+$') {
    # 如果是编号,进行删除
    $index = [int]$selection
    if ($index -ge 0 -and $index -lt $entries.Count) {
        $keyToDelete = $entries[$index].Name
        $valueToDelete = $entries[$index].Value
        # 删除注册表项
        Remove-ItemProperty -Path $rdpHistoryPath -Name $keyToDelete
        Write-Host "已删除记录:$valueToDelete" -ForegroundColor Green
        # 删除相应的凭据
        Remove-RdpCredentials -computerName $valueToDelete
    } else {
        Write-Host "输入的编号无效。" -ForegroundColor Red
    }
} else {
    # 如果是名称/IP,进行匹配并删除
    $entryToDelete = $entries | Where-Object { $_.Value -eq $selection }
    if ($entryToDelete) {
        # 删除注册表项
        Remove-ItemProperty -Path $rdpHistoryPath -Name $entryToDelete.Name
        Write-Host "已删除记录:$($entryToDelete.Value)" -ForegroundColor Green
        # 删除相应的凭据
        Remove-RdpCredentials -computerName $entryToDelete.Value
    } else {
        Write-Host "未找到匹配的记录。" -ForegroundColor Red
    }
}

使用说明

1. 运行 PowerShell

确保以管理员身份运行 PowerShell,以便拥有足够的权限修改注册表和凭据。

2. 安装 CredentialManager 模块

在第一次运行脚本之前,需要安装 CredentialManager 模块来管理凭据:

Install-Module -Name CredentialManager -Force -Scope CurrentUser

3. 执行脚本

将上述代码保存为 .ps1 文件,例如 RemoveRDPHistoryWithCredentials.ps1。在 PowerShell 中导航到脚本所在的目录,并运行:

.\RemoveRDPHistoryWithCredentials.ps1

4. 输入选择

根据脚本提示,输入要删除的记录的编号或 IP 地址/计算机名称。

注意事项

  • 凭据管理器:该脚本使用 CredentialManager 模块来访问和删除 Windows 凭据。
  • 权限:确保以管理员身份运行脚本。
  • 备份:建议在删除之前备份相关数据,以防误删。

通过这个脚本,您可以有效管理和清理远程桌面的连接记录和凭据,保护您的隐私和安全。

From:https://www.cnblogs.com/HaiJaine/p/18339546
本文地址: http://shuzixingkong.net/article/725
0评论
提交 加载更多评论
其他文章 算法·理论:KMP 学习笔记
\(\text{KMP}\) 笔记! 上次比赛,出题人出了一个 \(\text{KMP}\) 模板,我敲了个 \(\text{SAM}\) 跑了,但是学长给的好题中又有很多 \(\text{KMP}\),于是滚回来恶补字符串基本算法。 \(\text{KMP}\) 是上个寒假学的,为什么最近才完全理
算法·理论:KMP 学习笔记
JavaScript 中的闭包和事件委托
包 (Closures) 闭包是 JavaScript 中一个非常强大的特性,它允许函数访问其外部作用域中的变量,即使在该函数被调用时,外部作用域已经执行完毕。闭包可以帮助我们实现数据的私有化、封装和模块化,使代码更简洁、易读和可维护。 闭包的定义 简单来说,闭包是指有权访问另一个函数作用域中变量的
万字干货:从消息流平台Serverless之路,看Serverless标准演进
摘要:如今,Serverless化已经成为消息流平台发展的新趋势,而如何更好地基于Serverless化的消息流平台进行应用设计和开发,则成为了一个值得思考的问题。 本文分享自华为云社区《9000字干货:从消息流平台Serverless之路,看Serverless标准演进》,作者:华为云PaaS服务
万字干货:从消息流平台Serverless之路,看Serverless标准演进 万字干货:从消息流平台Serverless之路,看Serverless标准演进 万字干货:从消息流平台Serverless之路,看Serverless标准演进
【VMware VCF】VMware Cloud Foundation Part 06:部署 VI 工作负载域。
VMware Cloud Foundation 标准架构中,管理域和 VI 工作负载域需要分开部署,管理域是初始构建(Bring-up)中部署的一个工作负载域并且只有一个,管理域专门用于承载管理相关组件虚拟机。之前文章(VMware Cloud Foundation Part 05:部署 SDDC
【VMware VCF】VMware Cloud Foundation Part 06:部署 VI 工作负载域。 【VMware VCF】VMware Cloud Foundation Part 06:部署 VI 工作负载域。 【VMware VCF】VMware Cloud Foundation Part 06:部署 VI 工作负载域。
【Java】Jsoup 解析HTML报告
一、需求背景 有好几种报告文件,目前是人肉找报告信息填到Excel上生成统计信息 跟用户交流了下需求和提供的几个文件,发现都是html文件 其实所谓的报告的文件,就是一些本地可打开的静态资源,里面也有js、img等等 二、方案选型 前面老板一直说是文档解析,我寻思这不就是写爬虫吗.... 因为是在现
【Java】Jsoup 解析HTML报告 【Java】Jsoup 解析HTML报告 【Java】Jsoup 解析HTML报告
VirtualBox扩容CentOS-7虚拟机磁盘
1、背景描述 如上图所示,根路径“/”所在的文件系统已没有可用的磁盘空间,需要扩容磁盘。 df -h 2、VirtualBox操作 2.1、查看当前虚拟磁盘的大小 如上图所示,点击打开选中的虚拟机的 Settings 界面。 如上图所示,当前虚拟机的虚拟磁盘大小为 8GB 。 2.2、修改虚拟磁盘的
VirtualBox扩容CentOS-7虚拟机磁盘 VirtualBox扩容CentOS-7虚拟机磁盘 VirtualBox扩容CentOS-7虚拟机磁盘
代码随想录Day3
203.移除链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。 示例 1: 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5] 示例 2: 输入:hea
代码随想录Day3 代码随想录Day3
手把手使用 SVG + CSS 实现渐变进度环效果
手把手使用 SVG + CSS 实现渐变进度环效果,利用的就是 SVG 的 stroke-dasharray。
手把手使用 SVG + CSS 实现渐变进度环效果 手把手使用 SVG + CSS 实现渐变进度环效果 手把手使用 SVG + CSS 实现渐变进度环效果