因為項目的需求,我也開始編寫一些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一起打包成安裝
程序,然后發布這樣就行了