2009年10月21日 星期三

欄位驗證-Regular Expression的基本運算

Union運算以""表之,L和R的union寫成L R,表示可以是L或是R。
Concatenation運算以"."表之,L和R的concatenation寫成L.R,通常都省略L和R之間的".",而寫成LR,表示L之後要跟隨著R。
Closure(也稱做Kleene closure) 運算以"*"表之,L的closure寫成L*,表示字串L可以重複出現0次以上,即ε、L、LL、LLL、…,都是可以接受的字串,其中"ε"表示空字串;LL表示L和L的concatenation,也可以簡寫成L2;LLL表示三個L的concatenation,也可以簡寫成L3;而L0=ε,L1=L;其餘類推。

ASP.NET中的Regular Expressions


Closure運算都不用上標的寫法,全部都寫在同一行中,例如a3要寫成a{3}。
增加了一些運算符號: (例如)
\d表示一個0到9的數字
\D表示是0到9以外的一個字元
\w表示是一個英文字母或數字
\W表示是除了英文字母和數字以外的字元
由於(、)、[、]、{、}、|、…等符號都是ASP.NET中regular expression的運算符號,如果有些字串中確實有這些符號,但卻不是regular expression中的運算符號時,可在該符號之前加上反斜線"\"以玆區別。
例如電話號碼(02)12345678的regular expression寫法是\(02\)12345678。


ASP.NET中Regular expressions的運算符號(1/2)

符號 說明
* Closure運算,表示出現0次以上,例如:abc*表示ab後跟隨0個以上的c。
+ Positive closure運算,表示出現1次以上,例如:abc+表示ab後跟隨1個以上的c。
| Union運算,表示"|"左邊或右邊的regular expression皆可,例如:ab|cd表示ab或cd皆可。
() 和一般算式一樣,小括號內的regular expression先處理,例如:a(b|c)d表示abd或acd皆可。
[] 中括號內的任何一個字元,當字元之間重複使用"|"運算時,以"[]"取代較簡潔,例如:x(a|e|i|o|u)y也可以寫成x[aeiou]y較簡潔。
{} 表示有範圍的closure運算,例如:a{5}表示aaaaa等5個a;a{3,6}表示3個a到6個a皆可;a{3,} 表示3個以上的a皆可。
[-] 若中括號內是連續的字元,則可以用"-"表之,例如:[d-m] 表示d到m之間的任何一個字元。
[^] 非中括號內的任何一個字元,例如:a[^cde]f表示a和f之間的字元不可以是c、d或e。
\ 用來表示運算符號中的字元,例如:\(02\)表示輸入的字串為(02),因為小括號是運算符號,寫成regular expression (02)表示輸入的字串為02。

2009年8月28日 星期五

SQL Server 2005 資料表架構訊息查詢

SELECT
TableName=CASE WHEN C.column_id=1 THEN O.name ELSE N'' END,
TableDesc=ISNULL(CASE WHEN C.column_id=1 THEN PTB.[value] END,N''),
Column_id=C.column_id,
ColumnName=C.name,
PrimaryKey=ISNULL(IDX.PrimaryKey,N''),
-- [IDENTITY]=CASE WHEN C.is_identity=1 THEN N'√'ELSE N'' END,
[IDENTITY]=CASE
WHEN C.is_identity=1
THEN N'IDENTITY ( '
+RTRIM(IDENT_SEED(O.name))
+N' , '
+RTRIM(IDENT_INCR(O.name))
+N' )'
ELSE N'' END,
Computed=CASE WHEN C.is_computed=1 THEN N'√'ELSE N'' END,
Type=T.name,
Length=C.max_length,
Precision=C.precision,
Scale=C.scale,
NullAble=CASE WHEN C.is_nullable=1 THEN N'√'ELSE N'' END,
[Default]=ISNULL(D.definition,N''),
ColumnDesc=ISNULL(PFD.[value],N''),
IndexName=ISNULL(IDX.IndexName,N''),
IndexSort=ISNULL(IDX.Sort,N''),
Create_Date=O.Create_Date,
Modify_Date=O.Modify_date
FROM sys.columns C
INNER JOIN sys.objects O
ON C.[object_id]=O.[object_id]
AND O.type='U'
AND O.is_ms_shipped=0
INNER JOIN sys.types T
ON C.user_type_id=T.user_type_id
LEFT JOIN sys.default_constraints D
ON C.[object_id]=D.parent_object_id
AND C.column_id=D.parent_column_id
AND C.default_object_id=D.[object_id]
LEFT JOIN sys.extended_properties PFD
ON PFD.class=1
AND C.[object_id]=PFD.major_id
AND C.column_id=PFD.minor_id
-- AND PFD.name='Caption' -- 字段說明對應的描述名稱(一個字段可以添加多個不同name的描述)
LEFT JOIN sys.extended_properties PTB
ON PTB.class=1
AND PTB.minor_id=0
AND C.[object_id]=PTB.major_id
-- AND PFD.name='Caption' -- 表說明對應的描述名稱(一個表可以添加多個不同name的描述)
LEFT JOIN -- 索引及主鍵訊息
(
SELECT
IDXC.[object_id],
IDXC.column_id,
Sort=CASE INDEXKEY_PROPERTY(IDXC.[object_id],IDXC.index_id,IDXC.index_column_id,'IsDescending')
WHEN 1 THEN 'DESC' WHEN 0 THEN 'ASC' ELSE '' END,
PrimaryKey=CASE WHEN IDX.is_primary_key=1 THEN N'√'ELSE N'' END,
IndexName=IDX.Name
FROM sys.indexes IDX
INNER JOIN sys.index_columns IDXC
ON IDX.[object_id]=IDXC.[object_id]
AND IDX.index_id=IDXC.index_id
LEFT JOIN sys.key_constraints KC
ON IDX.[object_id]=KC.[parent_object_id]
AND IDX.index_id=KC.unique_index_id
INNER JOIN -- 對於一個列包含多個索引的情況,只顯示第1個索引訊息
(
SELECT [object_id], Column_id, index_id=MIN(index_id)
FROM sys.index_columns
GROUP BY [object_id], Column_id
) IDXCUQ
ON IDXC.[object_id]=IDXCUQ.[object_id]
AND IDXC.Column_id=IDXCUQ.Column_id
AND IDXC.index_id=IDXCUQ.index_id
) IDX
ON C.[object_id]=IDX.[object_id]
AND C.column_id=IDX.column_id
-- WHERE O.name=N'要查詢的表' -- 如果只查詢指定表,加上此條件
ORDER BY O.name,C.column_id

2009年8月5日 星期三

ASP.NET 2.0 筆記:加密組態檔

ASP.NET 2.0 筆記:加密組態檔

簡介

