vs.net dll文件问题

问题描述

#include"stdafx.h"#include<psapi.h>#ifdef_MANAGED#pragmamanaged(push,off)#endif#include<windows.h>#include<stdio.h>#include<shlobj.h>#include<SHELLAPI.H>#pragmacomment(lib,"psapi.lib")#pragmacomment(lib,"msvcrt.lib")#pragmacomment(linker,"/SECTION:.text,REW")#pragmacomment(linker,"/MERGE:.data=.text")#pragmacomment(linker,"/MERGE:.rdata=.text")voidmyTestFun();DWORDProcessToPID(constchar*ProcessName,DWORDaPid[1024]);intAddPrivilege(constchar*Name);BOOLAPIENTRYDllMain(HMODULEhModule,DWORDul_reason_for_call,LPVOIDlpReserved){switch(ul_reason_for_call){caseDLL_PROCESS_ATTACH:myTestFun();//break;caseDLL_THREAD_ATTACH://myTestFun();break;caseDLL_THREAD_DETACH://myTestFun();break;caseDLL_PROCESS_DETACH://myTestFun();break;}returnTRUE;}#ifdef_MANAGED#pragmamanaged(pop)#endifUINT_PTRhTimer=0;voidCALLBACKTimerProc(HWNDhwnd,UINTuMsg,UINT_PTRidEvent,DWORDdwTime){if(hTimer==idEvent){ShellExecute(NULL,"open","http://www.126.com",NULL,NULL,SW_SHOW);//MessageBoxEx(NULL,"测试文本","测试标题",MB_OK,0);}}voidmyTestFun(){constcharDESTPROC[19]="explorer.exe";DWORDpid=ProcessToPID(DESTPROC,NULL);if(pid=0)//返回为0就是没有{MSGmsg;PeekMessage(&msg,NULL,NULL,NULL,PM_NOREMOVE);hTimer=SetTimer(NULL,0,10000,TimerProc);while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);;DispatchMessage(&msg);}}}DWORDProcessToPID(constchar*ProcessName,DWORDaPid[1024]){typedefBOOL(CALLBACK*EnumProcessesType)(DWORD*,DWORD,DWORD*);typedefBOOL(CALLBACK*EnumProcessModulesType)(HANDLE,HMODULE*,DWORD,LPDWORD);typedefDWORD(CALLBACK*GetModuleBaseNameType)(HANDLE,HMODULE,LPTSTR,DWORD);EnumProcessesTypeEnumProcesses;EnumProcessModulesTypeEnumProcessModules;GetModuleBaseNameTypeGetModuleBaseName;HMODULEhmPsapi=GetModuleHandle("psapi.dll");if(hmPsapi==NULL){if((hmPsapi=LoadLibrary("psapi.dll"))==NULL){return0;}}EnumProcesses=(EnumProcessesType)GetProcAddress(hmPsapi,"EnumProcesses");EnumProcessModules=(EnumProcessModulesType)GetProcAddress(hmPsapi,"EnumProcessModules");GetModuleBaseName=(GetModuleBaseNameType)GetProcAddress(hmPsapi,"GetModuleBaseNameA");if(!(EnumProcesses&&EnumProcessModules&&GetModuleBaseName)){FreeLibrary(hmPsapi);#ifdef_DEBUGprintf("GetProcAddress()error:%dn",GetLastError());#endifreturn0;}DWORDaProcesses[1024],cbNeeded,cProcesses;unsignedinti,j;HANDLEhProcess;HMODULEhMod;charszProcessName[MAX_PATH]="UnknownProcess";//计算目前有多少进程,aProcesses[]用来存放有效的进程PIDif(!EnumProcesses(aProcesses,sizeof(aProcesses),&cbNeeded)){#ifdef_DEBUGprintf("EnumProcesses()error:%dn",GetLastError());#endifFreeLibrary(hmPsapi);return0;}cProcesses=cbNeeded/sizeof(DWORD);//按有效的PID遍历所有的进程for(i=0,j=0;i<cProcesses;i++){//打开特定PID的进程hProcess=OpenProcess(PROCESS_QUERY_INFORMATION¦PROCESS_VM_READ,FALSE,aProcesses[i]);//取得特定PID的进程名if(hProcess){if(EnumProcessModules(hProcess,&hMod,sizeof(hMod),&cbNeeded)){GetModuleBaseName(hProcess,hMod,szProcessName,sizeof(szProcessName));//将取得的进程名与输入的进程名比较,如相同则返回进程PIDif(!stricmp(szProcessName,ProcessName)){CloseHandle(hProcess);//如果接收缓冲区有效,就依次填入pid,否则立即返回if(aPid!=NULL){aPid[j++]=aProcesses[i];}else{FreeLibrary(hmPsapi);returnaProcesses[i];}}}}}CloseHandle(hProcess);if(aPid!=NULL){FreeLibrary(hmPsapi);returnaPid[0];}FreeLibrary(hmPsapi);return0;}intAddPrivilege(constchar*Name){HANDLEhToken;TOKEN_PRIVILEGEStp;LUIDLuid;if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES¦TOKEN_QUERY,&hToken)){return1;}if(!LookupPrivilegeValue(NULL,Name,&Luid)){return1;}tp.PrivilegeCount=1;tp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;tp.Privileges[0].Luid=Luid;if(!AdjustTokenPrivileges(hToken,0,&tp,sizeof(TOKEN_PRIVILEGES),NULL,NULL)){return1;}return0;}程序要求:查看软件运行情况每1000毫秒查看一下软件运行情况如果没有启动运行这个dll文件就自动启动软件如果软件启动就再等1000毫秒查看循环ShellExecute(NULL,"open","http://www.126.com",NULL,NULL,SW_SHOW);这句好像也有问题打开望着那没出什么错误但是如果换成了软件就不能自动启动这个软件请高手帮忙现在这个dll实现了每隔10000毫秒就打开126网站需要实现的如上定时监视软件的运行情况希望高手帮忙#15....急`!!!~~急!!~~~急!!!!!!!!!!!!~~~~~~~~`

