我们已经开始在Windows 7上测试应用程序.我们首先得到了"未知提供商"消息.我们签署了申请,现在收到一条消息:
是否要允许以下程序更改您的计算机?
这些消息都不是在Vista中生成的.我知道UAC在Win 7中得到了增强.很难找出导致这些消息的真正原因.
我搜索过网络,但没有提供一个很好的清单,列出了产生第二条消息的内容.有没有人有这样的清单?此外,是否有人知道当应用程序尝试以未经批准的方式访问系统时是否生成此消息,或者标记是否以某种方式编译到应用程序中?
我正在尝试在Win7 x64计算机上安装并运行32位应用程序.该应用程序是作为Win32应用程序构建的.它在32位平台上运行良好.在x64机器上,它在Programs(x86)目录中正确安装并运行正常,直到我调用32位dll.那时我得到错误的格式错误(0x8007000b),表明它正在尝试加载错误位数的dll.实际上,它试图从System32目录加载64位dll而不是SystemWOW64目录中的32位版本.
由dll供应商提供的另一个32位应用程序正确运行,它确实从SystemWOW64目录加载32位dll.我没有他们的应用程序的源来看他们如何访问DLL.
我正在使用如下所示的DllImport函数来访问dll.有没有办法装饰DllImport调用强制它加载32位版本?
任何想法都赞赏.
谢谢,DP
public static class Micronas
{
[DllImport(@"UAC2.DLL")]
public static extern short UacBuildDeviceList(uint uFlags);
[DllImport(@"UAC2.DLL")]
public static extern short UacGetNumberOfDevices();
[DllImport(@"UAC2.DLL")]
public static extern uint UacGetFirstDevice();
[DllImport(@"UAC2.DLL")]
public static extern uint UacGetNextDevice(uint handle);
[DllImport(@"UAC2.DLL")]
public static extern uint UacSetXDFP(uint handle, short adr, uint data);
[DllImport(@"UAC2.DLL")]
public unsafe static extern uint UacGetXDFP(uint handle, short adr, IntPtr data);
}
Run Code Online (Sandbox Code Playgroud)