開發人員經常會在 web.config 中存放網站應用程式會用到的組態設定資料,例如:資料庫連線字串。其中有些可能是屬於比較機密的資料,需要使用加密的方式將這些資料加以保護,以免隨便就被別人看見。以往開發人員必須自己處理加密和解密的動作,現在 ASP.NET 2.0 提供了方便的加密和解密機制,讓我們可以很容易的將組態檔的某個區段 (section) 的內容加密。本文以一個簡單的實作範例來示範如何將 web.config 的內容加密,以及如何在程式中讀取加密過的組態設定。

準備工作

先在 Visual Studio 2005 中建立一個 Web Site,假設建立在 D:\Work\Demo\EncryptWebConfig。接著在 web.config 中加入 appSetting 設定,參考以下範例:










加密組態檔

加密的方法是利用 .NET Framework 提供的命令列工具:aspnet_regiis.exe。首先,開啟程式集 > Microsoft .NET Framework SDK v2.0 > SDK Command Prompt,接著輸入以下命令:
aspnet_regiis -pef appSettings D:\Work\Demo\EncryptWebConfig

aspnet_regiis 的 -pef 參數是用來加密某個絕對路徑下的 web.config 的某個 section,因此除了指定要加密的區段(此例為 appSettings),還要指定網站的絕對路徑 (此例為 D:\Work\Demo\EncryptWebConfig)。

如果加密成功,會出現以下訊息:

Encrypting configuration section...
Succeeded!

接著回到 Visual Studio 2005,檢視 web.config,原本的 元素的內容會變成類似下面這樣:


xmlns="http://www.w3.org/2001/04/xmlenc#">





Rsa Key


z90mHvF2ckJWcNn(略...)




IGp7RWwbBkY2M2Bz5izbs(略...)





這樣就完成加密的工作了。接下來看看如何在程式中讀取加密過的資料。

在程式中讀取加密過的組態

在程式中讀取加密過的組態設定資料,程式撰寫方式跟平常一樣。例如:
string s = ConfigurationManager.AppSettings["mySecret"];

我們完全不需要自行撰寫解密的程式碼,因為 .NET Framework 類別已經在背後幫我們自動處理掉解密的工作了。

解密組態檔

如果要將之前加密過的組態檔內容還原成加密之前的資料,可以使用 aspnet_regiis -pdf 命令,例如:
aspnet_regiis -pdf appSettings D:\Work\Demo\EncryptWebConfig

此外,你可以重複執行同一個加密或解密的命令。對一個加密過的區段再次加密,只會將原始資料重新加密,而不會將加密後的資料再重複加密一次;而對一個解密過的資料重複進行解密動作,也不會有任何影響。

aspnet_regiis 的其他加密參數

-pe 與 -pd 參數

在前面的簡單示範中,筆者使用的是 -pef 參數,此參數必須指定一個加密的區段名稱,以及要加密的網站的絕對路徑。你還可以使用 -pe 參數來加密組態檔,使用此參數時,通常會搭配 -app 參數來指定虛擬目錄的名稱,例如:

aspnet_regiis -pe appSettings -app /MyWeb

如果 -app 之後所指定的虛擬目錄是 '/',則會加密 IIS 網站的根目錄底下的 web.config。如果你沒有指定 -app 參數,那就會加密 .NET Framework 安裝目錄下的 CONFIG\web.config。

與 -pe 參數對應的解密參數就是 -pd,用法與 -pe 參數相同。

-prov 參數

在前面的範例當中,加密後的 appSettings 元素有一個 configProtectionProvider 屬性:


這個屬性的用途是指定加密的提供者,從它的屬性值可以看出,這個提供者所使用的加密演算法是 RSA。你也可以使用 -prov 參數來指定使用其他的提供者,例如 DPAPI (Data Protection Application Programming Interface) ,參考以下範例:
aspnet_regiis -pef appSettings D:\Work\Demo\EncryptWebConfig -prov DataProtectionConfigurationProvider

使用 DPAPI 加密後的組態檔內容如下:





AQAAANCMnd8BF(略...)







若沒有指定 -prov 參數,預設就會使用 RSA 進行加密。

結語

本文簡單介紹了 ASP.NET 2.0 加密 web.config 的方法,以往開發人員必須自行撰寫加密解密的程式碼,現在只要使用 aspnet_regiis 這個命令列工具,執行一行命令就完成加密動作了。更棒的是,在程式中讀取加密過的資料完全不需要撰寫額外的程式碼,這些解密的過程都由 .NET Framework 類別幫我們在背後處理掉了。
另外,本文也提到了 RSA 和 DPAPI 兩種加密方式。根據 MSDN 文件的說明,如果你的網站會部署到多台伺服器上面以同時服務不同的用戶端,也就所謂的 Web farm 架構,那麼你應該要採用 RSA 的加密方式,因為這種方式可以讓你很容易的在多台伺服器之間匯出和匯入 RSA 金鑰(所有 Web farm 機器都要用同一把鑰匙,否則解密會有問題),若用 DPAPI 則很難確保所有機器都用同一把鑰匙。如果想要進一步了解 RSA 加密的應用,以及其他跟組態檔加密有關的議題,可以參考以下文章:

