vb.net注冊(cè)表指針 vbs注冊(cè)表

用最簡(jiǎn)單的代碼介紹一下指針在VB.net里面的用法?

例1:以下程序我們申請(qǐng)幾個(gè)指向不同類型的指針:

創(chuàng)新互聯(lián)是一家專業(yè)提供白銀區(qū)企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、成都做網(wǎng)站、H5建站、小程序制作等業(yè)務(wù)。10年已為白銀區(qū)眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。

’使用StructLayout(LayoutKind.Sequential)屬性告訴net編譯器:結(jié)構(gòu)的元素在內(nèi)存中按其出現(xiàn)的順序排列

StructLayout(LayoutKind.Sequential) _

Public Structure DEFUDT_Test

Public bytb As Byte

Public i32a As Int32

End Structure

Public Function fnGetIntptr1() As IntPtr

’取得一個(gè)4字節(jié)數(shù)組指針

Dim tabytTest(3) As Byte

’以下語(yǔ)句告訴net垃圾回收進(jìn)程不對(duì)tabytTest進(jìn)行處理,也就是說(shuō)tabytTest占用的內(nèi)存區(qū)域固定不變。

Dim thObject As GCHandle = GCHandle.Alloc(tabytTest, GCHandleType.Pinned)

Dim tpObject As IntPtr = thObject.AddrOfPinnedObject() ’取得指向字節(jié)數(shù)組的指針

’取得一個(gè)指向32位內(nèi)存數(shù)據(jù)的指針,

’由于使用gchandle取指針的方法只能對(duì)引用的對(duì)象有效,

’所以對(duì)如int32等值類型必須使用將其封裝成為一個(gè)對(duì)象的方法以變?yōu)橐妙愋?/p>

Dim ti32Test As Object = Convert.ToInt32(0)

’以下語(yǔ)句告訴net垃圾回收進(jìn)程不對(duì)ti32test進(jìn)行處理,也就是說(shuō)ti32Test的內(nèi)存位置固定不變。

Dim thObject1 As GCHandle = GCHandle.Alloc(ti32Test, GCHandleType.Pinned)

Dim tpObject1 As IntPtr = thObject1.AddrOfPinnedObject() ’取得ti32Test的首地址

Dim tudtTest1 As DEFUDT_Test

’由于結(jié)構(gòu)是一種值類型變量,為保證指針申請(qǐng)方便,我們申請(qǐng)

’取得一個(gè)和結(jié)構(gòu)tudtTest1大小一致的字節(jié)數(shù)組指針,只要空間占用長(zhǎng)度和結(jié)構(gòu)一樣就可以了

’由于net在結(jié)構(gòu)封裝中會(huì)插入額外的數(shù)據(jù)位,所以一定要用sizeof方法得到結(jié)構(gòu)在非托管使用時(shí)的實(shí)際大小

Dim tudtTest(Marshal.SizeOf(tudtTest1)) As Byte

Dim thObject2 As GCHandle = GCHandle.Alloc(tudtTest, GCHandleType.Pinned)

Dim tpObject2 As IntPtr = thObject2.AddrOfPinnedObject() ’取得指向結(jié)構(gòu)的指針

’在這兒你可以寫(xiě)對(duì)指針處理的任意代碼(在例2中會(huì)給予補(bǔ)充)……

’在使用完畢后一定要釋放指針指向的內(nèi)存塊,讓垃圾回收器可對(duì)這個(gè)內(nèi)存塊回收處理

If thObject.IsAllocated Then

thObject.Free()

End If

If thObject1.IsAllocated Then

thObject1.Free()

End If

If thObject2.IsAllocated Then

thObject2.Free()

End If

End Function

上例中指針流程處理可以歸納為:

1、 定義一個(gè)具有合適內(nèi)存長(zhǎng)度的引用變量(關(guān)于引用變量和值變量的差異可以參觀VB.NET的書(shū)籍)

2、使用GCHandle.Alloc方法將變量的內(nèi)存區(qū)域固定下來(lái)。

3、使用GCHandle對(duì)象的AddrOfPinnedObject取得該內(nèi)存區(qū)域的首地址并賦值給指針變量.

4、對(duì)指針進(jìn)行操作

5、使用GCHandle對(duì)象的free方法釋放指針指向的內(nèi)存區(qū)域以便net垃圾回收器可以回收這個(gè)內(nèi)存空間

2、指針?biāo)赶驍?shù)據(jù)的存取

在.net中,對(duì)指針指向數(shù)據(jù)的存儲(chǔ)函數(shù)都封裝在marshal類中,主要的函數(shù)包括:Copy、PtrToStringUni 、PtrToStructure 、OffsetOf、WriteXXX,RreadXXX等,其中WriteXXX的表示向指針?biāo)硎镜牡刂分袑?xiě)入XXX類型的數(shù)據(jù),而ReadXXX中作用就是將指針?biāo)诘刂返臄?shù)據(jù)以XXX類型方式讀出??蠢?,我們使用這些方法演示對(duì)例1那幾個(gè)指向不同類型數(shù)據(jù)的指針作數(shù)據(jù)存/取操作。

