无法定位程序输入点GetFileInfotmationByHandleEx于动态链接库KERNEL32.dll

无法定位程序输入点GetFileInfotmationByHandleEx于动态链接库KERNEL32.dll,第1张

可以尝试以下几种方法,看能不能解决:

1、病毒原因导致的,建议将杀毒软件升级到最新版本,然后再安全模式下全盘扫描病毒

2、软件修复,可以通过金山卫士、360安全卫士的系统修复功能修复一下试试

3、开始--运行--输入regsvr32 报错的DLL文件名称(全名),重新注册下DLL文件试试

4、开始——运行——msconfig——启动——把加载项DLL的那个勾勾去掉,然后重启电脑试试

5、从网上下载需要的DLL文件(百度搜索),将下载的DLL文件拷贝到C:\windows\system32 文件夹(目录)下,然后重启电脑(注意:最好启动到安全模式下 *** 作)。

6、检查之前是否升级过某些软件,如果有,换回原版本试试(覆盖安装)

7、如果是下载的软件安装时出现此问题,建议更换一个下载源下载后安装试试

咱们在日常 *** 作的时候一定要注意,不要过于频繁的使用优化工具优化系统,有可能会导致优化软件误删除了某些软件或系统文件;在删除文件时不清楚的最好不用乱动,避免系统出现问题。

出现这类现象是因为在安装游戏或一些新版本软件的时候,只是抽取了程序包中的文件到安装目录文件夹中。没有完全安装好。可以尝试以下 *** 作方法来解决问题:

1、这里以安装百度云管家为例,下载完软件程序之后,双击安装,安装的时候没有出错误提示,但只是抽取了程序包中的文件到安装目录文件夹中。

2、桌面不会有正常安装完之后的软件图标,找到安装目录文件夹下的可执行的软件EXE,双击打开,出现上面介绍的错误提示。

3、进入百度搜索并下载SP3补丁包;

无法定位dll输入点是常见的问题,原因是没有安装 vc2010

1、首先确定你的DLL文件已经放到正确的文件夹下

2、去搜一下:vc2010,下载装上就好了

注意:有很多人说安装了VC2010也没用,那肯定是因为VC2010只是解压缩了,并没有点解压后的文件夹里的setup安装

在 开始--->运行 输入命令:

cmd /c for %i in (%windir%\system32\dll) do regsvr32exe /s %i

cmd /c for %i in (%windir%\system32\ocx) do regsvr32exe /s %i

先输入一条 回车 运行完了之后再输入另一条。

注:出现 “xxxexe - 无法找到入口,无法定位程序输入点 xxx 于动态链接库 xxxdll上。” 的问题一般是由于dll文件版本与exe文件版本文件不同造成。

第一步,我先从简单的调用出发,定义了一个简单的函数,该函数仅仅实现一个整数加法求和:

LIBEXPORT_API int mySum(int a,int b){ return a+b;}

C# 导入定义:

public class RefComm

{

[DllImport("LibEncryptdll",

EntryPoint=" mySum ",

CharSet=CharSetAuto,CallingConvention=CallingConventionStdCall)]

public static extern int mySum (int a,int b);

}

在C#中调用测试:

int iSum = RefCommmySum(,);

运行查看结果iSum为5,调用正确。第一步试验完成,说明在C#中能够调用自定义的动态链接库函数。

第二步,我定义了字符串 *** 作的函数(简单起见,还是采用前面的函数名),返回结果为字符串:

LIBEXPORT_API char mySum(char a,char b){sprintf(b,"%s",a); return a;}

C# 导入定义:

public class RefComm

{

[DllImport("LibEncryptdll",

EntryPoint=" mySum ",

CharSet=CharSetAuto,

CallingConvention=CallingConventionStdCall)]

public static extern string mySum (string a, string b);

}

在C#中调用测试:

string strDest="";

string strTmp= RefCommmySum("45", strDest);

运行查看结果 strTmp 为"45",但是strDest为空。我修改动态链接库实现,返回结果为串b:

LIBEXPORT_API char mySum(char a,char b){sprintf(b,"%s",a) return b;}

修改 C# 导入定义,将串b修改为ref方式:

public class RefComm

{

[DllImport("LibEncryptdll",

EntryPoint=" mySum ",

CharSet=CharSetAuto,CallingConvention=CallingConventionStdCall)]

public static extern string mySum (string a, ref string b);

}

在C#中再调用测试:

string strDest="";

string strTmp= RefCommmySum("45", ref strDest);

运行查看结果 strTmp 和 strDest 均不对,含不可见字符。再修改 C# 导入定义,将CharSet从Auto修改为Ansi:

public class RefComm

{

[DllImport("LibEncryptdll",

EntryPoint=" mySum ",

CharSet=CharSetAnsi,CallingConvention=CallingConventionStdCall)]

public static extern string mySum (string a, string b);

}