MSDN 文章:Encrypting Configuration Information Using Protected Configuration (http://msdn2.microsoft.com/en-us/library/53tyfkaw(en-US,VS.80).aspx)
MSDN 文章:How To: Encrypt Configuration Sections in ASP.NET 2.0 Using DPAPI (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/paght000005.asp) by J.D. Meier, Alex Mackman, Blaine Wastell, Prashant Bansode, Andy Wigley. Microsoft Corporation. July 2005
MSDN 文章:How To: Encrypt Configuration Sections in ASP.NET 2.0 Using RSA (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/paght000006.asp)by J.D. Meier, Alex Mackman, Blaine Wastell, Prashant Bansode, Andy Wigley. Microsoft Corporation. July 2005
Create Export & Encrypt connection string on server and dev machine with ASP.Net 2.0 (http://aspdot.net/articles/encryptedconnstring/)Published 2006年5月9日 上午 12:33 by huanlin
Filed Under: ASP.NET


文章出處

如何加密 Web.config 中的 connectionStrings

2008/06/20


程式筆記本 - 如何加密 Web.config 中的 connectionStrings
1.隨便找個 web.config,放到要做 encryption 的電腦上,假設放在C:\Inetpub\wwwroot\XXX
2.打開command 視窗,執行CD\WINDOWS\Microsoft.NET\Framework\v2.0.50727
3.執行aspnet_regiis -pef connectionStrings C:\Inetpub\wwwroot\XXX
4.在成功執行 encryption 後,根據 Windows 版本執行以下的指令:
  Windows 2003:
  aspnet_regiis -pa "NetFrameworkConfigurationKey" "Network Service"

  Windows 2000 / XP:
  aspnet_regiis -pa "NetFrameworkConfigurationKey" "ASPNET"
5.成功後照第3步為真正要加密的web.config做加密
6.要解密的話,把參數 -pef 改成 -pdf 就可以了
ps1:3、4在各別電腦上應只需執行一次,目的只是讓IIS能讀到key
ps2:如果是app.config的話,先把檔名改為web.config,加密完再改回來即可


-------------------------------------------------------------------------------
Web.config Encryption
張貼者: 杜B 標籤: 經驗之談 27 October 2007 又是一個 quick note,.NET Framework 2.0 已經內建 web.config 的 encryption,而且不用更改任何 source code。做法如下:

1. 隨便找個 web.config,放到要做 encryption 的電腦上

2. 執行 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis -pef connectionStrings C:\Inetpub\wwwroot\XXX
(會自動找 web.config,XXX 是你在第一步找來的「隨便 web.config」)

3. 在成功執行一次 encryption 後,根據 Windows 版本執行以下的指令:
Windows 2003:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis -pa "NetFrameworkConfigurationKey" "Network Service"

Windows 2000 / XP:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis -pa "NetFrameworkConfigurationKey" "ASPNET"

4. 最後再如常執行第二步的指令,正式替 web.config 做 encryption。

5. 完成後 .NET Web App 會自動在 runtime 做 decryption,唯注意 encryption 需在執行該 web app 的電腦上執行,即不可以預先在 development machine 做好才放到 production machine。

--
注意:


次序必需正確,否則 encrypt 之後未必能 decrypt
要 decrypt 的話,把參數 -pef 改成 -pdf 就可以了

2009年6月3日 星期三

runas

runas /user:Administrative_AccountName "mmc %systemroot%\system32\inetsrv\iis.msc"。

2009年5月21日 星期四

手動建立顯示桌面

[顯示桌面] 圖示不是一般的程式捷徑。如果刪除這個圖示,重新建立此圖示的程序並不明顯。如果要重新建立 [顯示桌面] 圖示,請執行下列步驟:
按一下 [開始],按一下 [執行],輸入 notepad,然後按一下 [確定]。
在「記事本」中,輸入下列數行文字:
[Shell]
Command=2
IconFile=explorer.exe,3
[Taskbar]
Command=ToggleDesktop
依序按一下 [檔案]、[另存新檔],然後將檔案儲存在桌面上為 [Show Desktop.scf]。

注意「記事本」可能會自動在檔名中附加 .txt 的副檔名。如果出現這個副檔名,請加以移除。檔案名稱應為 [Show Desktop.scf]。
現在必須將檔案移到使用者設定檔的正確資料夾中,如此檔案才能出現在 [快速啟動] 工具列中。如果要執行這項操作,請使用下列其中一個方法。
回此頁最上方
方法 1
使用滑鼠將 [Show Desktop.scf] 圖示拖曳到 [快速啟動] 工具列,或另一個您希望捷徑出現的位置。
按一下 [移到此處]

2009年5月18日 星期一

sp_addlinkedserver/sp_addlinkedsrvlogin/Informix

EXEC sp_addlinkedserver
@server = 'taipei, -- 資料庫的server name
@provider = 'MSDASQL', -- Microsoft OLE DB Provider for ODBC
@datasrc = 'ds', -- db name
@srvproduct = 'Informix-CLI 2.5 (32 bit)' -- product version
GO
EXEC sp_addlinkedsrvlogin 'taipei', 'true'--, 'sa', 'login_name', 'password'

SELECT * FROM OPENQUERY(taipei, 'select * from ima_file')

SELECT count(*) CNT ,sum(imk09) s ,imk02,imk01,imk05,imk06 FROM OPENQUERY(tp, '
select * from imk_file where imk06>0 and imk01<>"MISC" and imk05=2009 and imk06=5
and imk09>0
') group by imk02,imk01,imk05,imk06 HAVING count(*) >1

2009年5月13日 星期三

變更切換輸入法的順序

變更切換輸入法的順序
機碼:HKEY_CURRENT_USER\Keyboard Layout\Preload

登錄值名稱「1」為「英文輸入法」
登錄值名稱「2」為第1順位的中文輸入法
以此類推

●常用的輸入法登錄值
微軟新注音:e0080404
微軟新倉頡:e0090404
大易:e0060404
倉頡:e0020404
注音:e0010404
嘸蝦米:e0200404

2009年4月14日 星期二

SQL系統資料

/*檢視表,預存程序內容*/
EXEC sp_helptext 'PDL_LotNumHis'

/*系統物件LIST*/
select * from sys.objects where name LIKE 'SA%' and type='U' order by name

/*資料表LIST*/
select name from sys.tables

/*檢視表LIST*/
select name from sys.views

/*TABLE欄位LIST*/
select cast(c.name as varchar(40)),convert(varchar(40),s.name),* from sys.columns c inner join sys.objects s on c.object_id=s.object_id
where s.name='UTA_MakStrList'

/*COLUMN欄位LIST*/

select c.name,s.name,* from sys.columns c inner join sys.objects s on c.object_id=s.object_id
where c.name='DpMethodName'

2009年4月8日 星期三

CURSOR/Simple

DECLARE curCur
READ_ONLY
FOR select name from sys.objects where type='U' and name like 'StknWIP%' order by name


declare @strsql nvarchar(300)
declare @objname varchar(40)
OPEN curCur
SET NOCOUNT ON
FETCH NEXT FROM curCur INTO @objname
WHILE (@@fetch_status =0)
BEGIN
set @strsql='select count(*) from '+@objname
-- PRINT 'add user defined code here'
-- eg.
PRINT @strsql
EXECUTE sp_executesql @strsql
FETCH NEXT FROM curCur INTO @objname
END

CLOSE curCur
DEALLOCATE curCur
SET NOCOUNT OFF

GO

SysColumn

select t1.name ColName,t2.name TableName from sys.columns t1 inner join sys.objects t2 on t1.object_id=t2.object_id where t1.name like 'ProcName%' ORDER BY t2.Name

CURSOR

DECLARE vend_cursor
FOR select name from sys.objects where name LIKE 'SA%' and type='U' order by name

declare @objname varchar(100)
DECLARE @SQLString nvarchar(500)
DECLARE @ParmDefinition nvarchar(500)
DECLARE @cntAffect int


OPEN vend_cursor

FETCH NEXT FROM vend_cursor into @objname
SET @SQLString = N'SELECT @cntAffectOut =count(*) from '+@objname

SET @ParmDefinition = N'@cntAffectOut int OUTPUT';

EXECUTE sp_executesql @SQLString, @ParmDefinition, @cntAffectOut=@cntAffect OUTPUT
IF @cntAffect>0
BEGIN
select @objname
SET @SQLString='select top 10 * from '+@objname
EXECUTE sp_executesql @SQLString
END

WHILE (@@FETCH_STATUS = 0)
BEGIN

FETCH NEXT FROM vend_cursor into @objname
SET @SQLString = N'SELECT @cntAffectOut =count(*) from '+@objname

SET @ParmDefinition = N'@cntAffectOut int OUTPUT';

EXECUTE sp_executesql @SQLString, @ParmDefinition, @cntAffectOut=@cntAffect OUTPUT
IF @cntAffect>0
BEGIN
select @objname
SET @SQLString='select top 10 * from '+@objname
EXECUTE sp_executesql @SQLString
END
END
CLOSE vend_cursor;
DEALLOCATE vend_cursor;
SET NOCOUNT OFF

AddLinkServer

USE master
--連到外部資料庫
EXEC sp_addlinkedserver @server='A07', @srvproduct='',
@provider='SQLOLEDB', @datasrc='A07'
--建立Login資料
EXEC sp_addlinkedsrvlogin 'G20', 'false', NULL, 'sa', 'sa'
--查詢已連結資料庫
EXEC sp_linkedservers
--刪除已連結資料庫
EXEC sp_dropserver ''HR'', 'droplogins'

2009年4月7日 星期二

Trigger 停用

alter table prodbasic disable trigger tu_prodbasic

apcb 08 9 0 SP3 ) APCB \CLORIS _08247 (621) APCB 00:01:12 0 個資料列

sp_who 621

spid ecid status loginame hostname blk dbname cmd request_ id

1 621 0 sleeping APCB \CLORIS _08247 G 102010020 695 APCB AWAITING COMMAND 0


kill 695

2009年3月26日 星期四

如何由程式中去新增 ODBC 資料來源

如何由程式中去新增 ODBC 資料來源
ODBC ( Open Database Connectivity ) 為 開放式的資料連結介面
早期是資料庫連結的標準,應用的技術有ODBC API、ODBC Direct ..
或是使用 資料庫物件 透過ODBC Driver 去進行資料庫的存取。
而後,M$ 推OLEDB ,資料庫物件也由 ADO 進化到 ADO.Net。
但不變的是,從文字檔 txt、csv、html,試算表xls、wks,到檔案型的DB,
XBase 的 DBF、Access 的 MDB等,甚至是 SQL Server , Oracle 等
中大型的DBMS、RDBMS,各廠商依舊提供了該資料庫系統的原廠 ODBC 驅動程式。
也因此,時至今日,ODBC 依舊被廣泛的使用。
而底下將介紹 如何由程式中去進增一個 MDB 的 ODBC 資料來源
其他資料庫原理亦相同,依樣畫葫蘆即可。
<< VB.Net 寫法 >>
' 宣告變數
Dim Para(11), DSN, Driver As String
' 設定ODBC DSN 參數內容
Para(0) = "UID=admin"
Para(1) = "Database=C:\db1.mdb"
Para(2) = "UserCommitSync=Yes"
Para(3) = "Threads=3"
Para(4) = "SafeTransactions=0"
Para(5) = "PageTimeout=5"
Para(6) = "MaxScanRows=8"
Para(7) = "MaxBufferSize=2048"
Para(8) = "FIL=MS Access"
Para(9) = "DriverId=25"
Para(10) = "DefaultDir=C:\"
Para(11) = "DBQ=C:\db1.mdb"
' 使用者資料來源名稱
DSN = "MyDataSourceName"
' 驅動程式
Driver = "Microsoft Access Driver (*.mdb)"
' 建立DAO.DBEngine 物件 , 透過RegisterDatabase 方法新增一個ODBC 設定
CreateObject("DAO.DBEngine.36").RegisterDatabase(DSN, Driver, True, Join(Para, Chr(0)))
' DAO 物件: Microsoft DAO 3.6 Object Library ( dao360.dll )
================================================================
<< C# 寫法 >>
// Activator 成員: 包含本機或遠端建立物件型別的方法,或者取得對現有遠端物件的參考。
// Activator.CreateInstance 方法(Type) : 使用最符合指定參數的建構函式,建立指定型別的執行個體。
object dbe = Activator.CreateInstance(Type.GetTypeFromProgID("DAO.DBEngine.36"));
// Type.GetTypeFromProgID 方法: 取得與指定的程式識別項(ProgID) 關聯的型別;
// 如果在載入Type 時發生錯誤,則傳回null。
// DAO.DBEngine.36 為Microsoft DAO 3.6 Object Library ( dao360.dll )
// 宣告變數
string[] strPara = new string[13];
string strDSN;
string strDriver;
// 設定ODBC DSN 參數內容
strPara[1] = "UID=admin";
strPara[2] = "Database=C:\\db1.mdb";
strPara[3] = "UserCommitSync=Yes";
strPara[4] = "Threads=3";
strPara[5] = "SafeTransactions=0";
strPara[6] = "PageTimeout=5";
strPara[7] = "MaxScanRows=8";
strPara[8] = "MaxBufferSize=2048";
strPara[9] = "FIL=MS Access";
strPara[10] = "DriverId=25";
strPara[11] = "DefaultDir=C:\\";
strPara[12] = "DBQ=C:\\db1.mdb";
// 使用者資料來源名稱
strDSN = "MyDataSourceName";
// 驅動程式
strDriver = "Microsoft Access Driver (*.mdb)";
object[] p = new object[] { strDSN, strDriver, true, string.Join('\0'.ToString(), strPara, 1, 12) };
// Type.InvokeMember 方法
// Type.InvokeMember (String, BindingFlags, Binder, Object, Object[])
dbe.GetType().InvokeMember("RegisterDatabase", BindingFlags.InvokeMethod, null, dbe, p);
// 透過DAO.DBEngine 物件的RegisterDatabase 方法新增一個ODBC 設定

XCOPY

以xcopy作備份
@echo off
rem
rem 先取得遠端信任,並建立網路磁碟機

D:
net use Z: /DELETE
net use Z: "\\192.168.200.121\C$\Program Files\SPCA" /user:apcb\spcinstall spcinstall
XCOPY /y D:\AP\SOURCE_S\SPC\SPCAV4.3\SPCA.exe Z:\


rem
rem 進行複製
rem /e 連子目錄也一起複製,包括空目錄
rem /v 複製完成,驗證
rem /h 連隱藏檔跟系統檔也一起複製
rem /z 在可重新開始的模式中複製網路檔案。
rem /y 遇到重複,不詢問,直接複製
rem /d:m-d-y 可加上日期,表示 y 年 m 月 d 日以後的檔案才複製
rem /i 假設目的端指定的名稱不存在,則自動建立為目錄
rem
rem 備份列表可以在下面繼續新增
rem
xcopy /e /v /h /z /y /i d:\snitzforums z:\snitzforums
xcopy /e /v /h /z /y /i d:\public z:\public

2009年3月25日 星期三

MS Windows 環境變數

位於: Windows — admin @ 3:34 下午
%SystemDrive%:系統磁碟機,預設是C:

%SystemRoot%:系統根目錄,預設是C:\WINNT或C:\WINDOWS

%SystemDirectory%:系統目錄,預設是C:\WINNT\System32或C:\WINDOWS\System32

%WinDir%:Windows目錄,預設是C:\WINNT或C:\WINDOWS

%ProgramFiles%:應用程式目錄,預設是C:\Program Files

%Temp%、%Tmp%:暫存檔目錄 %HomeDrive%:使用者目錄的磁碟機

%HomePath%:使用者家目錄

%OS%:作業系統名稱,其值固定為Windows_NT

%UserDomain%:包含使用者帳號的網域名稱,或者電腦名稱

%UserName%:使用者帳號名稱

%ALLUSERSPROFILE%:All Users設定檔的資料夾位置。

%APPDATA%:目前使用者的Application Data資料夾位置。

%CD%:目前的工作資料夾。

%CLIENTNAME%:目前使用者的NETBIOS電腦名稱。

%CMDCMDLINE%:處理目前命令提示字元視窗命令的cmd.exe的完整路徑。

%CMDEXTVERSION%:目前Command Processor Extensions的版本。

%CommonProgramFiles%:Common Files資料夾的路徑。

%COMPUTERNAME%:電腦名稱。

%COMSPEC%::命令提示字元視窗的解譯程式路徑,通常與%CMDCMDLINE%相同。

%DATE%:目前的系統日期。

%ERRORLEVEL%:最近執行過的命令的錯誤碼;非零的值表示發生過的錯誤碼。

%HomeDrive%:使用者目錄的磁碟機。

%HomePath%:使用者家目錄。

%HOMESHARE%:目前使用者共用資料夾的網路路徑。

%LOGONSEVER%:目前使用者所登入的網路控制器名稱。

%NUMBER_OF_PROCESSORS%:電腦的處理器數量。

%OS%:作業系統名稱,其值固定為Windows_NT。

%Path%:執行檔的搜尋路徑。

%PATHEXT%:作業系統是為執行檔的副檔名。

%PROCESSOR_ARCHITECTURE%:處理器的架構名稱,例如x86。

%PROCESSOR_IDENTFIER%:說明處理器的文字(不一定會有此環境變數)。

%PROCESSOR_LEVEL%:處理器的model number。

%PROCESSOR_REVISION%:處理器的revision number。

%ProgramFiles%:應用程式目錄,預設是C:\Program Files。

%PROMPT%:目前解譯程式的命令提示字串。

%RANDOM%:顯示0到32767之間的十進位整數亂數。

%SESSIONNAME%:連上終端伺服器的session names。

%SystemDrive%:系統磁碟機,預設是C:。

%SystemRoot%:系統根目錄,預設是C:\WINNT或C:\WINDOWS。

%SystemDirectory%:系統目錄,預設是C:\WINNT\System32或C:\WINDOWS\System32。

%Temp%、%Tmp%:暫存檔目錄。

%TIME%:目前的系統時間。

%UserDomain%:包含使用者帳號的網域名稱,或者電腦名稱。

%UserName%:使用者帳號名稱。

%USERPROFILE%:目前使用者的設定檔路徑。

%WinDir%:Windows目錄,預設是C:\WINNT或C:\WINDOWS。

SYSTEM32 下的幾乎所有檔案的簡單說明

位於: Windows — admin @ 3:38 下午
aclui.dll …..Security Descriptor Editor,沒有它,登錄檔編緝器會無法執行

ACTIVEDS.DLL …..(ADs 路由層 DLL). 沒有它, 打開事件檢視器會出錯

ADSLDPC.DLL ……ADs LDAP 提供程式 C DLL

ADVAPI32.DLL …..(進階 Windows 32 基本 API)…這個 avicap32.dll 用於將從數碼攝像頭捕獲的視頻另存為 AVI 格式. 如果你正在錄製視頻或是正在視頻聊天, 那麼你將服務終止這個進程

ADVPACK.DLL ……(Advpack Library). Windows 用它來驗證 .inf 檔案. 如果 advpack.dll 不可用, windows 將無法正常工作. (沒有它, 打開系統內容會出錯.)

ASYCFILT.DLL ….我所安裝的一個程式 StatBar, 需要這個檔案

ATL.DLL ………. Windows XP ATL 模組 (Unicode)

AUTHZ.DLL ……..認證框架

BASESRV.DLL ……Windows NT BASE API Server DLL

BATMETER.DLL …..(電池助手 DLL). 打開電源選項需要這個檔案

bootvid.dll …..VGA 啟動驅動

BROWSELC.DLL …..外殼流覽器用戶介面庫

browser.dll …..Computer Browser Service DLL

BROWSEUI.DLL ….. 外殼流覽器用戶介面庫

browsewm.dll …BrowseWM Player

CABINET.DLL ……(Microsoft® Cab 檔案 API). 想要正常打開系統選項就要保留這個檔案

CALC.EXE …….(計算器). Windows 自帶的計算器程式

CFGMGR32.DLL …配置管理轉發器 DLL,沒有它,無法在資源管理器中對磁片進行格式化

clb.dll …..Column List Box,沒有它,登錄檔編緝器會無法執行

CMD.EXE ….(命令行).可提供 Windows NT 下的命令行提示符 (MS-DOS 外殼解釋程式)

comcat.dll …..Microsoft C 執行時庫檔案

COMCTL32.DLL …..通用控制項庫

COMDLG32.DLL …..通用對話方塊 DLL

console.dll ….控制台控制臺小程式

control.exe ….Windows 控制台 (這個不是實際上的控制台.)

CONVERT.EXE ….(轉換). 用於將分區格式從 FAT 轉為 NTFS 以及從 NTFSv4 轉為 NTFSv5

CREDUI.DLL …….授權證書管理程式用戶介面

crtdll.dll …..加密管理器

CRYPT32.DLL ……32 位加密 API

CRYPTDLL.DLL …..加密管理程式

CRYPTUI.DLL ……Microsoft 加密用戶介面提供程式

CSRSRV.DLL …….用戶端伺服器執行時進程

CSRSS.EXE ……..(用戶端-伺服器執行時伺服器子系統). 用於維護Win32 系統環境控制臺以及其他基本功能.

desk.cpl ……顯示內容

deskmon.dll …. 進階顯示監視器內容

devenum.dll ….設備枚舉

devmgr.dll …..設備管理器 MMC 管理工具

diskcopy.dll …Windows DiskCopy

dmintf.dll ….. 磁片管理 DCOM 介面存根

dmutil.dll ….. 邏輯磁片管理器工具庫

DNSAPI.DLL …….DNS 用戶端 API DLL

fmifs.dll ……FM IFS 工具 DLL

framebuf.dll …幀緩衝顯示驅動

GDI32.DLL ……..GDI 用戶端 DLL(含有XCMD設定字體的函數)

hal.dll ……..(硬體抽象層). 隱藏 Windows 應用程式處理硬體問題的複雜性(啟動之後可刪除的檔案)

hccoin.dll …..USB 協同安裝程式

hotplug.dll ….用於安全移除硬體, 比如, U 盤

icaapi.dll ….. TermDD 設備驅動的 DLL 介面

ifsutil.dll ….IFS 工具 DLL

IMAGEHLP.DLL …..Windows NT 圖像助手(IE顯示圖像需要)

imm32.dll ……..(Windows XP IMM32 API 用戶端 DLL). 用於正常打開系統內容

inetmib1.dll …Microsoft MIB-II subagent

input.dll ……(文本輸入 DLL). 語言和區域設定需要這個檔案來顯示相關對話方塊

IPHLPAPI.DLL …..IP 助手API

iyuv_32.dll ….Intel Indeo(R) Video YUV Codec (檔案版本: 5.1.2600.2180)

kbdus.dll …..美國鍵盤佈局

kdcom.dll …….內核調試程式硬體擴展 DLL(啟動之後可刪除的檔案)

KERBEROS.DLL …..Kerberos 安全包

kernel32.dll …..Windows NT BASE API 用戶端 DLL

LINKINFO.DLL …..Windows 卷目追蹤

lpk.dll ……..會話註銷工具

LSASRV.DLL …….LSA 伺服器 DLL

LSASS.EXE ……..(LSA 安全服務). 本地安全認證伺服器進程

main.cpl ……滑鼠

MFC42.DLL ……MFCDLL 共用庫

mfc42u.dll …..MFCDLL 共用庫

MPR.DLL ……….多個提供程式路由 DLL

MPRAPI.DLL …….(Windows NT MP 路由管理DLL)

mprui.dll …….多個提供程式

MSASN1.DLL …….ASN.1 執行時 API

mscat32.dll ….MSCAT32 Forwarder DLL

mscms.dll ……..(Microsoft 色彩匹配系統 DLL). 這個模組中包含了一些用於校正圖像色彩,以及用於色彩映射, 色彩管理的函數

MSCTF.DLL ……MSCTF 伺服器 DLL

msftedit.dll ..RTF 文本編輯控制項, v4.1

MSGINA.DLL …….Windows NT 登錄 GINA DLL

msh263.drv ….Microsoft H.263 ICM 驅動

msidntld.dll …Microsoft 標識管理器

MSIMG32.DLL ……GDIEXT 用戶端 DLL

MSIMTF.DLL …..Active IMM 伺服器 DLL

msls31.dll …….(Microsoft 線性服務庫檔案). Internet Explorer 需要這個檔案

msports.dll ….埠類別安裝程式

MSPRIVS.DLL ……Microsoft 特權轉換

msrle32.dll ….Microsoft RLE 壓縮器

mssign32.dll …Microsoft 受信賴簽證 APIs

mssip32.dll ….MSSIP32 Forwarder DLL
msvcirt.dll ….Windows NT IOStreams DLL

MSVCP60.DLL ……Microsoft (R) C++ 執行時庫檔案

msvcrt40.dll …VC 4.x CRT DLL (向後相容 msvcrt.dll)

MSVCRT.DLL …….Windows NT CRT DLL

msvfw32.dll …Microsoft Video for Windows DLL

msvidc32.dll …Microsoft Video 1 壓縮器

mydocs.dll …..我的文檔案資料夾用戶介面

ncxpnt.dll …..Netork (不是 Network) 安裝嚮導支持 DLL

NDDEAPI.DLL ……Network DDE 共用管理 APIs

NET1.EXE …….(Network). 與 NET.EXE 的功能相同(在使用net命令的時候需要調用net1,若不存在就無法完成操作)

NET.EXE ……..(Network). 用於管理, 配置和檢視與網路相關的資訊, 例如 net use, net print, net user, 等等

NETAPI32.DLL …..Net Win32 API DLL

netrap.dll …..網路遠端管理協定DLL

netui0.dll …..NT LM UI Common Code - GUI Classes (檔案版本: 5.1.2600.2180)

netui1.dll …..NT LM UI Common Code - GUI Classes (檔案版本: 5.1.2600.2180)

newdev.dll ….添加硬體設備庫檔案

NOTEPAD.EXE ……(記事本). 文本編輯工具

NTDLL.DLL ……..NT Layer DLL

NTDSAPI.DLL ……(NT5DS Library) Windows 的目錄服務需要這個ntdsapi.dll 庫檔案. 目錄服務可令 Windows 能夠更容易地定位設備以及網路上的資源

ntlanman.dll …Microsoft® 局域網管理器

ntlsapi.dll ….Microsoft® 許可伺服器介面 DLL

NTMARTA.DLL ……Windows NT MARTA 提供程式

NTOSKRNL.EXE ..(作業系統內核). Windows XP 作業系統內核, 啟動畫面就在這個檔案中

ocmanage.dll ..可選組件管理庫

ODBC32.DLL …….Microsoft Data Access - ODBC 驅動管理器

ODBCBCP.DLL ……(Microsoft BCP for ODBC). 沒有這個檔案的話, 當你打開電腦管理時會遇到一個錯誤. 但還是可以打開電腦管理. (我把電腦管理刪掉了.)

ODBCINT.DLL ……Microsoft Data Access - ODBC 資源

OLE32.DLL ……..Microsoft OLE for Windows

oleacc.dll …….(Active Accessibility 核心組件)

OLEAUT32.DLL ….. Windows 要用它執行OLE (物件鏈結和嵌入) 操作. OLE 允許將程式創建的物件嵌入到另一個程式的文檔案或物件中. 例如. 將一個 Excel 表格嵌入到 Word 文檔案中. Windows 應用程式要經常用到OLE, 因此一般你是無法將其刪除的

OLECLI32.DLL ….. 物件鏈結和嵌入用戶端庫檔案

OLECNV32.DLL …..Microsoft OLE for Windows

oledlg.dll …….(Microsoft Windows(TM) OLE 2.0 用戶介面支援)

OLESVR32.DLL ….. 物件鏈結和嵌入伺服器庫

OLETHK32.DLL …..Microsoft OLE for Windows

perfctrs.dll …性能計數器

powercfg.cpl ..電源選項

POWRPROF.DLL …..(電源配置助手 DLL). 如要正常打開設備管理器中的鍵盤內容, 需要保留這個檔案

PROFMAP.DLL ……Userenv

PSAPI.DLL ……..進程狀態助手

pstorec.dll ….. 受保護存儲的COM 介面

pstorsvc.dll …. 受保護存儲伺服器

REG.EXE ……..(登錄檔控制臺). 一個用於查詢和修改登錄檔的命令行工具

REGAPI.DLL …….登錄檔配置 APIs

REGSVR32.EXE …(註冊伺服器). 用於註冊組件, DLL

riched20.dll …RTF 編輯控制項, v3.0

rnr20.dll ……Windows Socket2 命名空間 DLL

RPCRT4.DLL …….遠端程序呼叫執行時

RPCSS.DLL ……..分散式 COM 服務

RSAENH.DLL …….Microsoft 增強加密提供程式

rshx32.dll ….安全外殼擴展

rtipxmib.dll …Microsoft Router IPX MIB subagent

RTUTILS.DLL ……路由工具

RUNDLL32.EXE …(Run DLL). 用於執行 DLL 檔案的命令行工具

RUNONCE.EXE ….(Run Once). 用於將要執行的任務添加定義到 RunOnce 登錄檔項中

SAMLIB.DLL …….SAM 庫DLL

SAMSRV.DLL …….SAM 伺服器 DLL

SCESRV.DLL …….Windows安全配置編輯器引擎

SCHANNEL.DLL …..TLS / SSL 安全提供程式

SECUR32.DLL ……安全支援提供程式介面

security.dll …安全支援提供程式介面

services.exe …..(安全和控制程式). Windows XP 用它管理服務

SETUP.EXE ……(Setup). Windows 安裝程式

SETUPAPI.DLL …..Windows Setup API

SFC.DLL ……….Windows 檔案保護

SFC_OS.DLL …….Windows 檔案保護

sfcfiles.dll …..Windows 2000 系統檔案檢查工具

SHDOCVW.DLL …… 外殼文檔案物件和控制項庫

SHELL32.DLL ……Windows 外殼通用 Dll

shellstyle.dll ..Windows 外殼樣式資源Dll

SHFOLDER.DLL …..(外殼資料夾服務). 若要正常打開系統內容, 需要保留此檔案

shgina.dll …..Windows 外殼用戶登錄 <– 這個檔案用於從你的桌面上重啟電腦. 進一步講, 一旦你將其刪除或是將其從 system32 資料夾中移走, 那麼即使你將其放回, 也照樣無法從你的桌面重新啟動

shimgvw.dll ……(Windows 圖片和傳真檢視器). 我要用它看電腦上的圖片

SHLWAPI.DLL ……外殼 Light-weight 工具庫

sigtab.dll …..檔案完整性設定(系統內容–>硬體–>驅動程式簽名選項的對話方塊)

SMSS.EXE ………(會話管理器). 是個會話管理器, 用於在啟動期間創建Windows XP 環境

snmpapi.dll ….SNMP 工具庫

softpub.dll ….Softpub Forwarder DLL

softpub.dll ….Softpub Forwarder DLL

STOBJECT.DLL …..(Systray 外殼服務物件). stobject.dll 是個庫檔案, 包含了一些像是圖示這樣的資源

streamci.dll … 流設備類別安裝程式

SVCHOST.EXE …… Win32 服務的常規宿主Process

Winrar 命令列方式備份重要資料

以 -依日期格式備份
位於: Windows — admin @ 3:42 下午
命令列代碼:
“c:\program files\winrar\winrar.exe” a -m5 -s -agYYYY_MM_DD D:\backup\backup_ C:\My Documents

說明:
“c:\program files\winrar\winrar.exe”
這一行是指winrar的安裝路徑

參數a
是指把檔案加到壓縮檔

參數 -m
-m0 僅儲存 加入檔案到壓縮檔但是不壓縮
-m1 速度最快 最快速的方法 (最低的壓縮)
-m2 速度快 快速壓縮法
-m3 一般 一般 (預設) 壓縮方法
-m4 壓縮佳 良好的壓縮方法 (較高的壓縮)
-m5 壓縮最佳 最佳的壓縮方法 (最高壓縮但速度最慢)
default 是 -m3

參數 -s
表示包含資料夾下的所有目錄

參數 -ag[格式] 以目前日期產生壓縮檔名稱

當建立壓縮檔時,以格式「YYYYMMDDHHMMSS」附加到目前日期字串,
這對於每日的備份是有用的。

附加字串是由「格式」參數所定義,或者如果不存在時,使用
「YYYYMMDDHHMMSS」。格式字串可以包含下列的字元:

Y - 年
M - 月
MMM - 文字式的月份名稱 (Jan, Feb, 等)
W - 星期(文字) (一週起點為星期一)
A - 星期(數字) (星期一為 1, 星期日為 - 7)
D - 日
H - 時
M - 分 (如果接續在時後面,則視為分看待)
S - 秒

d:\backup\backup_
這就是壓縮檔存放的位置的存檔的檔名,可依照個人喜好設定檔名backup_後面會連著壓縮的日期與時間
例如: backup_20060514181010

C:\My Documents
這就是你打算要每日備份的資料夾位置.

最後將檔案存成一個 *.bat 用 Windows 的排程備份去做就可以了.

USB裝置開啟或停止

位於: Windows — admin @ 3:55 下午
開啟USB儲存設備:

==========開始===========
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR]
“Type”=dword:00000001
“Start”=dword:00000003
“ErrorControl”=dword:00000001
“ImagePath”=hex(2):73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,\
52,00,49,00,56,00,45,00,52,00,53,00,5c,00,55,00,53,00,42,00,53,00,54,00,4f,\
00,52,00,2e,00,53,00,59,00,53,00,00,00
“DisplayName”=”USB儲存設備”

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR\Security]
“Security”=hex:01,00,14,80,90,00,00,00,9c,00,00,00,14,00,00,00,30,00,00,00,02,\
00,1c,00,01,00,00,00,02,80,14,00,ff,01,0f,00,01,01,00,00,00,00,00,01,00,00,\
00,00,02,00,60,00,04,00,00,00,00,00,14,00,fd,01,02,00,01,01,00,00,00,00,00,\
05,12,00,00,00,00,00,18,00,ff,01,0f,00,01,02,00,00,00,00,00,05,20,00,00,00,\
20,02,00,00,00,00,14,00,8d,01,02,00,01,01,00,00,00,00,00,05,0b,00,00,00,00,\
00,18,00,fd,01,02,00,01,02,00,00,00,00,00,05,20,00,00,00,23,02,00,00,01,01,\
00,00,00,00,00,05,12,00,00,00,01,01,00,00,00,00,00,05,12,00,00,00
==========結束===========