例2:演示向例1申請(qǐng)得到的幾個(gè)指針執(zhí)行寫(xiě)入及讀取數(shù)據(jù)的操作.

Marshal.WriteInt32(tpObject1, 0, Convert.ToInt32(77)) ’向ti32Test變量指向的地址寫(xiě)入32位整數(shù)77

MsgBox("現(xiàn)在ti32Test的值為:" ti32Test) ’因?yàn)樽兞看鎯?chǔ)地址的數(shù)據(jù)已改為77,所以顯示為77

’以下這句之所以可行,因?yàn)閠i32Test是32位整數(shù),而tpObject指向的tabytTest數(shù)組剛好有4個(gè)元素

’而每一個(gè)byte元素都占用8位,合起來(lái)就是32位,和ti32Test占用的空間一樣。這就印證了前面提’

’到的net中指針沒(méi)有指向類型的說(shuō)明。

Marshal.WriteInt32(tpObject, 0, ti32Test)

’以下代碼再將tabytTest字節(jié)數(shù)組的內(nèi)容理解為一個(gè)int32整數(shù),

’并將值賦值給tudtTest結(jié)構(gòu)中的int32元素

’我們使用Marshal.OffsetOf(GetType(DEFUDT_Test), "i32a").ToInt32以取得i32a元素在結(jié)構(gòu)中的內(nèi)存偏移位置

’所以New IntPtr(tpObject2.ToInt32 + Marshal.OffsetOf(GetType(DEFUDT_Test), "i32a").ToInt32)就臨時(shí)產(chǎn)生了

’一個(gè)指針并指向i32a所在的內(nèi)存地址(, 這個(gè)方法也說(shuō)明了指針可以以字節(jié)為單位進(jìn)行加減計(jì)算以指向合適的變量。

’Marshal.ReadInt32的作用是從指針中讀取一個(gè)32整數(shù)。

Marshal.WriteInt32(New IntPtr(tpObject2.ToInt32 + Marshal.OffsetOf(GetType(DEFUDT_Test), "i32a").ToInt32), _

0, Marshal.ReadInt32(tpObject))

’這兒可以將字節(jié)數(shù)組的內(nèi)容復(fù)制到真正的結(jié)構(gòu)中

MsgBox(Marshal.OffsetOf(tudtTest1.GetType, "i32a").ToInt32)

tudtTest1 = CType(Marshal.PtrToStructure(tpObject2, GetType(DEFUDT_Test)), DEFUDT_Test)

MsgBox("結(jié)構(gòu)tidtTest1中i32a元素的值為:" tudtTest1.i32a) ’此處將顯示剛賦的值77

VB.net2010 操作注冊(cè)表

的完整路徑寫(xiě)在HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

就可以自啟動(dòng)了。

以下是我前一段時(shí)間寫(xiě)的防u盤(pán)自動(dòng)運(yùn)行的程序,里面可以找到如何操作注冊(cè)表。

Option Explicit

Global Const REG_SZ As Long = 1

Global Const REG_DWORD As Long = 4

Global Const HKEY_CLASSES_ROOT = H80000000

Global Const HKEY_CURRENT_USER = H80000001

Global Const HKEY_LOCAL_MACHINE = H80000002

Global Const HKEY_USERS = H80000003

Global Const ERROR_NONE = 0

Global Const ERROR_BADDB = 1

Global Const ERROR_BADKEY = 2

Global Const ERROR_CANTOPEN = 3

Global Const ERROR_CANTREAD = 4

Global Const ERROR_CANTWRITE = 5

Global Const ERROR_OUTOFMEMORY = 6

Global Const ERROR_INVALID_PARAMETER = 7

Global Const ERROR_ACCESS_DENIED = 8

Global Const ERROR_INVALID_PARAMETERS = 87

Global Const ERROR_NO_MORE_ITEMS = 259

Global Const KEY_ALL_ACCESS = H3F

Global Const REG_OPTION_NON_VOLATILE = 0

Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hkey As Long) As Long

Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hkey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long

Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hkey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Long, lpcbData As Long) As Long

Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hkey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpValue As Long, ByVal cbData As Long) As Long

Private Sub cmdAbout_Click()

MsgBox "作者wolfccb不對(duì)本軟件可能造成的任何錯(cuò)誤或損失負(fù)責(zé),請(qǐng)自行承擔(dān)使用風(fēng)險(xiǎn)。", vbInformation, "About"

End Sub

Private Sub cmdDefault_Click()

Check0.Value = 1

Check1.Value = 0

Check2.Value = 1

Check3.Value = 0

Check4.Value = 1

Check5.Value = 0

Check6.Value = 0

End Sub

Private Sub cmdExit_Click()

Unload Me

End Sub

Private Sub cmdRecommend_Click()

Check0.Value = 1

Check1.Value = 1

Check2.Value = 1

Check3.Value = 1

Check4.Value = 1

Check5.Value = 0

Check6.Value = 1

End Sub

Private Sub cmdSet_Click()