在C#中再调用测试:

string strDest="";

string strTmp= RefComm mySum("45", ref strDest);

运行查看结果 strTmp 为"45",但是串 strDest 没有赋值。第二步实现函数返回串,但是在函数出口参数中没能进行输出。再次修改 C# 导入定义,将串b修改为引用(ref):

public class RefComm

{

[DllImport("LibEncryptdll",

EntryPoint=" mySum ",

CharSet=CharSetAnsi,CallingConvention=CallingConventionStdCall)]

public static extern string mySum (string a, ref string b);

}

运行时调用失败,不能继续执行。

第三步,修改动态链接库实现,将b修改为双重指针:

LIBEXPORT_API char mySum(char a,char b){sprintf((b),"%s",a); return b;}

C#导入定义:

public class RefComm

{

[DllImport("LibEncryptdll",

EntryPoint=" mySum ",

CharSet=CharSetAnsi,CallingConvention=CallingConventionStdCall)]

public static extern string mySum (string a, ref string b);

}

在C#中调用测试:

string strDest="";

string strTmp= RefComm mySum("45", ref strDest);

运行查看结果 strTmp 和 strDest 均为"45",调用正确。第三步实现了函数出口参数正确输出结果。

第四步,修改动态链接库实现,实现整数参数的输出:

LIBEXPORT_API int mySum(int a,int b,int c){ c=a+b; return c;}

C#导入的定义:

public class RefComm

{

[DllImport("LibEncryptdll",

EntryPoint=" mySum ",

CharSet=CharSetAnsi,CallingConvention=CallingConventionStdCall)]

public static extern int mySum (int a, int b,ref int c);

}

在C#中调用测试:

int c=0;

int iSum= RefComm mySum(,, ref c);

运行查看结果iSum 和c均为5,调用正确。

经过以上几个步骤的试验,基本掌握了如何定义动态库函数以及如何在 C# 定义导入,有此基础,很快我实现了变长加密函数在 C# 中的调用,至此目标实现。

三、结论

在 C# 中调用 C++ 编写的动态链接库函数,如果需要出口参数输出,则需要使用指针,对于字符串,则需要使用双重指针,对于 C# 的导入定义,则需要使用引用(ref)定义。

对于函数返回值,C# 导入定义和 C++ 动态库函数声明定义需要保持一致,否则会出现函数调用失败。定义导入时,一定注意 CharSet 和 CallingConvention 参数,否则导致调用失败或结果异常。运行时,动态链接库放在 C# 程序的目录下即可,我这里是一个 C# 的动态链接库,两个动态链接库就在同一个目录下运行。

去更新DirectX ,gta4需要DX9,你可以去下载DX9来安装。

原因:

1病毒木马导致的,有些木马通过绑架系统文件dll实现开机启动。而玩家开机后,某些安全杀毒软件把系统文件被感染当病毒杀掉以后,提示找不到相应的dll或者系统功能不正常

2在软件或游戏在线更新时,本该被正常写入或覆盖的DLL动态链接库文件因为意外的断电、重启、写入错误等原因没有下载更新成功,导致软件或游戏在运行过程中缺少必要的DLL动态链接库文件而报错

3用户误 *** 作不小心将程序安装目录中的动态链接库dll文件删除,导致程序启动时无法找到必要的文件而报错

RegGetValueW最低要求Vista或XP x64。

所以出现这个提示,可能你的系统是XP x86,所用软件调用了系统不兼容的API。

建议升级系统或者使用旧版软件。

文章名称:修复系统无法启动登陆,系统程序"lsassexe"d出错误提示"无法定位程序输入点LdrsetSessionName于动态链接库mfc40udll上"的方法

文章类型:系统修复、病毒查杀

说明:

系统无法正常登陆,在启动时系统程序“lsassexe”会d出错误提示:“无法定位程序输入点 LdrsetSessionName 于动态链接库 mfc40udll 上。”或“没有找到 mfc40udll 组件,重新安装应用程序可能会修复此问题。”等信息的修复方法。

------------------------------------------------------------------------

------------------------------------------------------------------------

介绍:

系统程序“lsassexe”d出错误“无法定位程序输入点 LdrsetSessionName 于动态链接库 mfc40udll 上。”这个提示是由于系统被病毒破坏而产生的。是系统程序“lsassexe”进程启动时d出来的错误提示信息,真正的系统程序“lsassexe” 进程中是不会有这种提示信息的。之所以会d出该提示,是因为病毒修改了系统“lsassexe”程序的输入表(在输入表的尾部多加了一条调用信息 “LdrsetSessionName”、“mfc40udll”),同时病毒又使用自身释放出来的恶意DLL组件覆盖了系统本身的DLL组件 “mfc40udll”(系统内原本就有这个DLL组件的)。当杀毒软件或安全软件发现了被病毒程序破坏的系统DLL组件“mfc40udll”(系统原DLL组件的功能是MFC的部分函数库,被病毒覆盖后的DLL组件的功能是木马下载器)后,就给强行删除掉了,但没有去修复系统程序 “lsassexe”文件的输入表,也没有还原被病毒破坏的系统DLL组件“mfc40udll”文件,所以出现了上边的错误提示信息。

