问题标签 [advapi32]

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 回答
3519 浏览

winapi - CryptAcquireContext -- 未解析的外部

我正在链接第三方库(Poco C++)并从链接器中获取以下未解决的符号错误。它似乎无法找到“CryptAcquireContextW”、“CryptReleaseContext”和“CryptGenRandom”。

根据此处的 Microsoft 信息,这些函数可使用“Advapi32.lib”链接。我已将其添加到我的链接器输入中,但符号仍未解析。

我已经验证了 Advapi32.lib 在搜索路径中,而 Advapi32.dll 在 Windows 目录中,所以我不确定这个错误是如何继续发生的。

想法,有人吗?

谢谢!

0 投票
0 回答
2013 浏览

c++11 - Visual Studio 2013 社区版中缺少 Advapi32.lib

我的代码在使用 VS 2013 Pro 的 PC #1 上编译和链接得很好。使用 VS 2013 社区版在 PC #2 上链接失败。失败是来自 Advapi32.lib 的三个未解决的外部 - CryptAcquireContextW、CryptReleaseContext 和 CryptGenRandom。

这导致了几个关键问题:

  1. 为什么 VS 2013 在找不到链接器输入行上的库时不警告您?
  2. 为什么 Advapi32.lib 在社区版中不可用?
  3. 可以做些什么来解决这个问题?

谢谢。

0 投票
1 回答
3999 浏览

c# - 启动应用程序时 advapi32.dll 中的 EntryPointNotFoundException

我在 Windows 7 x64 SP1 上的 Visual Studio 2013 Update 5 中开发 WPF 应用程序。启动程序后,通过 http 下载 xml 文件并解析它。直到今天一切正常,问题是异常开始突然发生,项目没有发生重大变化,没有添加新的引用。

现在,当启动程序抛出System.Windows.Markup.XamlParseException消息“方法或操作未实现”时,它甚至发生在之前,所以我的代码InitializeComponent()没有一行被执行。然后我查看了Visual Studio 中的IntelliTrace窗口,发现了一连串异常,其中最重要的是消息“无法在 DLL 'advapi32.dll' 中找到名为 'EventSetInformation' 的入口点”System.EntryPointNotFoundException

搜索给我这个这个EventSetInformation只有 Windows 8+ 的谈话。所以windows 7缺少这个方法,这是一个例外,但是我的程序如何引用这个方法,而它(程序)与windows 8无关,一点也不?我还可以假设 Visual Studio 中有一些与 Update-5 相关的组件可以触发此 advapi32 方法,但如果是这样 - 我该如何禁用此功能?


使用 .NET 4.5编辑程序

异常信息:

Edit2
正如史蒂夫和汉斯在评论中注意到的那样,实际问题最终与advapi32库无关。我有一个WindowEx类派生自Window一些自定义的东西,我的可视窗口是从这个派生的WindowEx。也许我的自定义类错过了一些方法(如果相信异常消息),但是在切换回基类Window并将自定义逻辑从WindowEx直接到可视窗口后,错误就消失了。

0 投票
1 回答
1781 浏览

windows - 如何配置用 Go 编写的 Windows 服务的失败操作?

我正在使用该golang.org/x/sys/windows/svc软件包在 Go 中编写 Windows 服务。

到目前为止,一切都很好,而且很容易上手,我喜欢它。

我编写了一些自动更新功能,我希望服务在完成更新后自行重启。

我已经尝试生成一个将使用 重新启动服务的进程SCM,但它会记录一条错误消息,这似乎与尝试在作为本地系统运行时控制服务有关。

一种更好/更简单的方法似乎是os.Exit(1)将服务Failure Actions设置为Restart on Failure,效果很好!

唯一的麻烦是,似乎没有使用 Go 以编程方式配置这些选项的功能。

我已经进行了一些挖掘,看起来它们是通过将结构传递给ChangeServiceConfig2in来配置的advapi32.dll-如何创建在崩溃时重新启动的服务

golang/sys/blob/master/windows/svc/mgr/config.go -func updateDescription(handle windows.Handle, desc string) error

代码已经调用windows.ChangeServiceConfig2,它是 DLL 调用的链接。

SERVICE_FAILURE_ACTIONS结构的 Microsoft 文档在这里

我无法弄清楚如何使用 Go 构建和传递该结构 - 有人有任何见解吗?

0 投票
1 回答
952 浏览

c# - 检查用户是否可以启动服务

我只是在网上搜索了很多,但找不到任何帮助。我有自己的 Windows 服务,现在应该可以从我的主软件配置它。

我在安装、启动、停止、更改和卸载它时没有任何问题。我还可以使用其他用户凭据安装该服务。

但是问题就来了。在安装服务(“cmd”调用sc create SERVICENAME [...])之前,我想检查具有输入凭据的用户是否可以启动服务。所以我需要检查他是否在本地“作为服务登录”安全策略中输入。我不想更改政策,我只想检查是否允许他这样做。

