问题标签 [win32exception]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2503 浏览

c# - 访问被拒绝尝试在 Windows 用户临时文件夹中提取档案

我正在尝试对位于 Windows 用户临时目录 (C:\Documents and Settings\User\Local Settings\Temp ),在我的 c# 应用程序中使用 Process。

我认为由于“访问被拒绝”而发生的进程返回错误,因为当我挖掘 .NET 的进程对象时,我可以看到错误代码为 5 的 win32Exception。

在其他地方做同样的事情之前效果很好,所以我想这可能是我不应该做的事情?(运行一个进程以使用 %TEMP% 上的文件)也许我需要以某种方式通过安全性?

0 投票
4 回答
30788 浏览

c# - Win32Exception 没有足够的存储空间来处理这个命令

通过我对MaxTo的自动崩溃收集,我得到了以下崩溃报告:

另一个堆栈跟踪:

在这个最新的堆栈跟踪中,根本没有提到 MaxTo,而且我遇到的 90% 的崩溃都与上述类似的堆栈跟踪有关。

在网上阅读我发现如果您忘记释放或处置变量,此错误很常见。当查看我的WndProc时,似乎有时会出现问题,我找不到一个地方可以挂起对任何对象的引用。除了一个变量之外的所有变量都是 WndProc 的本地变量,因此在方法终止时应该进行垃圾回收。

即使在多天运行程序时,我也无法重现该错误。

我的假设是系统的未碎片化内存或 GDI 句柄都很低,但我无法在任何地方确认这一点。似乎没有关于此错误的任何好的文档。

任何想法它可能是什么?我能做些什么来防止这个错误吗?

更新:由于缺乏一个像样的解决方案,这个问题被重新打开了更多的堆栈跟踪。简单地忽略它并不能解决问题。

0 投票
3 回答
10969 浏览

c# - 抛出 Win32Exception

我最近一直在编写很多涉及与 Win32 API 互操作的代码,并且开始想知道处理由调用 Windows API 函数引起的本机(非托管)错误的最佳方法是什么。

目前,对本机函数的调用如下所示:

引发异常的行可以等效地重写,我相信:

现在,这一切都很好,因为它适当地引发了一个异常,其中包含设置的 Win32 错误代码以及(通常)人类可读的错误描述作为MessageException 对象的属性。但是,我一直认为建议至少修改/包装这些异常中的一些(如果不是全部),以便它们提供稍微更面向上下文的错误消息,即在本机代码的任何情况下更有意义的错误消息是正在使用。为此,我考虑了几种替代方案:

  1. 在构造函数中为Win32Exception.

    /li>
  2. 将 包装Win32Exception在另一个 Exception 对象中,以便保留原始错误代码和消息(Win32Exception现在是InnerException父异常的)。

    /li>
  3. 与 2 相同,除了使用另一个Win32Exception作为包装异常。

  4. 与 2 相同,但使用派生自的自定义类Exception作为包装异常。

  5. 与 2 相同,除了在适当时使用 BCL(基类库)异常作为父异常。不确定在这种情况下是否适合将 设置为InnerExceptionWin32Exception可能是低级包装器,但不是更高级别/抽象的接口,这不会使 Win32 互操作在幕后发生明显?)

基本上我想知道的是:在 .NET 中处理 Win32 错误的推荐做法是什么?我看到它以各种不同的方式在开源代码中完成,但我很好奇是否有任何设计指南。如果没有,我会在这里对您的个人喜好感兴趣。(也许您甚至没有使用上述方法?)

0 投票
6 回答
39600 浏览

c# - Win32Exception: 目录名无效

我试图在运行 Vista 并启用了 UAC 的 2 台不同计算机中以具有管理员权限的不同用户身份运行进程,但在其中一台计算机中,我得到一个 Win32Exception,显示“目录名称无效”

谁能告诉我我的代码有什么问题?

更新

执行上述代码的应用程序具有 requireAdministrator 执行级别。我什至将工作文件夹设置为“Path.GetDirectoryName(myFile)”“New System.IO.FileInfo(myFile).DirectoryName”

0 投票
8 回答
31405 浏览

