你好;我有一个窗口服务。我想通过批处理文件(.bat文件)启动我的Windows服务。我成功了。我的服务开始得很好。但4-5秒后自行停止。4-5秒后不工作。如果我查看WindowsServer2008上的事件日志,发生错误。我的错误如下。我怎么解决这个问题?Faultingapplicationname:MyProject.WindowsService.exe,version:1.0.0.0,timestamp:0x4ffec57cFaultingmodulename:clr.dll,version:4.0.30319.269,timestamp:0x4ee9ae83Exception
我正在对PE文件进行一些批量分析,在解析PE文件的导入表时,我发现许多PE文件为给定的DLL导入了重复的条目...这是为什么?这在功能上提供了什么?例如,example.exe导入表的转储显示:内核32.dllUser32.dll废话.dllKernel32.dllKernel32.dllUser32.dllshell32.dll提前致谢。 最佳答案 您所观察到的是正确且完全正常的!看看下面的图片,它显示了DependencyWalker正在分析ProcessExplorer的图像(静态)导入许多库。迟早一个库会导入一个已经被其他库
我能够使用rundll32.exe运行一个dll。现在我想将它作为Windows服务运行,但它似乎没有启动并且超时。我不确定如何传递参数。尝试一些类似..sc.execreateservicebinPath="c:\windows\system32\rundll32.exe-test.dll-Main"尝试来自的建议creatingaservicewithsc.exe;howtopassincontextparameters但它似乎不起作用。有什么建议吗?谢谢,卡尔提克 最佳答案 rundll32.exe不能充当服务!你需要像srv
我想知道如何在资源管理器进程启动后直接执行任务。我的目标是在登录Windows8后直接处理一些任务,因为注册表中的“运行”条目不会立即执行。 最佳答案 使用userinitregistrykey,它是第一个运行的进程。我稍后会谈到DLL部分。在Winlogon为用户获取token后(当该用户通过身份验证时),它会按照列出的顺序启动userinitkey列出的所有进程。但请注意:您的进程必须在几秒钟后退出,否则Windows会认为您的桌面创建有问题,并且会用默认桌面替换您的桌面。要进行测试,请将userinit注册表项更改为notep
我有一个用于合规性场景的DLL(其细节无关紧要)。重要的一点是主要可执行文件必须显示DLL版本号。我的解决方案是DLL有一个函数来返回它自己的版本-即从它自己的版本资源中获取它并将它作为字符串返回。我的评论者说主程序应该计算出DLL版本号。他甚至给了我一些代码来获取DLL模块句柄并使用它提取版本。我的问题是,哪个设计更好,为什么?我的感觉是,使用OO原则,我应该向DLL询问其版本号。换一种方式意味着主程序需要知道版本信息是如何存储的,因此与实现更紧密地耦合。请注意,我确切地知道如何从DLL中提取版本信息。我的问题是关于执行此操作的代码的最佳位置。 最佳答案
是否可以静态初始化CRITICAL_SECTION,如pthread_mutex_tmutex=PTHREAD_MUTEX_INITIALIZER?换句话说,是否可以在C语言中初始化库中的全局CRITICAL_SECTION而不必弄乱DllMain等? 最佳答案 是的,只需在DLL_PROCESS_ATTACH中初始化并在DLL_PROCESS_DETACH中删除CRITICAL_SECTIONg_cs={0};BOOLWINAPIDllMain(HINSTANCEhinstDLL,//handletoDLLmoduleDWORDf
我对链接提示很困惑。假设我有一个使用dll的应用程序,但我不想使用它,我想静态链接到一个库并避免对dll的依赖。可能吗? 最佳答案 如果您想要解决问题而不是一堆新问题,不可能不去尝试。(我已经设法使类似的东西工作了几次。一种变体使用MemoryModule并从内存加载,另一种变体使用启发式方法来查找跨段重定位并修复它们以重新分离代码和数据部分。两者都不像您可能会向对链接提示感到困惑的人推荐的东西)。 关于windows-是否可以将DLL转换为LIB文件以避免依赖?,我们在StackOve
当我遇到vault和vaultclidll时,我正在System32中的dll中跌跌撞撞。我假设这些库使用密码存储,我想知道是否有人有关于这些的更多信息。我试着搜索谷歌,但只能找到一堆“这是病毒吗”和“修复此错误”的网站。我假设这些是C/C++库,因为我尝试在C#项目中添加对它们的引用但没有成功。我想找出这些dll包含哪些方法,以及是否可以使用DllImport和extern从C#中引用它们。 最佳答案 Vaultcmd.exe(及其依赖项vaultcli.dll)是相当于CredentialManager的命令行在控制面板中(在W
我整个早上都在谷歌搜索,但我找不到我要找的东西。我正在为MFC修改的VisualStudio中创建常规DLL。也就是说在项目向导中,我选择了Win32Project->DLL->MFC我没有只是从向导的主列表中单击MFCDLL,这是所有在线教程都在描述的内容。我的问题很简单。在.cpp文件中,我只需要知道我是否应该实现我的方法(在.h文件中声明)_tmain函数。里面有一条评论说//TODO:codeyourapplicationsbehaviorhere但我不确定这是否是我的实现目标。作为引用,这里是.cpp文件://testmfcdllblah.cpp:Definestheexpo
我在Windows7上使用VisualStudio2010,用C++编写。在我的程序中,我有一个.dll,其中包含我在程序中经常使用的一堆函数。最近,我在更改.dll时遇到了很多麻烦。每当我更改我的DLL中定义的函数时,当程序构建和运行时,更改似乎没有生效。也就是说,我认为每次成功构建(或重建)我的解决方案时,我的DLL都没有正确更新。如果我尝试在.cpp文件中的任何函数中设置断点(代替DLL而对用户隐藏的函数),visualstudio会告诉我代码不会被执行并且断点不能在那里设置。但是,今天早些时候我可以在那里设置断点。此外,我的一个函数将“FrameReceived”打印到visu