Dim hkey As Long

Dim lvalue As Long

Dim cddata As Long

Dim retval As Long

lvalue = GetValue

retval = RegOpenKeyEx(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", 0, KEY_ALL_ACCESS, hkey)

retval = RegSetValueEx(hkey, "NoDriveTypeAutoRun", 0, REG_DWORD, lvalue, 4)

RegCloseKey hkey

If retval = 0 Then

MsgBox "設(shè)置已保存。", vbInformation, "提示"

Else

MsgBox "保存失敗,錯(cuò)誤代碼:" + CStr(retval), vbExclamation, "錯(cuò)誤"

End If

End Sub

Private Sub Form_Load()

Dim hkey As Long

Dim lvalue As Long

Dim cddata As Long

Dim retval As Long

retval = RegOpenKeyEx(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", 0, KEY_ALL_ACCESS, hkey)

If retval 0 Then

MsgBox "打開(kāi)注冊(cè)表失敗,錯(cuò)誤代碼:" + CStr(retval), vbExclamation, "錯(cuò)誤"

End If

retval = RegQueryValueEx(hkey, "NoDriveTypeAutoRun", 0, REG_DWORD, lvalue, 4)

RegCloseKey hkey

If retval 0 Then

MsgBox "讀取注冊(cè)表失敗,錯(cuò)誤代碼:" + CStr(retval), vbExclamation, "錯(cuò)誤"

End If

ShowCheck (lvalue)

End Sub

Private Sub ShowCheck(lvalue As Long)

Check0.Value = lvalue Mod 2

lvalue = (lvalue - Check0.Value) / 2

Check1.Value = lvalue Mod 2

lvalue = (lvalue - Check1.Value) / 2

Check2.Value = lvalue Mod 2

lvalue = (lvalue - Check2.Value) / 2

Check3.Value = lvalue Mod 2

lvalue = (lvalue - Check3.Value) / 2

Check4.Value = lvalue Mod 2

lvalue = (lvalue - Check4.Value) / 2

Check5.Value = lvalue Mod 2

lvalue = (lvalue - Check5.Value) / 2

Check6.Value = lvalue Mod 2

End Sub

Private Function GetValue() As Long

GetValue = Check0.Value + Check1.Value * 2 + Check2.Value * 4 + Check3.Value * 8 + Check4.Value * 16 + Check5.Value * 32 + Check6.Value * 64 + 128

End Function

以上。

餓的老狼

VB 注冊(cè)表 提高指針精確度

Dim RR As Object, MN As Integer, RegPath

Private Sub Check1_Click()

RegPath = "HKEY_CURRENT_USER\Control Panel\Mouse\"

If Check1.Value = 0 Then

Set RR = CreateObject("WScript.Shell")

RR.RegWrite RegPath "MouseSpeed", "0"

RR.RegWrite RegPath "MouseThreshold1", "0"

RR.RegWrite RegPath "MouseThreshold2", "0"

ElseIf Check1.Value = 1 Then

Set RR = CreateObject("WScript.Shell")

RR.RegWrite RegPath "MouseSpeed", "1"

RR.RegWrite RegPath "MouseThreshold1", "6"

RR.RegWrite RegPath "MouseThreshold2", "10"

End If

End Sub

設(shè)置這3個(gè)值就可以了 需要 注銷 或 重啟 才能生效

如何用VB.net 寫(xiě)注冊(cè)表

我來(lái)告訴大家什么是純綠軟件--(希望無(wú)知者不要再胡說(shuō)八道了)

有人說(shuō):

還有哪些所謂寫(xiě)綠色軟件的人是不懂windows編程,根本就寫(xiě)不出注冊(cè)的過(guò)程。所以自我安慰的叫綠色軟件。不知大家注意沒(méi)有綠色軟件是不可以在天加刪除中刪掉的。只要它運(yùn)行就會(huì)產(chǎn)生很多拉圾,而且是到處亂放,這就是為什么容易出問(wèn)題的原因所在。

我只能說(shuō),這樣說(shuō)話的人是個(gè)電腦肓。

或是根本不懂得綠色軟件的含義。

綠色軟件有如下嚴(yán)格特征:

1、不對(duì)注冊(cè)表進(jìn)行任何操作(或只進(jìn)行非常少的,一般朋友能理解的操作,典型的是開(kāi)機(jī)起動(dòng)。少數(shù)也進(jìn)行一些臨時(shí)操作,一般在程序結(jié)束前會(huì)自動(dòng)清除寫(xiě)入的信息)。

2、不對(duì)系統(tǒng)敏感區(qū)進(jìn)行操作,一般包括系統(tǒng)起動(dòng)區(qū)根目錄、安裝目錄(windows目錄)、程序目錄(Program Files)、帳戶專用目錄。

3、不向非自身所在目錄外的目錄進(jìn)行任何寫(xiě)操作。

4、因?yàn)槌绦蜻\(yùn)行本身不對(duì)除本身所在目錄外的任何文件產(chǎn)生任何影響,所以,根本不存在安裝和卸載問(wèn)題。

5、程序的刪除,只要把程序所在目錄和對(duì)應(yīng)的快捷方式刪了就可以了(如果你手工在桌面或其它位置設(shè)了快捷方式),只要這樣做了,程序就完全干凈地從你的電腦里刪去了,不留任何垃圾。

以上就是綠色軟件的特征。

對(duì)于編程人員來(lái)說(shuō),做一個(gè)綠色軟件不難,做一個(gè)非綠色軟件也不難,但是為什么那么多軟件不做成綠色的呢?下面作一些講解:

一、大型軟件公司的大型軟件為什么不做成綠色的:

1、大型軟件公司并非沒(méi)有能力做出綠色軟件,但它們的軟件涉及的方面過(guò)多,需要對(duì)系統(tǒng)原有的一些設(shè)置進(jìn)行改動(dòng),以使電腦按照軟件設(shè)計(jì)要求進(jìn)行操作。以PhotoShop為例,它就需要在注冊(cè)表里添加很多種格式文件的默認(rèn)打開(kāi)方法為PhtoShop.exe,以便大家雙擊此類文件后就自動(dòng)打開(kāi)PhotoShop以便編輯。

2、為了更好的為一些對(duì)電腦知識(shí)不是很了解的朋友進(jìn)行一些自動(dòng)設(shè)定。還是以PhotoShop為例,這兒已經(jīng)有朋友發(fā)布了解壓即可用的,但是,還是不少的朋友,連解壓也不會(huì),解壓后都不知道點(diǎn)哪個(gè)文件開(kāi)始正常運(yùn)行,也不知道怎么在桌面上建快捷方式。就算別人為他做完了上面的事,要是有一天,他不想要PhotoShop了,也不知道原來(lái)安裝的程序在哪個(gè)目錄,怎么刪去,甚至不知道如何刪除快捷方式,更別說(shuō)如何完全干凈的刪除了。做成安裝版就可以自動(dòng)為使用者完成上面的事了。

(特別說(shuō)明:上面對(duì)PhotoShop的舉例,只是用它來(lái)舉例罷了,其實(shí)網(wǎng)上流行的解壓即可用的PhotoShop也不是嚴(yán)格的綠色軟件,其運(yùn)行還是會(huì)寫(xiě)注冊(cè)表的,如果不正常的使用它,注冊(cè)表里還是會(huì)留下垃圾的,不過(guò),這種垃圾對(duì)你的電腦影響不是很大,會(huì)的朋友可以手動(dòng)刪除這些垃圾)

二、做成安裝軟件很難嗎?那些所謂寫(xiě)綠色軟件的人是不懂windows編程,根本就寫(xiě)不出注冊(cè)的過(guò)程嗎。

1、我只能說(shuō),某些人的這種說(shuō)法是一種非常不負(fù)責(zé)任的說(shuō)法。其人根本不懂得編程,可笑而幼稚,只能以電腦肓來(lái)稱呼。

2、現(xiàn)在流行的各種編程軟件分三大類:

A、第一類是微軟出的編程軟件。

有Visual Studio系列(流行版本為6.0)以及新出不是很久的VS.NET系列,它們都自帶了安裝發(fā)布功能。特別是Visual Studio中的VB做出的東西,如果不發(fā)布,或不進(jìn)行相關(guān)的處理,在別的沒(méi)有安裝VB的機(jī)器上是根本運(yùn)行不起來(lái)的,因?yàn)閂B編譯出來(lái)的程序在根本上是偽編譯,其指令通過(guò)VB運(yùn)行庫(kù)轉(zhuǎn)譯后運(yùn)行,沒(méi)有VB運(yùn)行庫(kù)的機(jī)器是根本無(wú)法正常運(yùn)行此類程序的。當(dāng)然了,有經(jīng)驗(yàn)的朋友可以手工把運(yùn)行庫(kù)復(fù)制入相應(yīng)的目錄中,或是和VB做出的程序放在一起。其它的Visual Studio做出的程序有的有類似的上述情況。

