c#编程语言,win7下使用Kernel32的LoadLibrary方法载入DLL失败,如何解决?

C# (C sharp)编程语言。
在win xp 下,使用下面的方法 LoadLibrary 可以载入DLL(动态链接库),返回的值非0 。非0表示成功载入。
在win 7 下,为什么相同的代码,相同的DLL,返回值是0。0表示载入失败。
[DllImport("Kernel32")]
public static extern int LoadLibrary(String funcname);

是不是win xp 系统和win 7 系统载入的过程不同,导致结果不同?
回答重点,怎么解决在win 7 下使用该方法载入该dll 。
补充:
win xp 下,C#写的程序能正常运行。
win 7 下,该程序无法正常运行,即使使用管理员权限运行也是一样的结果。
而无法运行的原因就是载入DLL失败。

该方法的详细说明:
/// <summary>
/// 载入指定的动态链接库,并将它映射到当前进程使用的地址空间。
/// 一旦载入,即可访问库内保存的资源
/// </summary>
/// <param name="funcname">指定要载入的动态链接库的名称</param>
/// <returns>成功则返回库模块的句柄,零表示失败</returns>
[DllImport("Kernel32")]
public static extern int LoadLibrary(String funcname);

第1个回答  2014-07-23
[DllImportAttribute("kernel32.dll", EntryPoint = "ReadProcessMemory")]
public static extern bool ReadProcessMemory
(
IntPtr hProcess,
IntPtr lpBaseAddress,
IntPtr lpBuffer,
int nSize,
IntPtr lpNumberOfBytesRead
);
这是我用的读写内存的一个例子追问

DLL还没有成功载入到内存中,也就没有返回句柄,就不能使用你写的方法进行读取。

追答

这个会自动去载入dll的

追问

我的代码这样写,
int hModule = 0;
hModule = DLLWrapper.LoadLibrary("DelphiDLL1.dll");
if (hModule == 0)
{
//载入失败
}
载入的是放在程序目录里的“DelphiDLL1.dll”文件。
怎么修改为你所说的"ReadProcessMemory”方法?

第2个回答  2014-07-23
是不是权限级别不够,以管理员身份运行你的程序试试!追问

用管理员身份运行,程序也是无法正常运行。

追答

你用依赖项查看工具看一下,DelphiDLL1.dll是不是在Windows7下缺少依赖项。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网