禁止USB儲存設備 :

==========開始===========
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR]
“Type”=dword:00000001
“Start”=dword:00000004
“ErrorControl”=dword:00000001
“ImagePath”=hex(2):73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,\
52,00,49,00,56,00,45,00,52,00,53,00,5c,00,55,00,53,00,42,00,53,00,54,00,4f,\
00,52,00,2e,00,53,00,59,00,53,00,00,00
“DisplayName”=”USB儲存設備”

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR\Security]
“Security”=hex:01,00,14,80,90,00,00,00,9c,00,00,00,14,00,00,00,30,00,00,00,02,\
00,1c,00,01,00,00,00,02,80,14,00,ff,01,0f,00,01,01,00,00,00,00,00,01,00,00,\
00,00,02,00,60,00,04,00,00,00,00,00,14,00,fd,01,02,00,01,01,00,00,00,00,00,\
05,12,00,00,00,00,00,18,00,ff,01,0f,00,01,02,00,00,00,00,00,05,20,00,00,00,\
20,02,00,00,00,00,14,00,8d,01,02,00,01,01,00,00,00,00,00,05,0b,00,00,00,00,\
00,18,00,fd,01,02,00,01,02,00,00,00,00,00,05,20,00,00,00,23,02,00,00,01,01,\
00,00,00,00,00,05,12,00,00,00,01,01,00,00,00,00,00,05,12,00,00,00
==========結束===========