在微軟出品的VS.NET中,VS.NET兼容了多種編程語(yǔ)言,但按其說(shuō)法,最終的代碼其根本實(shí)質(zhì)會(huì)變成一致。但是它做出的也同樣是偽代碼,也就是說(shuō),其代碼不是根本上的機(jī)器二進(jìn)制代碼,不對(duì)機(jī)器進(jìn)行直接指令指示,而是向.NET運(yùn)行環(huán)境(NET Framework接口)發(fā)出指令,而由NET Framework轉(zhuǎn)譯指令為機(jī)器代碼,再進(jìn)行持行。這就要求你的機(jī)器上安裝了NET Framework。NET Framework在win95/win98/windows2000上默認(rèn)是沒(méi)有安裝的,如要安裝,需要從網(wǎng)上下載或其它方式得到后安裝。(微軟官方有下載,大家也可以使用windows updata得到)。XP、windows 2003已集成。最后要說(shuō)的是,微軟宣言,要將原來(lái)的API接口(windows一直使用的標(biāo)準(zhǔn)編程接口)作廢,改用.NET接口,故.NET編程方式可能是將來(lái)的標(biāo)準(zhǔn)方式。VS.NET系列的軟件也集成了通用安裝發(fā)布軟件,只要正確掌握它,就能很好的做出樓主所謂的安裝程序。

