问题标签 [windows64]

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 投票
1 回答
658 浏览

.net - 运行将 32 位 dll 作为 64 位服务加载的 32 位窗口服务

情况是这样的——

我正在编码的窗口服务使用 Linq2Excel,它坚持调用应用程序要符合 x86。

但是,窗口服务要安装在 64 位 Windows 服务器上。

使用 corflags,我可以安装 32 位窗口服务。但是,它会拒绝加载 Linq2Excel。这是所有荣耀中的例外:

使该服务正常工作的解决方案是什么?(将服务器改为32位是不会发生的,使用Linq2Excel是必须的)

0 投票
1 回答
399 浏览

winforms - Winform 应用程序未在 64 位服务器上运行

我有一个 winform 应用程序来从注册表项中读取值..

所以我知道我必须以管理员身份运行才能这样做。

我有两台win 2003的服务器。一台是32位的,另一台是64位的。

当我在 32 位上运行此应用程序时,我没有问题,它会从注册表中读取值..

但是当我从我的 64 位服务器运行应用程序时,它无法从注册表中读取。

我得到一个

system.null 引用异常

因为我无法读取返回 null 的 reg 键的根。

我也放了一个清单文件,但它也不起作用..

任何帮助将不胜感激...谢谢..

这是我的清单文件:

这不是完整的清单,因为我认为这里不需要显示...

0 投票
2 回答
2156 浏览

python - 尝试在 Windows (x64) 上安装 Python bcrypt 的许多问题

这个问题已经在其他地方提到过,但它没有提供有效的解决方案,所以我仍然想保持一张票。

这是在摆脱最初的“错误:安装脚本退出并出现错误:无法找到 vcvarsall.bat”</a>之后,我留下了一个看起来像 Gordic 结的东西。pip并且easy-install不工作。我还阅读了其他一些文章。

我目前不需要实施 bcrypt,所以这不是一件紧急的事情,但显然,实施安全的密码保护是至关重要的。

0 投票
1 回答
430 浏览

c# - 从 Win64bit 的外部进程文件句柄获取文件名 - C#

有人能帮帮我吗。

我想获取与外部进程的文件句柄对应的文件名。

目前我设法只在 Win32bit 而不是 Win64bit 上做到这一点。

在 Windows 64bit 中是否需要代码签名?

谢谢 !

0 投票
8 回答
105488 浏览

python - Python 2.7.2 的 pyserial

我是 Python 新手。根据互联网,我在收到此错误后正在寻找模块pyserial :