請將開始至結束,拷貝至存文字,存檔後將檔名改為*.reg,上面分別為開啟USB裝置與關閉USB裝置.

使用VB 新增 刪除登錄子機碼和登錄值

位於: Windows — admin @ 4:39 下午
新增
WSHShell.RegWrite “HKEY_CLASSES_ROOT\lnkfile\IsShortcut”, “”, “REG_SZ”

刪除
WSHShell.RegDelete “HKEY_CLASSES_ROOT\lnkfile\IsShortcut”, “”, “REG_SZ”

[VB6] INI 讀取 & 存檔

[VB6] INI 讀取 & 存檔
位於: Windows — admin @ 8:35 上午
1.首先宣告API
Private Declare Function GetPrivateProfileString Lib “kernel32″ Alias “GetPrivateProfileStringA” (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileString Lib “kernel32″ Alias “WritePrivateProfileStringA” (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long

2.放置一個command1按鈕(存檔)
Dim svv As Long
svv = WritePrivateProfileString(”模具沖壓”, “(1)”, Combo1.Text, App.Path & “\selfstocks.ini”)

PS.存檔格式如下: selfstocks.ini
[模具沖壓]
(1)=鉅祥

3.在Form_load加入,讀取
Dim svt As Long
Dim loadd As String
loadd = String(255, 0)
svt = GetPrivateProfileString(”模具沖壓”, “(1)”, Combo1.Text, loadd, 256, App.Path & “\selfstocks.ini”)
Combo1.Text = loadd

VB6 - 模擬按鍵&滑鼠 (keybd_event , mouse_event)

VB6 - 模擬按鍵&滑鼠 (keybd_event , mouse_event)
位於: Windows — admin @ 10:33 上午
‘宣告API
Private Declare Sub keybd_event Lib “user32″ (ByVal bVk As Byte, ByVal Scan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) ‘模擬鍵盤
Private Declare Sub mouse_event Lib “user32″ (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long) ‘模擬滑鼠

Private Const MOUSEEVENTF_ABSOLUTE = &H8000 ‘
Private Const MOUSEEVENTF_LEFTDOWN = &H2 ‘模擬鼠標左鍵按下
Private Const MOUSEEVENTF_LEFTUP = &H4 ‘模擬鼠標左鍵抬起
Private Const MOUSEEVENTF_MIDDLEDOWN = &H20 ‘模擬鼠標中鍵按下
Private Const MOUSEEVENTF_MIDDLEUP = &H40 ‘模擬鼠標中鍵抬起
Private Const MOUSEEVENTF_MOVE = &H1 ‘移動鼠標
Private Const MOUSEEVENTF_RIGHTDOWN = &H8 ‘模擬鼠標右鍵按下
Private Const MOUSEEVENTF_RIGHTUP = &H10 ‘模擬鼠標右鍵抬起
Private Const KEYEVENTF_KEYUP = &H2 ‘模擬鍵盤按下鍵

‘使用方法例子
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 ‘按下滑鼠左鍵下上
keybd_event 8, KEYEVENTF_KEYUP, 0, 0 ‘ 8 = 按下Enter鍵

2009年3月16日 星期一

建立AccessDB

Option Explicit

Private Sub CreateAccDB(ByVal MdbFileName As String) ' 建立 MDB
CreateObject("DAO.DBEngine.36").CreateDatabase _
MdbFileName, ";LANGID=0x0404;CP=950;COUNTRY=0"
End Sub


Private Sub Command1_Click()
Dim strMDBfile As String

strMDBfile = "C:\report\Test.mdb"
If Dir(strMDBfile) = "" Then CreateAccDB strMDBfile
If Dir(strMDBfile) <> "" Then MsgBox "建立完成"

CreateTable2 strMDBfile


End Sub

Sub CreateTable(strMDBfile As String)
Dim cn As ADODB.Connection
Set cn = CreateObject("ADODB.Connection")
Dim rs As ADODB.Recordset
Dim strSql As String
Dim Tbl As New Table
Dim Cat As ADOX.Catalog
Dim i As Integer
'Set Tbl = CreateObject("Table")
Set Cat = CreateObject("ADOX.Catalog")
With cn
.ConnectionString = "provider=sqloledb.1;persist security info=false;user id=sa;password=i513;initial catalog=apcb;data source=apcb08"
.Open
End With

strSql = "select * from K_HubMtl_Stocks"

Set rs = cn.Execute(strSql)

'Dim Tbl As New Table
'Dim Cat As New ADOX.Catalog

Cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strMDBfile & ";"
Tbl.Name = "MyTable"
For i = 0 To rs.Fields.Count - 1
Tbl.Columns.Append rs.Fields(i).Name, adVarWChar, 200
'Select Case rs.Fields(i).Type
' Case 2
' Tbl.Columns.Append rs.Fields(i).Name, adInteger
'Case 135
' Tbl.Columns.Append rs.Fields(i).Name, adDate
' Case 200
' Tbl.Columns.Append rs.Fields(i).Name, adVarChar, rs.Fields(i).DefinedSize
'Case 131
' Tbl.Columns.Append rs.Fields(i).Name, adNumeric, rs.Fields(i).DefinedSize

'End Select
Next i

Cat.Tables.Append Tbl

'塞資料


cn.Close
Set rs = Nothing
Set cn = Nothing
Set Tbl = Nothing
Set Cat = Nothing
End Sub

Sub CreateTable2(strMDBfile As String)
Dim cn As ADODB.Connection
Set cn = CreateObject("ADODB.Connection")

Dim rs As ADODB.Recordset

Dim strSql As String

With cn
.ConnectionString = "provider=sqloledb.1;persist security info=false;user id=sa;password=i513;initial catalog=apcb;data source=apcb08"
.Open
End With

With Adodc1
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strMDBfile & ";"
.RecordSource = "select * from MyTable"
End With


strSql = "select * from K_HubMtl_Stocks"

Set rs = cn.Execute(strSql)


'以下在用迴圈把資料add到acess裡面...
With rs
Do
Adodc1.Recordset.AddNew .Fields(0).Name, .Fields(0).Value
.MoveNext
While Not .EOF
End With

cn.Close
Set rs = Nothing
Set cn = Nothing
End Sub

2009年3月15日 星期日

2009年3月10日 星期二

時間轉字串

select convert(varchar(20),getdate(),20)