B、第二類軟件是大名鼎鼎的Borland公司出品的編程軟件,它也包括兩大系列。即API系列和.NET系列。其.Net系列的情況和VS.NET是類似的。而其API的情況就有些不同了。

Borland的Borland C++Builder和Borland Delphi是兩種非常流行的針對(duì)win進(jìn)行API編程的編程環(huán)境。他們也帶有install shield,可以說(shuō)是編程人員必學(xué)的。不過(guò),很多的稍簡(jiǎn)單的程序,編制者并不用它,因?yàn)?,使用Borland C++Builder/Delphi開(kāi)發(fā)出來(lái)的程序,只要正確設(shè)定幾個(gè)參數(shù),編譯后得出的程序就可以在幾乎所有版本的win中很好的直接運(yùn)行了,當(dāng)前,前提是,沒(méi)有使用有特殊要求的第三方控件,或某些必要特別設(shè)定的數(shù)據(jù)源(BDE等)。而且,稍熟練的編制者可以直接在程序中通過(guò)程序自行進(jìn)行一些簡(jiǎn)單的環(huán)境設(shè)定,如寫(xiě)注冊(cè)表(關(guān)聯(lián)文件、開(kāi)機(jī)起動(dòng))、利用資源文件的方式向重要的目錄寫(xiě)入文件,注冊(cè)組件等等,可以說(shuō)一點(diǎn)兒也不難。

C、第三類是一些比較偏的編程語(yǔ)言了,如易語(yǔ)言等,使用的人很少,本人很老實(shí)的說(shuō),具體情況我也不是很了解。

三、為什么一些個(gè)人的簡(jiǎn)單的軟件會(huì)做成非綠色的:

1、編寫(xiě)者水平太低。低到只會(huì)使用微軟的VB等,雖然做出的東西也值得一用,但是不知道怎么把它變成綠色的,只能依*VB等本身的功能以保證程序的正常運(yùn)行。

2、編寫(xiě)者懶,寫(xiě)出程序后想,只要程序能正常讓別人用就可以了,不值得太費(fèi)腦子,依*VB等本身的功能發(fā)布吧,反正這樣保險(xiǎn)。

3、編寫(xiě)者水平不低,也不懶,但是它的程序用到了一些第三方控件,這些控件需要發(fā)布安裝才能正常運(yùn)行(需要注冊(cè)特定的.DLL,需要把一些文件放到特定的位置,如典型的,要放入windows下的system32目錄中。)

4、編寫(xiě)者為一些水平實(shí)在太低的人考慮,為了那些人的方便,如典型的《笨笨鐘》就是此類,《FoxMail》、《winamp》也是此類,當(dāng)然,F(xiàn)oxMail、《winamp》是寫(xiě)注冊(cè)表的,通過(guò)其主程序進(jìn)行一些環(huán)境的設(shè)定,嚴(yán)格上來(lái)說(shuō),也不是純綠的。

5、編寫(xiě)者有一些特定的,不想為人知的東西要放入你的機(jī)器。比如典型的《阿達(dá)連連看》就是這樣,它要把一些特定的與注冊(cè)相關(guān)的東西放入你的windows目錄,而且不想被人發(fā)現(xiàn)。又如網(wǎng)際快車的某些版本,它要把廣告程序代碼放入你的windows安裝目錄。

6、編寫(xiě)者有惡意,它的程序其實(shí)捆綁了木馬、病毒等(對(duì)這一類的就要非常小心了),在安裝的過(guò)程中這些惡意的程序就會(huì)釋放出在,不知不覺(jué)中潛入你的計(jì)算機(jī)。

四、是否可以做出功能復(fù)雜,但又是嚴(yán)格意義上的純綠軟件:

答案是非??隙ǖ?,因?yàn)?,其?shí)我們正在使用的很多程序都是純綠的,特別是很多的游戲,雖然它們也要安裝后才能運(yùn)行,其實(shí),你把它們安裝后的目錄放在別的機(jī)器上也一樣的可以使用,并不必再次安裝,其安裝的意義就是***編寫(xiě)者為一些水平實(shí)在太低的人考慮***,如《三角洲》、《魔獸爭(zhēng)霸III》。特別如網(wǎng)絡(luò)游戲《傳奇》(這個(gè)程序?qū)懙氖钦娴暮芙?jīng)典了,決對(duì)純綠)等等著名的游戲都是如此。其需要設(shè)定的環(huán)境記錄可以不寫(xiě)在注冊(cè)表內(nèi),而利用*.INI文件來(lái)記錄。我不知道有幾個(gè)人有膽子說(shuō)編寫(xiě)這些程序的人水平低下。

五、綜上所述:

1、要做出一個(gè)純綠色的軟件,并不是很難,當(dāng)然,可能要求編制者更多的依*自已去寫(xiě)代碼(在必要情況下),在程序涉及方面比較多的情況下,可能給編制者加重很多的工作量。而要做一個(gè)非純綠的軟件,那就更容易了,往往可以利用編寫(xiě)器的一些自帶功能自動(dòng)完成。

2、純綠的不帶安裝功能的軟件非常適合于對(duì)電腦比較熟悉的朋友使用,而綠色帶安裝的軟件適合于所有人使用。而自以為對(duì)電腦很熟的朋友往往更喜歡不帶安裝功能就可以用的。原因有如下:帶安裝的軟件往往會(huì)有反安裝程序,如果安裝目錄被人為刪去,反安裝程序或一些相關(guān)注冊(cè)表信息往會(huì)留在機(jī)器中,成為垃圾。

3、為了自已的機(jī)器的安全、快速,也為了知情權(quán)(一個(gè)程序到底在安裝和使用過(guò)程中在自已的機(jī)器里寫(xiě)了什么),本人極力推薦純綠的軟件。即便在必要的情況下非純綠,也希望有詳細(xì)的說(shuō)明。說(shuō)明軟件可能會(huì)寫(xiě)注冊(cè)表的那些部分,會(huì)改動(dòng)機(jī)器里的哪些文件,會(huì)向哪些目錄寫(xiě)入什么文件,內(nèi)容。而且,希望這成為軟件界的一個(gè)標(biāo)準(zhǔn)。這樣,我們的電腦才會(huì)有安全可言!

4、為什么現(xiàn)在流行的軟件中真正純綠的軟件不是很多呢?這個(gè)問(wèn)題很不好回答。在這兒可以非常遺憾的告訴大家,有些朋友在網(wǎng)上下載的winrar綠色版、winamp綠色版等等,都不是真正意義上的純綠軟件。

比如winrar,它就因?yàn)闉榱嗽谑髽?biāo)右鍵上出winrar的功能菜單而寫(xiě)動(dòng)了注冊(cè)表,因?yàn)橐P(guān)聯(lián)比如擴(kuò)展名為.rar等等的文件(這些都可以在winrar程序里設(shè)定和更改)而寫(xiě)動(dòng)了注冊(cè)表。如果使用winrar后,強(qiáng)行把winrar程序目錄刪去,注冊(cè)表里的這一部分注冊(cè)表信息必然成為垃圾(其它的也許有本人沒(méi)有發(fā)現(xiàn)的動(dòng)作,如沒(méi)有說(shuō)出來(lái)是本人水平不足的問(wèn)題了,呵呵)。

winamp綠色版似乎要好一些(本人的感覺(jué)),如果你設(shè)定了一些文件的關(guān)聯(lián),如雙擊*.mp3等文件winamp就會(huì)自動(dòng)打開(kāi)播放的話,你強(qiáng)行刪去winamp所在目錄,這部分文件的關(guān)聯(lián)信息也會(huì)成為垃圾留在注冊(cè)表中。

(上面兩個(gè)只是舉例,解決辦法很多對(duì)電腦熟悉的朋友是會(huì)的,在這兒,我們并不討解決辦法,另外,應(yīng)該說(shuō),上面兩程序是很規(guī)范的東西,它們的這些動(dòng)作是無(wú)可厚非的)

現(xiàn)在再回過(guò)頭來(lái)說(shuō)說(shuō)“流行的軟件中真正純綠的軟件不是很多”。

A、有些功能是非通過(guò)寫(xiě)注冊(cè)表來(lái)實(shí)現(xiàn)不可,最最常見(jiàn)的就是文件關(guān)聯(lián)、鼠標(biāo)右鍵菜單。(呵呵,這種操作可以說(shuō),稍熟編程的人都會(huì))。但是很少有個(gè)人編寫(xiě)者考慮到別人不用他的程序時(shí),要怎么讓使用者方便地復(fù)位這些文件關(guān)聯(lián),方便地清理右鍵菜單。

B、部分程序編寫(xiě)者喜歡把注冊(cè)信息放在注冊(cè)表中。(為什么喜歡?就因?yàn)樽?cè)表是龐大的參數(shù)庫(kù),他們以為,要從這樣一個(gè)大參數(shù)庫(kù)找出他們寫(xiě)入的一個(gè)信息是大海撈針。事實(shí)上,的確很多朋友是難以找出來(lái)的,話又說(shuō)回來(lái),會(huì)者不難,難者不會(huì),在這兒我也不細(xì)說(shuō)了)

C、一些大公司的程序?qū)嵲趯?duì)系統(tǒng)有太多的改動(dòng),他們做好了安裝和卸載工具,這些軟件涉及了系統(tǒng)的方方面面,想簡(jiǎn)單的刪除是很難的。典型的就如微軟的Office等等。這些軟件說(shuō)實(shí)在的,別說(shuō)你不老實(shí)的刪除了,就是老實(shí)的卸載,有時(shí)也是很難成功的。最好的辦法就是裝上后就別卸把,把它看成是系統(tǒng)的一部分(不管你樂(lè)不樂(lè)意,呵呵)。(又及,這類程序也不是很少,這兒只舉一例)。

