如何在不调用 API 的情况下获取 UNC 驱动器的序列号
How to get the serial number of UNC Drive Without API calling
出于安全原因,我希望我的工作簿只能在网络上使用。
该网络有时由具有不同字母的用户映射。
我想找到一种方法来根据 UNC path
而不是驱动器号来获取网络驱动器的序列号。
但我想在不调用 API 的情况下执行此操作,因为某些计算机的 Windows 有问题。
我有下面的代码,但需要驱动器号。我想改用 UNC drive
路径。
Public Function HDSerialNumber() As String
Dim fsObj As Object
Dim Drv As Object
Set fsObj = New Scripting.FileSystemObject
Set Drv = fsObj.Drives("J")
HDSerialNumber = Left(Hex(Drv.SerialNumber), 4) _
& "-" & Right(Hex(Drv.SerialNumber), 4)
End Function
只为你的兴趣。如果您尝试使用 xlSheetVeryHidden
和 VBA 的组合来隐藏工作簿中的信息,您可以使用以下代码轻松地欺骗它:
你只需要将这段代码放入一个新的工作簿中(输入你想要攻击的文件名)并运行它。它将打开您的文件(防止文件中的代码来自 运行ning)并使所有工作表可见。
只需 10 行代码,您检查连续出版物等的所有努力就是如此轻松。
Sub ShowAllWorkbooks()
Dim OpenWb As Workbook
Application.EnableEvents = False 'prevent autorun of workbook_open and other events
Set OpenWb = Workbooks.Open(Filename:="PathToFileYouWantToShow")
Dim ws As Worksheet
For Each ws In OpenWb.Worksheets
ws.Visible = xlSheetVisible
Next ws
Application.EnableEvents = True
End Sub
即使您的 VBA 代码受密码保护无法查看,这仍然有效。
如果您不关心那个安全漏洞,那么我建议如下:
将此添加到您的 Workbook_Open
活动中:
Option Explicit
Private Sub Workbook_Open()
If ThisWorkbook.Path <> "your server path" Then
MsgBox "This file can only be run from the server!"
ThisWorkbook.Close SaveChanges:=False
Else
'make all worksheets visible
End If
End Sub
它将检查当前工作簿是否来自 "your server path"
opened/started 如果不是,它将立即关闭工作簿。
或者只检查您的 UNC 路径是否存在:
Option Explicit
Private Sub Workbook_Open()
Dim Fso As Object
Set Fso = CreateObject("Scripting.FileSystemObject")
If Not Fso.FolderExists("your server path") Then
MsgBox "This file can only be run from the server!"
ThisWorkbook.Close SaveChanges:=False
Else
'make all worksheets visible
End If
End Sub
出于安全原因,我希望我的工作簿只能在网络上使用。
该网络有时由具有不同字母的用户映射。
我想找到一种方法来根据 UNC path
而不是驱动器号来获取网络驱动器的序列号。
但我想在不调用 API 的情况下执行此操作,因为某些计算机的 Windows 有问题。
我有下面的代码,但需要驱动器号。我想改用 UNC drive
路径。
Public Function HDSerialNumber() As String
Dim fsObj As Object
Dim Drv As Object
Set fsObj = New Scripting.FileSystemObject
Set Drv = fsObj.Drives("J")
HDSerialNumber = Left(Hex(Drv.SerialNumber), 4) _
& "-" & Right(Hex(Drv.SerialNumber), 4)
End Function
只为你的兴趣。如果您尝试使用 xlSheetVeryHidden
和 VBA 的组合来隐藏工作簿中的信息,您可以使用以下代码轻松地欺骗它:
你只需要将这段代码放入一个新的工作簿中(输入你想要攻击的文件名)并运行它。它将打开您的文件(防止文件中的代码来自 运行ning)并使所有工作表可见。
只需 10 行代码,您检查连续出版物等的所有努力就是如此轻松。
Sub ShowAllWorkbooks()
Dim OpenWb As Workbook
Application.EnableEvents = False 'prevent autorun of workbook_open and other events
Set OpenWb = Workbooks.Open(Filename:="PathToFileYouWantToShow")
Dim ws As Worksheet
For Each ws In OpenWb.Worksheets
ws.Visible = xlSheetVisible
Next ws
Application.EnableEvents = True
End Sub
即使您的 VBA 代码受密码保护无法查看,这仍然有效。
如果您不关心那个安全漏洞,那么我建议如下:
将此添加到您的 Workbook_Open
活动中:
Option Explicit
Private Sub Workbook_Open()
If ThisWorkbook.Path <> "your server path" Then
MsgBox "This file can only be run from the server!"
ThisWorkbook.Close SaveChanges:=False
Else
'make all worksheets visible
End If
End Sub
它将检查当前工作簿是否来自 "your server path"
opened/started 如果不是,它将立即关闭工作簿。
或者只检查您的 UNC 路径是否存在:
Option Explicit
Private Sub Workbook_Open()
Dim Fso As Object
Set Fso = CreateObject("Scripting.FileSystemObject")
If Not Fso.FolderExists("your server path") Then
MsgBox "This file can only be run from the server!"
ThisWorkbook.Close SaveChanges:=False
Else
'make all worksheets visible
End If
End Sub