是否可以简单地在 C# 中进行此检查?

0 投票
2 回答
1386 浏览

c# - 使用 advapi32.dll 在 64 位系统上安装 Windows 服务

我想将服务安装到 Service Manager 并运行它。我的代码如下:

此代码在我的 32 位计算机上完美运行,但在 64 位计算机上不起作用。我怎样才能为 64 位做同样的工作?

0 投票
1 回答
216 浏览

windows - 在 Go 中调用 EnumServicesStatusEx,内存分配?

我正在编写一个与 Windows 服务中的 Windows API 交互的应用程序。

在@chowey here的大量帮助之后,我有点掌握了窍门,并开始了一个基本库,我已经把它放在了 GitHub

我现在转到“服务”,要求列出机器上的所有 Windows 服务,启动、停止、重新启动它们。一旦你有一个服务句柄可以使用,启动/停止/重新启动看起来很简单,但我正在努力获取已安装服务的列表。

Advapi32.dll 中的EnumServicesStatusEx是我需要调用的函数,但它需要一个指向为ENUM_SERVICE_STATUS_PROCESS结构数组预分配内存的指针。

您可以使用空指针调用该函数,它将返回所需的内存分配大小,但我不相信有一种方法可以直接在 Go 中分配内存。

起初我以为我可以得到内存分配要求,使用 unsafe 包将它除以结构的 SizeOf,创建一个包含该数量元素的切片,然后将指向第一个元素的指针传递给函数,但它说的是内存需要为字符串数据包含空间,而这不会。

有谁知道这是如何实现的,漂亮吗?:)。

0 投票
1 回答
362 浏览

vb.net - 从 .NET V4 调用 OpenSCManager 时返回无效句柄

我有一个打开服务数据库的 .NET VB winforms 程序,在从 .NET v2 转换为 v4 后它停止工作。从 VB .NET v4 及更高版本调用时,advapi32.dll 中的函数 openscmanager 返回无效句柄。

为 .NET v2 到 v3.5 编译的所有工作正常,但在同一台机器上为 .NET V4 及更高版本编译时失败

在安装了 .NET 4.5.1 和 4.6.1 的 Windows Server 2012 R2 上使用 Visual Studio V2013 或 V2015 有趣的是,相同的代码在 Windows 7 64 位下也可以正常工作,也安装了相同的框架版本

精简代码:

在 .NET v2 下编译返回:

在 .NET v4 下编译返回:

关于如何解决这个问题的任何想法?

0 投票
0 回答
1112 浏览

vb6 - VB6 - CreateProcessWithLogonW 在 Windows 10 上不起作用 - 错误代码 740

我有一个需要维护的旧 VB6 应用程序。

在应用程序功能中调用了 CreateProcessWithLogonW,它在 Windows 10 上运行时不起作用(但在 Windows 7 上运行良好)。

我通过调用收到的错误代码Err.LastDllError错误代码 740,我认为它与“请求的操作需要提升”有关。UAC 在我运行它的 Win 10 机器上被禁用,所以我不确定是什么问题来了??

有人有这方面的经验吗??任何帮助是极大的赞赏!

真正让我困惑的是它在 Win7 上运行没有任何问题。

代码示例如下:

这是函数声明:

这里是函数调用

0 投票
0 回答
2097 浏览

java - JNI 错误:com.sun.jna.platform.win32.Win32Exception:系统找不到指定的文件

我正在使用 JNA 4.2.1 从 Java 访问 Windows 注册表(不幸的是,这是获取配对蓝牙设备列表的唯一方法)。它工作正常,直到 Windows 10 安装了一些更新,现在我遇到以下问题:

com.sun.jna.platform.win32.Win32Exception: 系统找不到指定的文件。在 com.sun.jna.platform.win32.Advapi32Util.registryGetValues(Advapi32Util.java:1649) 在 IntelleWave.Devices.Device.getCOMportByBTUID(Device.java:243) 在 IntelleWave.Devices.Device.getBTDeviceInstances(Device.java:163 ) 在 IntelleWave.Devices.Device.(Device.java:72) 在 IntelleWave.Devices.DeviceEnumerator.InitDevices(DeviceEnumerator.java:101) 在 IntelleWave.SettingsScreenController 的 IntelleWave.Devices.Device.getDeviceInstances(Device.java:112)。 UpdateDeviceList(SettingsScreenController.java:662) at IntelleWave.SettingsScreenController.initialize(SettingsScreenController.java:153) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441 ) 在 javafx.fxml。

在 java.lang.Thread.run(Thread.java:745)

对我来说,我看到 Win32 异常看起来很奇怪,但实际上我有一个 Windows 64。也许问题与这种差异有关,我必须告诉 JNI 使用 x64 库(Advapi32Util)?

你能建议吗?