D、只有那些其功能可以不涉及更改系統(tǒng)默認(rèn)行為的軟件才可能在真正意義上做到純綠。((也許我羅嗦了)系統(tǒng)默認(rèn)行為包括“文件關(guān)聯(lián)”,“右鍵菜單”,“控制面版”里的項(xiàng)目,真實(shí)或虛擬的硬件驅(qū)動(dòng)以及其它我想不起來(lái)或是我也不知道的東西……)。當(dāng)然了,還要編寫(xiě)者有真正的為使用者著想的精神,有較好的技術(shù)。

六、有部分并非純綠的軟件,偽裝成純綠的,在運(yùn)行過(guò)程中向注冊(cè)表寫(xiě)東西,向關(guān)鍵目錄區(qū)寫(xiě)東西,甚至更改重要文件。這不是純綠軟件,只能說(shuō)是偽純綠。又及,很多網(wǎng)上流行的軟件,號(hào)稱純綠版,實(shí)際上只是一些原版本經(jīng)過(guò)稍許改進(jìn)等,原軟件并不設(shè)計(jì)為純綠,在運(yùn)行過(guò)程中還是會(huì)寫(xiě)注冊(cè)表(甚至寫(xiě)關(guān)鍵win目錄),也不是嚴(yán)格意義上的純綠。反過(guò)來(lái),也有部分其實(shí)是純綠的軟件,為了大家的方便,做成了安裝發(fā)布式的。比如最典型的就是《傳奇》《三角洲》、《魔獸爭(zhēng)霸III》等一些游戲,一些工作軟件如《FOXMAIL》(FoxMail至少在針對(duì)IE選項(xiàng)里的“程序”頁(yè)里的"電子郵件"相關(guān)項(xiàng)進(jìn)行了注冊(cè)表相關(guān)寫(xiě)操作)《winamp》《winrar》等等準(zhǔn)綠軟件(在這兒,我只說(shuō)它們是準(zhǔn)綠的)也是如此。這類軟件其實(shí)安裝出來(lái)后,把其目錄放在任何一臺(tái)電腦上都能或者能較為正常的運(yùn)行,這也是為什么大家能很方便的把它們改造成綠色軟件的原因?,F(xiàn)在真正的純綠軟件實(shí)際上是很少的,至于以后,也還是看不到純綠一統(tǒng)天下的希望的,大家不可因噎廢食。不可能只用純綠軟件而不用其它。而且大公司的軟件一般還是非???的。

七、非純綠軟件的危害:

1、向系統(tǒng)關(guān)鍵目錄或不屬于該程序所在目錄亂存放文件(默認(rèn)臨時(shí)文件夾除外)在原則上對(duì)機(jī)器的運(yùn)行速度是沒(méi)有大的影響的,除非亂放的文件改動(dòng)了原有的系統(tǒng)關(guān)鍵文件,才會(huì)至使電腦變慢或運(yùn)行不正常。但是,因?yàn)檫@些目錄中的文件一般都比較多,很難對(duì)它們進(jìn)行清理(鬼才知道哪個(gè)是能刪,那個(gè)不能刪),會(huì)使你的硬盤(pán)空間浪費(fèi),對(duì)于硬盤(pán)空間緊的朋友,那就非常討厭了(此外,心里也不爽)。

2、向注冊(cè)表亂寫(xiě)信息,如果亂寫(xiě)的信息并不影響系統(tǒng)的關(guān)鍵部分,對(duì)系統(tǒng)運(yùn)行也是沒(méi)有嚴(yán)重影響的,不過(guò),有些信息寫(xiě)入了不刪去,你的系統(tǒng)就會(huì)有些討厭的東西出來(lái),舉例:你裝上winrar后(典型安裝設(shè)置),直接把winrar刪了,你就會(huì)發(fā)現(xiàn),你的右鍵菜單里會(huì)多出一些讓人哭笑不得的東西。要注意的是,隨著機(jī)器的使用,軟件的安裝、刪除,這些可以感覺(jué)到和不能感覺(jué)到的信息會(huì)越來(lái)越多,而你的機(jī)器在運(yùn)行過(guò)程中,幾乎隨時(shí)隨刻不能離開(kāi)對(duì)注冊(cè)表的相關(guān)操作,注冊(cè)表里的信息過(guò)多,機(jī)器查找所需信息的速度就會(huì)變慢,這時(shí),機(jī)器的運(yùn)行就表現(xiàn)為“變慢了”,這往往是一臺(tái)電腦為什么越用越慢的最重要的原因之一。(提示:因?yàn)槎鄶?shù)情況下,一個(gè)軟件對(duì)注冊(cè)表寫(xiě)的東西并不多,所以,在每一次垃圾進(jìn)去了,用戶是很難感覺(jué)到影響的)(又及,一些注冊(cè)表清理軟件,本人也用過(guò),雖有作用,但是風(fēng)險(xiǎn)不少,是好是壞我也不知怎么評(píng)價(jià)……)。這些垃圾信息并非只有小公司的軟件會(huì)留下,很多大公司的軟件據(jù)本人的感覺(jué),也是會(huì)留垃圾的,本人也很無(wú)耐。