病毒是利用磁盘过滤驱动去读写真实磁盘中的数据,然后去破坏系统“lsassexe”和“mfc40udll”文件的。所以,不管系统 “lsassexe”和“mfc40udll”程序有没有在运行,都会被病毒破坏掉。该病毒使用了类似于“古老的机器狗病毒穿系统还原的设计原理”,并没有去破坏您系统的注册表中的数据信息。所以在网络上见很多人提出使用“重新注册系统‘mfc40udll’DLL组件的方法是不对的”,可能会对系统造成更大的破坏。要对症下药,不然很可能会越医越病!!

------------------------------------------------------------------------

------------------------------------------------------------------------

信息:

“C:\” = “这里的C盘为系统盘”

“lsassexe” = “C:\WINDOWS\system32\lsassexe”

“mfc40udll” = “C:\WINDOWS\system32\mfc40udll”

上述二个文件一般都可以在系统“C:\WINDOWS\system32\dllcache”目录下找到正常完好的系统备份文件。

------------------------------------------------------------------------

------------------------------------------------------------------------

修复方法步骤(经过实际测试绝对有效):

-------------------------------------

一、系统可以启动登陆的修复方法:(转载请注明出自Coderui的博客,谢谢)

1:把系统程序“lsassexe”文件和系统DLL组件程序“mfc40udll”文件同时改名,Windows系统是支持运行着的程序改名的。(如果您能终止掉系统程序“lsassexe”和DLL组件“mfc40udll”的运行也可以)。

2:复制一个正常的系统程序“lsassexe”文件保存为“C:\WINDOWS\system32\lsassexe”文件。

3:复制一个正常的系统DLL组件程序“mfc40udll”文件保存为“C:\WINDOWS\system32\mfc40udll”文件。

4:按照上边的1-3步骤 *** 作完毕后,重新启动一次计算机,一切修复完毕。

5:系统修复完毕后,要使用杀毒软件去查杀病毒。因为该病毒为木马下载器,它可能已经在您的计算机系统中安装了其它恶意程序(20款以上)。

-------------------------------------

-------------------------------------

二、系统无法启动登陆的修复方法:(转载请注明出自Coderui的博客,谢谢)

1:使用PE盘或DOS盘启动系统(这种情况下,安全模式是无法登陆的)。

2:复制一个正常的系统程序“lsassexe”文件保存为“C:\WINDOWS\system32\lsassexe”文件。

3:复制一个正常的系统DLL组件程序“mfc40udll”文件保存为“C:\WINDOWS\system32\mfc40udll”文件。

4:按照上边的1-3步骤 *** 作完毕后,重新启动一次计算机,一切修复完毕。

5:系统修复完毕后,要使用杀毒软件去查杀病毒。因为该病毒为木马下载器,它可能已经在您的计算机系统中安装了其它恶意程序(20款以上)。

-------------------------------------

-------------------------------------

注意:

上述三个文件一般都可以在系统“C:\WINDOWS\system32\dllcache”目录下找到正常完好的系统备份文件。如果实在没有找到的话,可以去同一个版本的其它计算机系统中拷贝。

最好是断开网络修复系统,因为该病毒为木马下载器,它会连接网络向您的计算机中安装20多款其它恶意程序(如网络游戏盗号木马等)。

因为该病毒并没有去破坏或修改您系统中的注册表,请您不要去重新注册系统DLL组件“mfc40udll”,不然可能会带去不必要的麻烦。

-------------------------------------

------------------------------------------------------------------------

------------------------------------------------------------------------

这个病毒我们已经捕捉到了(转载请注明出自Coderui的博客,谢谢),并做了分析和处理。上述方法在真实机器上测试修复通过,和大家分享下,希望可以帮助处于水深火热中的朋友们,这样大家就省去重新安装 *** 作系统的麻烦了。

------------------------------------------------------------------------

以上就是关于无法定位程序输入点GetFileInfotmationByHandleEx于动态链接库KERNEL32.dll全部的内容,包括:无法定位程序输入点GetFileInfotmationByHandleEx于动态链接库KERNEL32.dll、无法定位程序输入点getlogicalprocessorinformation于动态链接库nvtray.exe上、跳出“无法定位程序输入点GetIUriPriv 于动态链接库urlmon.dll上。”怎么办有什么解决方案吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9274201.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存