因为项目的需求,我也开始编写一些C、C++的程序,现在编写出来的程序问
题依然很多,只是达到了能运行的程度。
在Windows下用C++编程自然会用一些Windows的类库,如果想编写跨平台的
程序,那么就用标准的C++来实现。不过也需要不同的编译。
在Windows下编程类库比较多,难以一时间就掌握,我通常是用到哪个函数
就查帮助文档。我一般都是搜人家的代码再修改修改,很少自己编写代码。
编译时遇到说什么文件找不到啦,就保护某个库,这个也很简单的,在谷歌
上搜索一下就有了。
Windows上的驱动开发,首先配置开发环境,这个比较复杂,网上也有教程
。这里就不说明了,现在只明白一点就是程序的入口是DeriveEntry,编译
会生成一个.sys文件,有人说要配合INF文件一起使用,不过目前我还不知
道怎么弄。
Windows程序修改注册表
贴上代码吧。
#include <Windows.h>
#include <string.h>
#include <tchar.h>
int main(){
HKEY hKEY;
LPCTSTR data_Set=TEXT("SOFTWARE\\Microsoft\\Windows\
\CurrentVersion\\Explorer\\Advanced\\Folder\\Hidden\\SHOWALL\\");
long ret0=::RegOpenKeyEx
(HKEY_LOCAL_MACHINE,data_Set,0,KEY_READ|KEY_WRITE,&hKEY);
if(ret0!=ERROR_SUCCESS) // 如果无法打开hKEY,则终止程序
的执行
{
MessageBox(NULL,(LPCWSTR)L"错误:无法打开有关的hKEY!",
(LPCWSTR)L"错误",MB_ICONERROR);
return -1;
}
DWORD dwType = REG_DWORD;
DWORD newType = REG_DWORD;
DWORD s = 0;
//LPBYTE newvalue = CString_To_LPBYTE(s);
//DWORD length = s.GetLength() + 1;
//long ret1=::RegQueryValueEx(hKEY,
"DefName",NULL,&type_1,username_Get,&cbData_1);
long ret1=(::RegSetValueEx
(hKEY,L"CheckedValue",NULL,newType,(BYTE*)&s,4));
if(ret1!=ERROR_SUCCESS)
{
MessageBox(NULL,(LPCWSTR)L"错误:无法修改注册表信息!",
(LPCWSTR)L"错误",MB_ICONERROR);
return -1;
}
::RegCloseKey(hKEY);
return 0;
}
这个程序就是修改注册表的信息了,修改注册表这种事情,需要比较高的权
限,所以需要对程序的权限进行配置,只需要在VS2010中配置一下就可以了
,其他不需要做太多的操作,
用VS2010的编写出来的程序很可能在其他机器上用不了,因为其他机器没有
安装.net4 这个时候我们可以将程序做成安装包,将.net4一起打包成安装
程序,然后发布这样就行了