解決辦法嗎?恕本人無(wú)能,在當(dāng)今軟件亂世,只怕多少有些無(wú)可耐何。本人是使用最笨的方法:Ghost鏡像還原?;旧厦咳了膫€(gè)月給它倒回一次。(工作文檔等當(dāng)然不能放在系統(tǒng)區(qū)了,呵呵)。

八、希望無(wú)知者不要信口開(kāi)河,多多學(xué)習(xí)。最后,附上一個(gè)我自已做的純綠軟件---BCB編寫(xiě)的《水波特效演示》程序,給大家玩玩叭。

補(bǔ)充——初步判斷一個(gè)軟件是否純綠軟件的方法(注,只有對(duì)電腦比較熟悉的人能才辦到,如果下面的說(shuō)明,你基本能看懂,而無(wú)需請(qǐng)教別人,你就能做到了):

一、系統(tǒng)測(cè)試法:

1、將軟件在別人的機(jī)器上安裝,安裝完成后,把安裝出來(lái)的目錄復(fù)制到你的機(jī)器中(如果本身就號(hào)稱純綠免裝的,這步就免了)。

2、你的機(jī)器要求安裝windows2000 或 windows XP 或 windows2003,使用受限用戶登錄(要求受限用戶無(wú)對(duì)關(guān)鍵注冊(cè)表有寫(xiě)權(quán),無(wú)對(duì)重要目錄有寫(xiě)權(quán),當(dāng)然了,默認(rèn)的新建的用戶就是這樣的(XP下要將用戶設(shè)為受限))。

3、受限用戶登錄后運(yùn)行復(fù)制來(lái)的安裝目錄下的軟件的主程序,如果正常,90%是純綠。

4、對(duì)省下10%的說(shuō)明——不排除可能編寫(xiě)者隱了動(dòng)作,如果不成功也不報(bào)錯(cuò),也不退出,還正常運(yùn)行,一但能寫(xiě)的時(shí)就它就寫(xiě)。另外,還有一部分程序,如FoxMail,只對(duì)當(dāng)前帳戶相關(guān)于注冊(cè)表進(jìn)行寫(xiě)操作,因?yàn)椤皫粝嚓P(guān)于注冊(cè)表"是"屬于"對(duì)應(yīng)帳戶的,在受限帳號(hào)下也是可寫(xiě)的(特別說(shuō)明一下,注銷該帳戶,注冊(cè)表中該帳戶的所有項(xiàng)目都會(huì)清去,所以也可以算是綠的)。

二、軟件監(jiān)控法:

1、如果上面的步子還不令你放心,還有一個(gè)工具值得一用,那就是《Filemon》,這是一個(gè)可以監(jiān)視系統(tǒng)中任何軟件對(duì)硬盤(pán)的讀寫(xiě)操作的程序,通過(guò)它,你可以查到某個(gè)程序?qū)δ愕挠脖P(pán)的什么位置的什么文件進(jìn)行了操作,這個(gè)程序只能在管理員帳戶下用(切入系統(tǒng)進(jìn)程)。

2、對(duì)于注冊(cè)表的監(jiān)視是很麻煩的事,《Regmon》可以辦到,同上面的工具一樣Regmon要求在管理員帳戶下用(切入系統(tǒng)進(jìn)程)。

3、90%的軟件和上面的兩個(gè)軟件無(wú)沖突,省下的9%的是作者有意防止被監(jiān)視(為什么有意防止被監(jiān),那你就自個(gè)想吧,一般都是比較可怕的東西),最后1%可能是因?yàn)槌绦驅(qū)嵲谙嗷ゲ患嫒萘恕?/p>

以上兩工具都為同一公司(Sysinternals)出品,值得一用,附在最后(XTJS.rar)。

三、并非所有的不能在受限帳戶下用的程序都不是純綠的。某些程序可能要切入別的系統(tǒng)程序中,某些程序需要得到硬件信息等,這些最只有在管理員帳戶下才能實(shí)現(xiàn)。還有一些程序可能沒(méi)有考慮多用戶操作系統(tǒng)等。只能說(shuō),通過(guò)了上面的測(cè)試的程序90%是純綠的,沒(méi)有通過(guò)的話90%是非純綠的。有經(jīng)驗(yàn)的朋友還可以據(jù)自已的經(jīng)驗(yàn)得到更準(zhǔn)確的結(jié)論。參考資料:以上資料,從網(wǎng)上下載的,與本人無(wú)關(guān)

當(dāng)前標(biāo)題:vb.net注冊(cè)表指針 vbs注冊(cè)表
當(dāng)前網(wǎng)址:http://muchs.cn/article12/docdodc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、外貿(mào)建站、面包屑導(dǎo)航、虛擬主機(jī)網(wǎng)站維護(hù)、軟件開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)