我首先尝试安装pywin32,它很顺利。但它似乎不包含pyserial。:-(

然后我找到了pyserial的单个模块安装程序,我无法安装它,它说它没有在注册表中找到python的路径。:-(

之后我在 python.org 上找到了这个模块,但我不知道该怎么做,它没有附带安装程序。:-(

如何在Windows 7 64上将 pyserial 添加到 Python (64) 2.7 ?

0 投票
3 回答
1427 浏览

c# - WPF 保存对话框(适用于 windows 64)

这与该站点上的旧帖子类似,但我不断收到错误消息。我想在 C# WPF 中创建一个按钮,该按钮打开一个对话框并保存一个文本文件以供以后读取。此代码适用于 windows 32,但在 windows 64 上崩溃。如何更改此代码以使其在两个系统上都可以使用?我是编程的初学者。

0 投票
1 回答
16090 浏览

python - 如何为 Python 3.2 Windows 64 位安装 Feedparser 5.1。

我正在尝试为 Python 3.2、Windows 64 位 安装Feedparser 5.1。

我已经尝试永远(也就是过去 2 周)为 Python 安装 Feedparser,但失败得很惨。我已经阅读了自述文件,尝试搜索互联网,但没有任何东西对我有用。不用说,我觉得自己完全愚蠢。

有人请给我安装 Feedparser 5.1 for Python 3.2 Windows 64 位的分步说明。我很绝望,请。

0 投票
1 回答
790 浏览

windows - 是否有商业 UMS(User-Mode Scheduler) 应用程序

我正在寻找使用 UMS(用户模式调度)并且已经在商店中提供的商业软件。如果有人知道这样的软件,我想知道它(软件名称和链接)。

0 投票
1 回答
1505 浏览

c - 如何在 64 位窗口中将 wchar_t 数组打印到文件中

我想将一些从某些 windows api 填充的 wchar_t 数组输出到用 fopen 打开的文件中:

但是, fputs 需要一个 const char* 数组。是否有其他一些 C api 可以写入需要宽数组字符的文件管道?

0 投票
2 回答
4799 浏览

windows - 为什么 64 位 Windows 不能解除用户-内核-用户异常?

如果堆栈跨越内核边界,为什么 64 位 Windows 不能在异常期间展开堆栈 - 而 32 位 Windows 可以?

整个问题的背景来自:

OnLoad 异常消失案例——x64 中的用户态回调异常

背景

在 32 位 Windows 中,如果我在我的用户模式代码中抛出异常,该异常是从内核模式代码回调的,它是从我的用户模式代码调用的,例如:

Windows 中的结构化异常处理 (SEH) 可以展开堆栈,通过内核模式展开,回到我的用户代码,在那里我可以处理异常并且我看到有效的堆栈跟踪。

但不是在 64 位 Windows 中

64 位版本的 Windows 不能这样做:

由于复杂的原因,我们无法将异常传播回 64 位操作系统(amd64 和 IA64)。自从 Server 2003 的第一个 64 位版本以来,情况就一直如此。在 x86 上,情况并非如此——异常通过内核边界传播,最终将帧返回

而且由于在这种情况下无法返回可靠的堆栈跟踪,因此必须做出决定:让您看到无意义的异常,或者完全隐藏它:

当时的内核架构师决定采取保守的 AppCompat-friendly 方法——隐藏异常,并寄希望于最好的结果。

本文继续讨论所有 64 位 Windows 操作系统的行为方式:

  • Windows XP 64 位
  • Windows Server 2003 64 位
  • Windows Vista 64 位
  • Windows Server 2008 64 位

但从 Windows 7(和 Windows Server 2008)开始,架构师改变了他们的想法——在某种程度上。对于64 位应用程序(不是 32 位应用程序),它们将(默认情况下)停止抑制这些用户-内核-用户异常。因此,默认情况下,打开:

  • Windows 7 64 位
  • 视窗服务器 2008

所有 64 位应用程序都会看到这些异常,它们以前从未见过它们。

在 Windows 7 中,当原生 x64应用程序以这种方式崩溃时,程序兼容性助手会收到通知。如果应用程序没有Windows 7 清单,我们会显示一个对话框,告诉您 PCA 已应用应用程序兼容性 shim。这是什么意思?这意味着,下次您运行应用程序时,Windows 将模拟 Server 2003 的行为并使异常消失。请记住,Server 2008 R2 上不存在 PCA,因此此建议不适用。

所以这个问题

问题是为什么64 位 Windows 无法通过内核转换来展开堆栈,而 32 位版本的 Windows 可以?

唯一的提示是:

由于复杂的原因,我们无法将异常传播回 64 位操作系统(amd64 和 IA64)。

提示是复杂的

我可能不明白这个解释,因为我不是操作系统开发人员 - 但我想知道为什么。


更新:停止抑制 32 位应用程序的修补程序

Microsoft 发布了一个修补程序,使 32 位应用程序也不再抑制异常:

KB976038:在 64 位版本的 Windows 中运行的应用程序引发的异常被忽略

  • 在回调例程中引发的异常在用户模式下运行。

在这种情况下,此异常不会导致应用程序崩溃。相反,应用程序进入不一致的状态。然后,应用程序抛出一个不同的异常并崩溃。

用户模式回调函数通常是由内核模式组件调用的应用程序定义的函数。用户模式回调函数的示例是 Windows 过程和挂钩过程。Windows 调用这些函数来处理 Windows 消息或处理 Windows 挂钩事件。

然后,此修补程序可让您阻止 Windows 全局吃掉异常:

或每个应用程序:

该行为也记录在 XP 和 Server 2003 的 KB973460 中:


一个提示

在研究使用 xperf 在 64 位 Windows 上捕获堆栈跟踪时,我发现了另一个提示:

Xperf 中的堆栈行走

禁用寻呼执行器

为了在 64 位 Windows 上进行跟踪,您需要设置DisablePagingExecutive注册表项。这告诉操作系统不要将内核模式驱动程序和系统代码分页到磁盘,这是使用 xperf 获取 64 位调用堆栈的先决条件,因为 64 位堆栈遍历依赖于可执行映像中的元数据,并且在某些情况下xperf堆栈遍历代码不允许触摸分页页面。从提升的命令提示符运行以下命令将为您设置此注册表项。

设置此注册表项后,您需要重新启动系统才能记录调用堆栈。设置此标志意味着 Windows 内核将更多页面锁定到 RAM 中,因此这可能会消耗大约 10 MB 的额外物理内存。

这给人的印象是,在 64 位 Windows 中(并且仅在 64 位 Windows 中),您不允许遍历内核堆栈,因为磁盘上可能有页面输出。