c# - System.ComponentModel.Win32Exception:操作成功完成

长时间运行我的 Windows 窗体应用程序时,有时会出现此异常:

这可能是什么原因?

0 投票
1 回答
2419 浏览

c# - 事件日志、模拟和拒绝访问 Win32Exception

我正在使用专用帐户(使用 SDDL 策略)将事件日志条目写入自定义事件日志。为此,我使用 WindowsImpersonationContext 并使用 LogonUser 获取令牌:

这段代码生成事件日志条目,但我也得到了 Win32Exception:

现在,如果我在模拟行之后放置一个 Thread.Sleep(500),异常就会消失:

是什么导致了这个异常,即使有访问被拒绝异常,事件日志条目是如何被写入的?

编辑:并且在使用之前,我已经使用相关日志注册了事件源。我只包含小代码片段以保持消息简短。

0 投票
3 回答
2777 浏览

.net - HRESULT 异常

是否有解释错误代码的列表。Eks: HRESULT: 0x81070215 没有告诉我什么时候出错了?

0 投票
3 回答
715 浏览

c# - 为什么 .NET 不能在内部清除错误?

我正在运行以下场景:

pass 是错误的,但可以预料,因为我正在运行重叠。
问题是 Marshal.GetLastWin32Error() 不返回 ERROR_IO_PENDING 它返回 ERROR_ALREADY_EXISTS。这对我来说很奇怪,因为当我创建文件时错误并没有显示,但是当我写它时出现了。现在我试图弄清楚如何关闭我似乎无法访问的句柄,或者至少得到一个关于为什么会发生这种情况的解释。

编辑:好的,我已经解决了问题,我知道是什么导致了问题。

显然,AppendAllText 调用在内部创建了一个错误。我应该在此日志调用后重置错误吗?我想知道框架不会在其函数的内部工作中重置低级调用会很有帮助。啊,你每天都学到新东西。

我想我的新问题是,我应该在这个调用之后重置低级错误,还是有其他方法来记录输出(不使用像 log4Net 这样的 3rd 方工具或对 Debug.Trace 输出感兴趣)?基本上以某种方式打开一个不影响 Marshal.GetLastWin32Error(); 的附加文件;输出。

0 投票
1 回答
1856 浏览

wcf - WCF 服务的 Win32Exception @ ServiceHost.Open()

我正在为我正在编写的一组广泛的 WCF 服务基础架构编写 BDD 规范。我注意到我编写的每个规范都涉及对 ServiceHost.Open() 的调用,该行需要 2 到 6 秒才能执行(随着我添加越来越多的规范,时间会不断增长)。我注意到,当调用此方法时,会抛出 Win32Exception:

ServiceModel 配置如下:

注意:我已配置 Http.sys 并将http://+:80/calculator/添加为 http 命名空间排除项,因此这不是问题的一部分。

此错误在 Windows 7 Ultimate 系统上最为严重。在 Vista Ultimate 系统上,它似乎不会对性能造成太大影响,但是 ServiceHost.Open() 是执行所花费的大部分时间。我不明白为什么当 URL 是 localhost 时它根本是个问题......我希望环回接口是最快的。

0 投票
3 回答
2955 浏览

c# - PrintDocument.Print() 抛出 Win32Exception

我从以下代码中得到一个奇怪的异常:

最后一行是抛出一个带有详细信息“句柄无效”的 Win32Exception,根据 msdn 文档,唯一应该抛出的异常是找不到打印机。异常似乎是某种驱动程序/非框架异常。

当我选择我的打印机(Lexmark T640,设置为直接打印到打印机端口)时,代码打印正常,但是选择我可以访问的其他两台打印机(另一台 T640 或戴尔颜色)中的任何一台,代码都会失败。另外两台打印机设置为通过我们的中央打印服务器进行打印,但我认为这不会有任何区别。任何人都可以给我任何指示吗?

编辑:刚刚尝试使用 printDialog.PrintQueue.Fullname 并且行为没有什么不同。替换为垃圾打印机名称会按预期抛出 InvalidPrinterException,表明它已找到打印机,但似乎失败了。