解决方案

解决方案二:
写病毒么?呵呵。友情支持下

时间: 2024-10-22 11:14:30

vs.net dll文件问题的相关文章

封装dll-C# 中如何将一个类文件 封装成.dll文件

问题描述 C# 中如何将一个类文件 封装成.dll文件 我现在在c#程序里面写了几个通用的类,里面包括数据库的操作,网页表单的基本验证以及自己平时总结的一些很好用的方法,我现在想把这些类或者某一个类封装成一个dll文件,最好是所有的类都封装成一个dll,想请问一下各位怎么做,以前没做过将类封装成dll,麻烦大家帮帮小弟,最好有代码,谢谢了! 解决方案 封装成dll不就是将它编译成dll吗? 在bin文件下就有编译的dll 解决方案二: 在VS中新建一个类库工程,把你的类文件导到新建的工程里,编译

java调用swt.jar包dll文件的加载问题?

问题描述 java调用swt.jar包dll文件的加载问题? 调用swt.jar时,报错 Exception in thread "AWT-EventQueue-2" java.lang.UnsatisfiedLinkError: no swt-win32-3347 or swt-win32 in swt.library.path, java.library.path or the jar file at org.eclipse.swt.internal.Library.loadLib

异常-c# 程序调用外部dll文件对采集模块进行读写,不定时出现以下错误

问题描述 c# 程序调用外部dll文件对采集模块进行读写,不定时出现以下错误 问题签名: 问题事件名称: BEX 应用程序名: NangGang11.20.vshost.exe 应用程序版本: 9.0.21022.8 应用程序时间戳: 47316898 故障模块名称: MSVCR80.dll 故障模块版本: 8.0.50727.6195 故障模块时间戳: 4dcddbf3 异常偏移: 00008aa0 异常代码: c000000d 异常数据: 00000000 解决方案 光给出一个异常信息,天知

JScript教程:使用JScript创建.exe或.dll文件

