首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何识别用户在Visual Basic 中更改Windows默认打印机的时间?

要识别用户在Visual Basic中更改Windows默认打印机的时间,您可以使用Windows API(应用程序编程接口)来监视注册表更改。以下是一个简单的示例,说明如何在Visual Basic中实现这一功能:

  1. 首先,您需要导入Microsoft Win32 API中的RegNotifyChangeKeyValue函数,该函数允许您监视注册表更改。
代码语言:vb
复制
Private Declare Function RegNotifyChangeKeyValue Lib "advapi32.dll" (ByVal hKey As Long, ByVal bWatchSubtree As Boolean, ByVal dwNotifyFilter As Long, ByVal hEvent As Long, ByVal fAsynchronous As Boolean) As Long
  1. 然后,您需要创建一个函数来读取默认打印机的名称。
代码语言:vb
复制
Function GetDefaultPrinter() As String
    Dim objWMIService, objPrinter
    Dim strPrinterName As String

    Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
    Set objPrinter = objWMIService.ExecQuery("Select * From Win32_Printer Where Default = True")

    For Each printer In objPrinter
        strPrinterName = printer.Name
    Next

    GetDefaultPrinter = strPrinterName
End Function
  1. 接下来,您需要创建一个函数来监视注册表更改。
代码语言:vb
复制
Sub MonitorRegistryChanges()
    Dim hKey As Long
    Dim strPrinterName As String
    Dim strPreviousPrinterName As String

    ' 打开注册表键
    hKey = OpenKey("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows")

    ' 获取当前默认打印机名称
    strPreviousPrinterName = GetDefaultPrinter()

    ' 循环监视注册表更改
    Do
        ' 等待注册表更改事件
        RegNotifyChangeKeyValue(hKey, True, &H1 Or &H2 Or &H4, 0, False)

        ' 获取新的默认打印机名称
        strPrinterName = GetDefaultPrinter()

        ' 检查默认打印机是否已更改
        If strPrinterName <> strPreviousPrinterName Then
            MsgBox "默认打印机已更改:" & vbCrLf & _
                   "旧打印机:" & strPreviousPrinterName & vbCrLf & _
                   "新打印机:" & strPrinterName
            strPreviousPrinterName = strPrinterName
        End If
    Loop

    ' 关闭注册表键
    CloseKey(hKey)
End Sub
  1. 最后,您可以在Visual Basic程序中调用MonitorRegistryChanges函数来监视默认打印机更改。
代码语言:vb
复制
Sub Main()
    MonitorRegistryChanges
End Sub

