- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用以下代码
出现此错误:
尝试读取或写入 protected 内存。这通常表明其他内存已损坏。尝试读取或写入 protected 内存。这通常表明其他内存已损坏。
Public Class FormRegEnumValue
Private Const ERROR_SUCCESS = 0&
Private Const ERROR_NO_MORE_ITEMS = 259&
Private Const HKEY_CURRENT_USER = &H80000001
Private Const REG_BINARY = 3
Private Const REG_DWORD = 4
Private Const REG_EXPAND_SZ = 2
Private Const REG_SZ = 1
Private Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, ByVal lpcbValueName As Long, ByVal lpReserved As Long, ByVal lpType As Long, ByVal lpData As Object, ByVal lpcbData As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal phkResult As Long) As Long
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim hKey As Long, num As Long, strName As String
Dim strData As String, Retval As Long, RetvalData As Long
Const Buffer As Long = 255
num = 0
strName = Space(Buffer)
strData = Space(Buffer)
Retval = Buffer
RetvalData = Buffer
If RegOpenKey(HKEY_CURRENT_USER, "Control Panel\Desktop", hKey) = 0 Then 'error
While RegEnumValue(hKey, num, strName, Retval, 0, 0&, strData, RetvalData) <> ERROR_NO_MORE_ITEMS
If RetvalData > 0 Then
ListBox1.Items.Add(strName + Retval + " = " + strData + RetvalData - 1)
End If
num = num + 1
strName = Space(Buffer)
strData = Space(Buffer)
Retval = Buffer
RetvalData = Buffer
End While
RegCloseKey(hKey)
Else
ListBox1.Items.Add("Error")
End If
End Sub
End Class
请告诉我正确的方法
最佳答案
这通常是由不正确的私有(private)声明函数
语句引起的。 Windows API 中列出的类型与 VB 或 C# 代码中使用的类型不同。这是 Windows API 和 .Net 之间的数据类型转换的重要列表:Win32 API C++ to .NET
PInvoke网站通常会列出正确的 VB 代码。
对于RegEnumValue ,修复数据类型,lpcValueName
是 ByRef,而不是 ByVal:
Declare Auto Function RegEnumValue Lib "Advapi32" ( _
ByVal hKey As IntPtr, _
ByVal dwIndex As Integer, _
ByVal lpValueName As StringBuilder, _
ByRef lpcValueName As Integer, _
ByVal lpReserved As IntPtr, _
ByVal lpType As IntPtr, _
ByVal lpData As IntPtr, _
ByVal lpcbData As IntPtr _
) As Integer
对于RegCloseKey ,只需修复数据类型:
Declare Function RegCloseKey Lib "advapi32.dll" ( _
ByVal hKey As UIntPtr _
) As Integer
对于RegOpenKey ,修复数据类型并将 phkResult 更改为 ByRef:
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" ( _
ByVal hKey As Integer, _
ByVal lpSubKey As String, _
ByRef phkResult As IntPtr _
) As Integer
所以你的函数应该看起来更像这样。不幸的是,我不确定要为 strData
或 RetvalData
编写什么。我添加了一个 Try/Finally
block ,即使发生错误,它也会确保调用 RegCloseKey
。您需要确保始终关闭某些内容,尤其是在出现问题时。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Const Buffer As Long = 255
Dim hKey As IntPtr = IntPtr.Zero
Dim num As Integer = 0
Dim strName As New StringBuilder
Dim strData As IntPtr = ' I'm not surte what goes here.
Dim Retval As Integer = Buffer
Dim RetvalData As IntPtr = ' I'm not surte what goes here.
If RegOpenKey(HKEY_CURRENT_USER, "Control Panel\Desktop", hKey) = 0 Then 'error
Try
While RegEnumValue(hKey, num, strName, Retval, IntPtr.Zero, IntPtr.Zero, strData, RetvalData) <> ERROR_NO_MORE_ITEMS
If RetvalData > 0 Then
ListBox1.Items.Add(strName.ToString + Retval + " = " + strData + RetvalData - 1)
End If
num = num + 1
strName = New StringBuilder(Buffer)
strData = ' I'm not sure what goes here.
Retval = Buffer
RetvalData = ' I'm not surte what goes here.
End While
Finally
RegCloseKey(hKey)
End Try
Else
ListBox1.Items.Add("Error")
End If
End Sub
关于vb.net - 尝试读取或写入 protected 内存。这通常表明其他内存已损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8262833/
是否有一种标准方法可以表明 R 包是专有的,归公司所有,不应在公司外部共享?现在,我在 DESCRIPTION 中使用它文件: License: Proprietary, ownership of X
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我有一个方法可以根据 3 个正则表达式验证字段并根据失败的表达式返回错误。 function mfpValidateValue() { var pCtrl = window.document.
这个问题已经有答案了: Order of from and to values in SQL Between (3 个回答) 已关闭 4 年前。 我正在尝试从 leads 获取上周的数据表但是当我使用
我正在编写一个 pygame 代码来制作汽车游戏。这是一款基本的汽车游戏,英雄 Sprite 汽车应该避免与敌方 Sprite 接触。因此,对于碰撞部分,我们必须为敌车和英雄车创建一个 mask 。
我有一个情况,当满足某些条件时,该集团根本不产生任何状态(忽略所有事件)。当向bloc添加新事件时,如何测试没有状态产生? 我正在使用 flutter_bloc:^ 3.1.0 和 bloc_test
当我运行包含NAudio库的程序时,出现以下错误,“由于其保护级别而无法访问”。 public void ReadWaveHeader(Stream stream) { this.dataCh
Closed. This question needs details or clarity。它当前不接受答案。 想改善这个问题吗?添加详细信息,并通过editing this post阐明问题。 9
如果我运行以下命令: from dateutil import parser parser.parse("Wind10_463@Y2014_M11_D19", fuzzy=True) 我明白了: da
我正在尝试解决第 6 章 - 点定位的“计算几何算法和应用,第 3 版 - de berg 等人”一书的一些练习。不幸的是,我不知道如何解决以下练习: Given a convex polygon P
我是一名优秀的程序员,十分优秀!