- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要在 C# 中使用 win32 NetLocalGroupGetMembers
。我找到并测试了三种解决方案。这三个都因 FatalExecutionEngineError
而失败。框架是.net 4.0
这是一个完整的例子:
API 引用:
static class NetworkAPI
{
[DllImport("Netapi32.dll")]
public extern static int NetLocalGroupGetMembers([MarshalAs(UnmanagedType.LPWStr)] string servername, [MarshalAs(UnmanagedType.LPWStr)] string localgroupname, int level, out IntPtr bufptr, int prefmaxlen, out int entriesread, out int totalentries, out int resumehandle);
[DllImport("Netapi32.dll")]
public extern static int NetApiBufferFree(IntPtr Buffer);
// LOCALGROUP_MEMBERS_INFO_1 - Structure for holding members details
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct LOCALGROUP_MEMBERS_INFO_1
{
public int lgrmi1_sid;
public int lgrmi1_sidusage;
public string lgrmi1_name;
}
}
调用函数:
static void Main(string[] args)
{
int EntriesRead;
int TotalEntries;
int Resume;
IntPtr bufPtr;
string groupName = "Administrators";
NetworkAPI.NetLocalGroupGetMembers(null, groupName, 1, out bufPtr, -1, out EntriesRead, out TotalEntries, out Resume);
if (EntriesRead > 0)
{
NetworkAPI.LOCALGROUP_MEMBERS_INFO_1[] Members = new NetworkAPI.LOCALGROUP_MEMBERS_INFO_1[EntriesRead];
IntPtr iter = bufPtr;
// EntriesRead has the correct quantity of members of the group, so the group is found
for (int i = 0; i < EntriesRead; i++)
{
// --------------------------------------------------
// ==> here the FatalExecutionEngineError happens:
Members[i] = (NetworkAPI.LOCALGROUP_MEMBERS_INFO_1)Marshal.PtrToStructure(iter, typeof(NetworkAPI.LOCALGROUP_MEMBERS_INFO_1));
//
// --------------------------------------------------
iter = (IntPtr)((int)iter + Marshal.SizeOf(typeof(NetworkAPI.LOCALGROUP_MEMBERS_INFO_1)));
Console.WriteLine(Members[i].lgrmi1_name);
}
NetworkAPI.NetApiBufferFree(bufPtr);
}
}
最佳答案
我看到以下错误:
ref IntPtr resumehandle
,并在第一次调用时传递 IntPtr.Zero
。或者,如果您不需要使用恢复句柄,则将参数声明为 IntPtr resumehandle
并传递 IntPtr.Zero
。有关完整详细信息,请参阅 MSDN 上的功能文档。lgrmi1_sid
成员是一个指针。声明如下:public IntPtr lgrmi1_sid
。IntPtr
转换为 int
将导致指针在 64 位上被截断。直接在 IntPtr
上使用算术,或者对于旧的 C# 版本转换为 long
。前者更好,如下所示:iter += Marshal.SizeOf(typeof(NetworkAPI.LOCALGROUP_MEMBERS_INFO_1));
。修复这些错误,您的程序将正确运行。
关于c# - PInvoke NetLocalGroupGetMembers 遇到 FatalExecutionEngineError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33935825/
我收到以下错误: Managed Debugging Assistant 'FatalExecutionEngineError' has detected a problem in 'C:\Users
今天我正在调试我的一些代码,这些代码构建了一些 ExpressionTrees,将它们编译为可调用的委托(delegate),然后在需要时调用它们。在执行此操作时,我遇到了 FatalExecutio
我在尝试将许多 DBase IV 文件中的 memofields 中的 C++ 结构读取到 C# (.Net 4) 中,然后将它们插入 MSSQL 2008 中时遇到了问题。数据正在从 DBase 文
这是我得到执行错误的行: NimbieImportedFunctions.BS_Robots_Connect( out robotCount, out robotIDs, out robotT
当我调试 ASP.NET MVC 应用程序时,KeyVaultClient 随机抛出异常: Managed Debugging Assistant 'FatalExecutionEngineError
托管调试助手“FatalExecutionEngineError”:“运行时遇到 fatal error 。错误的地址是 0x641ad419,在线程 0x5d0c 上。错误代码是 0xc000000
我需要在 C# 中使用 win32 NetLocalGroupGetMembers。我找到并测试了三种解决方案。这三个都因 FatalExecutionEngineError 而失败。框架是.net
我正在用 C# 例程试验一个我无法解决的乏味问题。我正在开发一个应用程序,它使用 GDAL 库(一个用 C++ 编写的 DLL 库来操作地理数据)打开 ESRI ShapeFile,并在 Pictur
几周(几个月?)以来,在 Visual Studio 2017/2019 Enterprise 中重新启动我的 ASP.NET 应用程序后,我有时会遇到以下异常。只有当 IIS Express 已经在
我正在开发一个连接到 MySQL 数据库的 C#.NET 应用程序,并使用一些不安全的代码来使用旧的 C++ dll。 程序一启动,就会加载dll并分配一个指针,然后初始化一些C#变量,然后删除指针。
作为我论文的一部分,我正在开发一个客户端/服务器应用程序,并选择使用 SocketAsyncEventArgs 来获得网络操作方面的最大性能。今天下午,我决定对创建 20 个线程并为每个线程发送 10
在我的程序中这一行: int value = MTEConnect(auth_string, err); 我收到这样的异常: FatalExecutionEngineError The runtime
我们正在使用一个封装数值的结构,我发现当在表达式中使用该结构的可空版本时,会发生 FatalExecutionEngineError: Additional information: The runt
我即将为用 VBScript 编写的遗留系统启动一个正在工作的迁移项目。它有一个有趣的结构,其中大部分是通过将各种组件编写为“WSC”文件来隔离的,这实际上是一种以类似 COM 的方式公开 VBScr
我正在研究无锁堆栈和队列数据结构,我可以在其中放置任意数量的添加项目并在一次调用中收集所有项目,我认为我的设计是可靠的并且它按预期工作直到我开始收到一个意外的异常,我认为这在纯 C# 环境中是不可能的
在 AnyCPU 或 x86 上,我可以运行这个程序,在 Foo 上设置一个断点,将第一个参数从 0.5f 编辑到 0.6f,然后恢复就好了。 但是,在 x64 上,它在恢复时始终因 FatalExe
我有以下基本 XAML: 当我尝试关闭包含用户控件的选项卡时,出现以下错误: Managed Debugging Assistant 'FatalExecut
这个问题不太可能对任何 future 的访客有帮助;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于互联网的全局受众。如需帮助使这个问题更广泛适用,visit the h
当我尝试调试我的项目时,我不断收到此错误消息。相同的代码适用于大学机器。我目前使用 Windows 8.1 和 resharper 8.2,并在 selenium 测试中使用了最初的几种方法。我也在使
我正在尝试(为了好玩)将 String.Empty 重新定义为单个空格“”。为什么这会破坏 CLR 框架? 留言: The runtime has encountered a fatal error.
我是一名优秀的程序员,十分优秀!