草庐IT

c++ - 如何防止应用程序被执行?

我需要阻止应用程序在Windows机器上启动。最明显的方式(具有无限循环并使用EnumProcesses/OpenProcess/TerminateProcess)暗示目标应用程序/进程已经启动并且运行了一段时间。遗憾的是,重命名/编辑/修补/删除目标应用程序不是一种选择。 最佳答案 如果您运行的是Windows7或更高版本(或基于它的任何系统),那么您可以使用AppLocker功能:http://technet.microsoft.com/en-us/library/dd723686(v=ws.10).aspx

c++ - 是否有任何好的工具/框架来分析 C/C++ 应用程序的性能

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我是C/C++的新手,面临着我的程序运行速度非常慢的性能问题。我想找到减少代码整体执行时间的热点。在Windows中分析C/C++应用程序的最流行和最简单的方法是什么?使用MiniProler分析.NET应用程序是多么容易,这让我感到非常惊讶。.我们是否有任何类似的C/C++库,以最少的添加代码为我们提供高质量和可靠的结果?或者是否有任何类似于RedGat

c++ - 为什么在 C++ 方法中使用系统 ("some.exe") 不像命令行那样工作?

我正在为Windows编写程序,最终必须启动位于同一台计算机上的不同的预先存在的.exe。它将多个参数传递给此.exe文件。我正在阅读实际的命令和参数并构建命令,但我也尝试用相同的结果对其进行硬编码。这是硬编码版本(我从使用same.exe的旧C程序中挑选出来的):system("c://IQapture//dmon2_6_IHD-p2c://IQapture//mon_table_101_Tx8.txt1100");因此在int_cdeclmain(intargc,char**argv)中的原始程序中,系统的这种使用有效。在我的C++程序中的C++类方法中,当我发出命令时,正确的程序

C++ 设置动态创建数组的值失败

一些简单的代码似乎不起作用,我不确定为什么。我正在动态创建一个整数数组。该数组的大小显示为15,但这只是因为我正在尝试调试程序。实际大小在运行时是可变的。我浏览了几个网站,了解如何在C++中动态创建整数数组。像thisone这样的网站上来了。他们的代码看起来像我的代码:一个数组被创建,一个for循环设置数组中每个元素的值。但是在我的for循环运行后,我得到一个大小为0的数组。可能是什么问题?这是一个非常基本的C++程序,使用VisualStudio在Windows上编译。 最佳答案 指针与数组不同,调试器只会显示第一个元素的内容及其

c++ - 在 C++ 中将 UTF8 字符串转换为 UTF16 字符串

我正在使用VC6.0。我的项目是用Unicode编译的。我正在使用zlib1.1.3来扩充包含我的UTF-8字符串的文件。我以ASCII格式获取它,但我保证它全部是英文的,因此我可以将其作为UTF8字符串关联(可以吗?)。我已经使用了Codeproject中建议的函数如下:WCHAR*SMUUTF8toUTF16(LPCSTRutf8,int*pLen){WCHAR*ptr=NULL;*pLen=MultiByteToWideChar(CP_UTF8,0,utf8,-1,NULL,0);if(*pLen>1){ptr=(WCHAR*)malloc(*pLen);if(ptr){Mult

c++ - 在 Windows 上使用 native C++ 在具有多个网络适配器的机器上进行 UDP 广播

我需要使用nativeC++代码在具有多个网络适配器的Windows机器上进行UDP广播(我认识到这应该是理想的多播)。目前,我在套接字上设置SO_BROADCAST套接字选项以允许广播,然后发送到INADDR_BROADCAST地址(255.255.255.255)。这在具有多个网络适配器的机器上不能可靠地工作。我一直在四处搜索,并在StackOverflow上发现了大量关于此的问题。据我所知,最好的方法似乎是找出每个网络适配器的广播IP,然后循环发送给每个网络适配器。因此,例如,如果我的机器有一个IP地址为10.0.0.x的网络适配器和另一个IP地址为192.168.1.x的网络适

c++ - 已加载 Dll 的完整路径?

我正试图在一台有几十个同名共享库的机器上调试一些共享库问题。我需要从10个同名文件中找到一个正常工作的.dll。当我们移动计算机时,程序似乎加载了错误的dll。在工作计算机上,我想弄清楚程序选择了哪个dll。我能够获得显示的dll的名称,但不是完整路径。有人知道如何显示完整路径吗? 最佳答案 您确实想要下载并运行DependencyWalker.在此程序中打开您的应用程序将显示其所有依赖项,显示它们的路径(您可以显示完整路径)并显示它找不到的那些DLL。如果您的某些DLL是动态加载的,只需使用配置文件选项即可实际执行应用程序。这将另

c++ - 对类方法的正确约定调用

我无法使用__thiscall给我以下错误:错误C4234:使用了非标准扩展:“__thiscall”关键字保留供将来使用我正在从一个dll中调用一个类函数:typedefvoid(*SETDIRPROC)(void*,D3DXVECTOR3&);voidZMyCharacter_SetDirection_Rev(void){if(pZMyCharacter==0){printf("cannotsetdirectionnow\n");return;}SETDIRPROCSetDir_Proc=(SETDIRPROC)0x004A2AF0;D3DXVECTOR3pos=D3DXVECTO

c++ - C 和 C++ 中 WINAPI 的区别

我正在从驱动程序读取数据。该驱动程序附带了有关如何基于该驱动程序开发应用程序的示例。这些例子是几年前写的。他们使用WINAPI和C。现在我将使用他们的一些头文件。它们定义了数据结构和各种其他内容。我尝试在C++中创建WINAPI并尝试链接到这些文件。但正如解释的here,inthelastanswer,我非常相信我的代码也有同样的问题。现在,我不能按照那里的建议去做。我的程序很长,我不能弄乱头文件。它们很复杂。我的选择是完全用C语言创建我的项目(我希望它能解决问题)。首先,我将文件.cppt0重命名为.c。(我什至不知道这两种编程语言之间的区别。到目前为止,它们的区别没有任何区别。)主

c++ - C 字符串和 std::string 之间的转换导致平台特定方式出现乱码

我今天正在处理一个特定于平台的错误,在这个错误中,在Windows机器上某个字符串会非常乱码,但在Mac上则不会。该错误与在std::string和constchar*之间进行显式和隐式转换的几行有关。基本上,我有一个带有签名的函数voidfoo(conststd::string&id);foo在某些时候打印字符串。在Windows上,如果像下面这样调用,它会打印带有不同程度损坏的id字符串(混淆前几个字符或整个字符串)std::stringmystring=bar();constchar*id=mystring.c_str();foo(id);//passtheCstylestrin