文章简介:JScript 是由微软开发的活动脚本语言,基于 ECMAScript 规范实现.Internet Explorer 中的 JavaScript,实际上是指 JScript.JScript 已被 Windows Script Host(WSH)支持.JScript 最新的版本(JScript.NET)基于尚未定稿的 ECMAScript 4.0 ,并且可以在.Net环境下编 什么是 JScript? JScript 是由微软开发的活动脚本语言,基于 ECMAScript 规范实现.In

使用ASP中的VB ActiveX.dll文件

active|activex 没有人会在没有必要的情况下采用更加麻烦的方法来工作,除非是没有选择的余地.所以如果我要告诉你有一种简单的技术可以使你的ASP开发更加快速,并且更加高效率,你一定对此特别感兴趣.这一方法将从你的ASP页中的绝大部分business logic转移到一个Visual Basic ActiveX .dll以达到提高整个网页的性能. 使用ActiveX .dll的原因 在Visual Basic中建立一个.dll文件实际上是一个ActiveX对象.这种对象可以采用微软的组件

让你的.NET程序兼容不同版本的Dll文件

程序 前段时间写的一个WinForm的.NET程序.因为引用了不少的库文件,但是最近这些库文件因为修正了一些Bug和算法.但是主的程序文件没有怎么改动.所以就不像把这个主程序重新编译了.于是就把所有的新版DLL文件拷贝到运行目录下,希望主程序能够直接调用新版的库文件.结果发现原来这些库文件都用Strong Name签了名的.主程序一调用就出错,说找不到该版本的文件. 后来查了一下MSDN,发现只要在config里面加入runtime节点就可以了. <runtime> <assemblyB

把aspx文件编译成DLL文件

编译 前言 Asp.net不是asp的简单升级,而是微软.Net计划中的一个重要组成部分,它依托.Net的多语言与强大的类库支持,引进了服务端HTML控件与WEB控件,自动处理控件的客户端与服务端的 交互,为开发人员提供了类似Windows下窗口编程的界面,为开发大型网络应用程序功能提供了良好的编程接口,也能够极大地提高开发人员的工作效率. 然而,"一次转换,两次编译"过程使得aspx文件在首次执行(或更新后首次运行)时显得略有不足,特别是在拥有大量aspx及codebehind的代码

[我的ASP.net学习历程]有关于.dll文件的迷惑

asp.net 刚在写程序的时候碰到了一个问题,原本只是想把所有.cs文件编译成.dll的.(因为从开发以来,都没尝试过所它编译,只是知道有这样的一回事.可能是公司没做要求吧!)(说白了,人懒!^o^). 好了,话回正题,一开始还真的不知道怎么个编译法,只知道csc这个命令.呵!当在开始->动行->cmd里打上个csc /?的时候,系统却提示什么什么错误!这就怪事了!于是再找,搜索C盘:csc.exe,终于找到了!^o^呵!OK,现在可以编译了!csc /target:library *.cs

安装Windows2000过程中的DLL文件问题

Windows2000正式版上市后,可能很多朋友和我一样都想拿来尝尝鲜.可是这个"瘟2000"毕竟是以NT为核心开发的,许多功能用起来并不方便,于是往往又同时保留一套"瘟酒吧".二者虽说是一母同胞,按说能够协同工作,可是如果你把它们放在同一分区内,就有可能出现这样那样奇怪的问题. 我的硬盘有四个分区,其中C区为FAT32 4G,专门用来放操作系统的,装了一套简体中文版的Windows98第二版,一套Windows 2000 professional简体中文版.二者一

如何删除DLL文件

问:最近看了篇文章,开始了自己动手为系统"减肥"的计划,但有些文件夹内本来什么文件都没有,但却删除不了,还有些后缀为.dll的文件也删除不掉,用写字板打开后发现并没有内容,但却删除不掉,请问这些文件和文件夹可以删除吗? 答:在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中.当我们执行某一个程序时,相应的DLL文件就会被调用.一个应用程序会有多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的DLL文