这个示例将弹出一个消息框,显示默认打印机更改的时间和新旧打印机名称。请注意,这个示例仅适用于当前用户的注册表更改。如果您需要监视所有用户的更改,您需要以管理员身份运行程序并监视不同的注册表键。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • sap后台作业管理/sap打印管理

    后台作业,主要用于运行需要处理大量数据,对交互没有要求的程序。个人认为,简单的创建,配置和监控后台作业没有什么难度。后台作业管理最为困难的解决方案的取舍,系统负载的调控。失控的后台作业,往往对系统带来灾难性的性能问题,也会导致权限管理的风险,结果是得不偿失,而且可能导致流程混乱。所以个人认为,要创建一个周期性的后台作业之前,首先应该慎重分析。比方说,一个已经明显偏向 OLAP类型的报表,如果能够用BI去实现,为什么还要坚持在生产系统去跑长时间的后台作业?这极有可能是一种严重的重复运行的性能问题。再比方说,用户获得授权随意创建后台作业,结果导致后台作业失控,在业务繁忙的时候,因为大量的后台作业导致整个系统的停顿,会造成实实在在的经济损失。再比如说,后台作业安排的不合理,可能耗资源的和重要的后台作业直接或者间接安排到了同一个时间段,那么必然会影响流程的运作。

    02

    【SAP技巧】SAP后台作业管理/SAP打印管理

    后台作业,主要用于运行需要处理大量数据,对交互没有要求的程序。个人认为,简单的创建,配置和监控后台作业没有什么难度。后台作业管理最为困难的解决方案的取舍,系统负载的调控。失控的后台作业,往往对系统带来灾难性的性能问题,也会导致权限管理的风险,结果是得不偿失,而且可能导致流程混乱。所以个人认为,要创建一个周期性的后台作业之前,首先应该慎重分析。比方说,一个已经明显偏向 OLAP类型的报表,如果能够用BI去实现,为什么还要坚持在生产系统去跑长时间的后台作业?这极有可能是一种严重的重复运行的性能问题。再比方说,用户获得授权随意创建后台作业,结果导致后台作业失控,在业务繁忙的时候,因为大量的后台作业导致整个系统的停顿,会造成实实在在的经济损失。再比如说,后台作业安排的不合理,可能耗资源的和重要的后台作业直接或者间接安排到了同一个时间段,那么必然会影响流程的运作。

    03

    SAP 打印配置(SPAD)解析

    一、SAP打印原理  SAP的打印过程分两个步骤: 创建假脱机请求 创建输出请求 在点击打印按钮后,系统会提示创建假脱机请求后,你可以选择直接生成输出请求,或者手动生成输出请求,产生输出请求后,系统会根据输出设备的配置,调用相关的打印程序;执行打印任务。 手动生成输出请求:TCode:SP01 直接生成输出请求:设置时可以在用户属性(su3-->Default-->勾选print immediately)。  一般设定“立即打印”,所以打印请求的产生与输出请求的产生几乎同时; 在WINDOWS系统中执行SAP打印要开启SAPLPD服务; SAP系统以不同的方式处理ABAP列表打印与Smartforms的打印,它们的配置过程相似,但实际控制方式不同。

    02

    SpoolFool:Windows Print Spooler 权限提升 (CVE-2022-21999)

    早在 2020 年 5 月,微软就修复了一个 Windows Print Spooler 权限提升漏洞。该漏洞的编号为 CVE-2020–1048,微软承认 SafeBreach Labs 的 Peleg Hadar 和 Tomer Bar 报告了该安全问题。在补丁发布的同一天,Yarden Shafir和Alex Ionescu发表了关于该漏洞的技术文章。本质上,用户可以通过创建指向磁盘上文件的打印机端口来写入任意文件。在修补漏洞 (CVE-2020–1048) 后,Print Spooler 现在将在添加端口之前检查用户是否有权创建或写入文件。补丁和博文发布一周后,Paolo Stagno(又名 VoidSec)私下向微软披露了 CVE-2020–1048 的绕过方法。该绕过在三个月后的 2020 年 8 月得到修补,微软承认有八个独立实体报告了该漏洞,该漏洞被确定为 CVE-2020-1337。该漏洞的绕过使用目录连接(符号链接)来规避安全检查。假设用户创建了目录C:\MyFolder\并配置了一个打印机端口以指向该文件C:\MyFolder\Port。该操作将被授予,因为确实允许用户创建C:\MyFolder\Port. 现在,如果用户随后变成C:\MyFolder\指向C:\Windows\System32\创建端口之后的目录连接会发生什么?好吧,Spooler 会简单地写入文件C:\Windows\System32\Port。

    03

    基于3D打印机编译器侧信道的信息泄漏攻击

    在网络物理增材制造系统中,侧信道攻击已被用于重建正在生产的 3D 对象的 G/M 代码(这是给制造系统的指令)。在产品大规模制造并投放市场之前的原型设计阶段,这种方法通过最意想不到的方式从组织窃取知识产权是有效的。然而,由于缺乏足够的侧信道信息泄漏,攻击者可能无法完全重建 G/M 码。在本文中提出了一种放大信息泄漏的新方法,通过暗中改变编译器来提高 G/M 代码恢复的机会。通过使用该编译器,攻击者可以轻松控制各种参数以放大 3D 打印机的信息泄漏,同时生产所需的对象并对真实用户隐藏。这种类型的攻击可能由有权访问工具链并寻求高度隐身的强大攻击者实施。本研究已经实现了此编译器,并证明与之前的攻击相比,它从四个侧信道(声学、功率、振动和电磁)恢复 G/M 代码的成功率提高了39%。

    02

    HP打印机维修资料大全(续)

    HP打印机维修资料大全(续) EIO x BUFFER OVERFLOW 与PRESS GO TO CONTINUE交替出现 发送给指定插槽(x)中EIO插卡的数据过多。可能在使用不恰当的通讯协议。按[执行]键取消该信息。(数据将丢失。)检查主机配置。如果该信息持续显示,请与HP授权的服务或支持提供者联系。 22 PARALLEL I/O BUFFER OVERFLOW与PRESS GO TO CONTINUE交替出现 发送给并行端口的数据过多。检查是否电缆连接松动,并确保使用高质量电缆。(一些非HP并行电缆可能缺少针连接,或者不符合IEEE-1284标准。)当使用的驱动程序不符合IEEE-1284标准时,会发生本错误。为获得最佳性能,请使用打印机所带的HP驱动程序。按[执行]键清除出错信息。(数据将丢失。)如果该信息持续显示,请与HP授权的服务或支持提供者联系。 22 SERIAL I/O BUFFER OVERFLOW与PRESS GO TO CONTINUE交替出现 发送给串行端口的数据过多。确保打印机控制面板的I/O菜单中选择了正确的串行定步选项。。打印菜单图,校验串行定步项目(从打印机控制面板的I/O菜单中)与计算机的设置匹配。(有关接口设置的更多信息,参见用户手册。)按[执行]键清除出错信息。(数据将丢失。)如果该信息持续显示,请与HP授权的服务或支持提供者联系。 40 BAD SERIAL TRANSMISSION与PRESS GO TO CONTINUE交替出现 打印机从计算机传输数据时发生错误。该错误可能由多种原因导致:打印机在线时计算机开机或关机。网络发生问题(如果适用的话)。打印机的波特率或奇偶校验与计算机的不一致。(波特率告诉打印机信息从计算机传到打印机的速率。)确保打印机与计算机的波特率设置相同。可通过打印机控制面板的I/O菜单访问串行波特率的设置。按[执行]键清除出错信息,并继续打印。 40 EIO x BAD TRANSMISSION与PRESS GO TO CONTINUE交替出现 打印机与指定插槽中的EIO插卡间的连接中断。按[执行]键清除出错信息,并继续打印。 41.3 UNEXPECTED PAPER SIZE 所用纸张尺寸与纸盘设置不一致。确保所有纸盘的尺寸设置正确。纸盘前部显示的尺寸必须与装入纸盘的纸张尺寸相吻合。(打印机将在尺寸设置正确后才继续试打印作业。)如果用纸盘1打印,确保打印机控制面板中的纸张尺寸配置正确。执行以上操作后,按[执行]键。出错的页将自动重印。(或者,可以按[取消作业]健将打印作业从打印机内存中清除。) 41.x PRINTER ERROR与PRESS GO TO CONTINUE交替出现 发生了暂时的打印错误。按[执行]键。出错的页将自动重印。如果该信息持续显示,请与HP授权的服务或支持提供者联系。 50.x FUSER ERROR 发生了内部错误。将打印机关闭后再打开。出错信息可能被清除,然后在传送下个打印作业时又出现。如果该信息持续出现,请与HP授权的服务或支持提供者联系。 51.x or 52.x PRINTER ERROR 发生了暂时打印错误。按[执行]键。出错的页将自动重印。如果该信息持续出现,请与HP授权的服务或支持提供者联系。 53.xy.zz PRINTER ERROR 打印机内存发生问题。将不使用导致出错的DIMM。x、y和zz的数值列举如下:x=DIMM 类型 0=ROM 1=RAMy=设备位置 0=内存(ROM或RAM)1至3= DIMM插槽1、2或3zz=错误号可能需要更换指出的DIMM。关闭打印机,更换导致错误的DIMM。如果该信息持续出现,请与HP授权的服务或支持提供者联系。 55 PRINTER ERROR与PRESS GO TO CONTINUE交替出现 发生暂时打印错误。按[执行]键。出错的页将自动重印。如果该信息持续出现,请与HP授权的服务或支持提供者联系。 56.x, 57.x, 58.x, 59.x PRINTER ERROR 发生了暂时打印错误。关闭打印机,然后再打开。如果该信息持续出现,请与HP授权的服务或支持提供者联系。 62.x PRINTER ERROR 打印机内存发生问题。x的数值指出了问题的位置;0=内存 1至3=DIMM插槽1、2或3可能需要更换指出的DIMM。如果该信息持续出现,请与HP授权的服务或支持提供者联系。 64.x PRINTER ERROR 发生暂时打印错误。关闭打印机,然后再打开。如果该信息持续出现,请与HP授权的服务或支持提供者联系。66.xy.zz INPUT DEVICE FAILURE与CHECK CABLES AND CYCLE POWER交替出现 外部纸张处理设备发生错误。按[执行]键清除该信息。如果信息未清除,将打印机关闭后再打开。如果该信息持续出

    02
    领券