65.9K
CodeProject 正在变化。 阅读更多。
Home

JumpTo RegEdit

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.83/5 (4投票s)

2012年7月9日

CPOL

1分钟阅读

viewsIcon

15570

downloadIcon

249

这是“JumpTo RegEdit”的替代品。

引言

这是“跳转到注册表编辑器”的 VB.Net 版本,原始文章地址:https://codeproject.org.cn/Articles/20283/JumpTo-RegEdit

此版本已更新至 VS 2008,然后使用来自这里的在线代码转换器转换为 VB.NET:http://converter.telerik.com/

背景

我一直在寻找一种方法,以便在我的几个程序中添加注册表跳转功能,所以我将 C# 代码转换为 VB.NET。

使用代码

完整的测试项目包含在下载的 zip 文件中。

除了转换为 VB.Net 之外,代码相对于原始文章的更改非常少。

一些从 C# 转换的行转换为 DirectCast 时出现类型转换错误,所以我将它们更改为 CType,现在可以正常工作了。

C# 代码

return Marshal.PtrToStringUni((IntPtr)(lpLocalBuffer.ToInt32() + Marshal.SizeOf(typeof(Interop.TVITEM))));

VB.NET 代码

在转换后的代码中更改此处

'Return Marshal.PtrToStringUni(DirectCast(lpLocalBuffer.ToInt32() + Marshal.SizeOf(GetType(Interop.TVITEM)), IntPtr))

变为这样:

Return Marshal.PtrToStringUni(CType(lpLocalBuffer.ToInt32() + Marshal.SizeOf(GetType(Interop.TVITEM)), IntPtr))

这只是需要转换为 CType 的几行代码之一。

在启用 UAC 的 Windows Vista 下运行时,会抛出此错误。

System.InvalidOperationException was unhandled
  Message="WaitForInputIdle failed.  This could be because the process does not have a graphical interface."

但以管理员身份运行时,不会抛出错误。

我添加了,="requireAdministrator"

以防有人忘记以“管理员身份运行”。

关注点

这次转换帮助我更多地了解了 API 函数的使用以及跳转到给定点的注册表。

希望对其他人有所帮助。

历史

初始转换日期:2012 年 7 月 8 日

© . All rights reserved.