發表文章

目前顯示的是 8月, 2012的文章

有Administrator權限卻無法用gacutil.exe安裝

圖片
今天發生了一件奇怪的事,在一台裝了Windows 2008 R2作業系統的伺服器上,新增了一個帳號,並將這個帳號加入到Administrators群組中。理論上用這個帳號登入的使用者,就等於有了管理員的權限,要安裝什麼軟體都是沒問題的才對。 可是當用這組帳號登入後,開啟命令列視窗後,執行了gacutil.exe來安裝.NET開發出來的元件時,卻出現了以下授權不足的錯誤訊息: 一開始以為是什麼UAC功能要關閉,結果關了也是沒效。後來才知道有人說要用管理員的身份來開啟命令列視窗才行。本來以為登入者具有管理員權限就可以了,沒想到在開啟命令列視窗時還要特別用管理員權限開啟才行。 如果不是用管理員權限開啟視窗的話,會發現在視窗上面是沒有管理員的字樣的:

perl正規表示式(regular express)初體驗

# 2012/8/21 Justin # test # Regex查詢時,=後要直接接~,不然就match不到 my($rawData) = "HintA"; $rawData = ~m/(H.*)/; print( $1 . "\n" ); my($text) = "HintA"; $text =~m/(H.*)/; print $1 . "\n";

設定及存取Android專案中的Asset資源

圖片
最近要試寫一個Android的App,這個App需要使用到資料庫。只是一般程式一開始安裝後一定是沒有資料庫的,那第一份資料庫要由何而來呢? 一開始我天真的想法就是利用Android內建的 SQLiteOpenHelper ,先繼承它,並改寫其中的幾個函式,當程式一執行時會被呼叫到,此時再產生一個空白的資料庫,並執行一堆產生資料表的SQL指令。哈,這方式雖然可行,但如果資料庫裏的資料表很多的話,真的先程式碼就要寫一堆了。 一直在想說難道我不能內嵌一份最原始的SQLite資料庫檔案,當程式第一次執行時,就以這份為初始資料庫來給使用者使用嗎? 後來查了一下網路上的資料,參考別人的作法,總算是看到也有人 有同樣的實作方式 ,而且相關的程式碼都有了。當然就直接拿來使用囉。 只是一時不察,在這段程式碼的CopyDataBase()中有一段是: //Open your local db as the input stream             InputStream myInput = context . getAssets (). open ( DATABASE_NAME ); 一開始我以為context.getAssets()是存取App的根目錄,所以open()時會自動取得我放在根目錄下面的那份原始資料庫檔案。結果進行debug時發現在這段都會得到一個無法找到檔案的Exception。 後來查了一下有關getAssets()函式的說明,才知道原來這個函式會傳回一個 AssetManager ,透過這個AssetManager可以存取在專案中的一個Assets區塊。 所以一開始需要將原始的那份資料庫檔案放到這個Assets區塊中才能正常讀取並複製一份給第一次安裝App的使用者來使用。 只是查了很久,查不太到有人在說明如何將一份既有的SQLite資料庫檔案放到這個Assets區塊中來使用。於是就自行摸索了一下,總算是成功了。為了怕日後忘記,趕快在Blog中記錄一下。 首先在Ecllipse的Workspace中找到你的Android App專案,並找到它的assets區,如下圖所示。 在assets區中按下滑鼠右鍵,會出現如下圖的選項,請選[New]->[File]以便新增一個檔案。 在出現的對話視窗