无法在DLL"ComCtl32"中找到名为"TaskDialogIndirect"的入口点

Jud*_*ngo 5 c# pinvoke windows-vista

我们有一台特定的Vista x64机器,在运行我们的C#WinForms应用程序时,会显示以下错误:

System.EntryPointNotFoundException:无法在DLL"ComCtl32"中找到名为"TaskDialogIndirect"的入口点.

这个相同的代码在其他Vista机器上运行良好.出于某种原因,这台特殊的Vista机器总是抛出这个例外.

我们该如何解决这个问题?

Jon*_*nas 8

我有这个问题和Naughter的免费XTaskDialog API,通过仿真在Windows XP机器上获得回退机制,使这个对话框实现更加有用.:)

就我而言,这是一个激活上下文问题,如本博客文章中所述.

或者,引用这里,以防博客文章有一天在网络空间丢失(适用于Visual Studio):

  1. 在解决方案资源管理器中打开项目属性,
  2. 在"安全"选项卡上,选中"启用ClickOnce安全设置",
  3. 现在您可以看到在解决方案的Properties文件夹中显示app.manifest文件,打开它,
  4. 在</ trustInfo>标记下面,插入下面的代码.
  5. 如果您尝试构建,则可能存在错误.要解决此问题,请取消选中"启用ClickOnce安全设置".

要在步骤4中插入的代码:

<dependency>
  <dependentAssembly>
    <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" 
        version="6.0.0.0" processorArchitecture="*"
        publicKeyToken="6595b64144ccf1df" language="*" />
  </dependentAssembly>
</dependency>
Run Code Online (Sandbox Code Playgroud)