作者CYBASTER (復讎の業火)
看板C_Sharp
標題[問題] ASP.Net有辦法提高執行權限嗎?
時間Thu Nov 12 15:24:48 2009
各位先進大大好:
小弟做了一個ASP.Net網站,需要存取網站以外的應用程式,
(Google Desktop,因為想用它來實作全文檢索功能)
由於google desktop可利用httprequest來操作,所以沒有太大麻煩,
問題是它裡頭有個安全金鑰必須透過讀取Registry才能拿到,
這個Registry會因使用者不同而異,當然也就影響了網站的移植性,
所以不能寫死。
雖然C#的現成函式能夠操作讀取Registry,但我發現ASP.Net的權限不足,
於是寫好的code被擋掉了。
我暫時想出來的方法是:
寫一隻console程式讀取registry並將它寫在一個xml設定檔內,
每次驅動google desktop時就進去這個設定檔讀出安全金鑰,
也就是每移植一台新電腦時,要先手動去點這個主控台程式,讓它的registry被更新。
但我後來發現它比想像中麻煩,因為就算同一台電腦,同一個使用者,
金鑰好像還是常常會跑掉,如果將來移交這樣的程式給別人,
網管一定煩死了,因為他可能得天天手動去按程式更新那個設定檔。
所以我還是回到原點,希望能即時讀取registry key,
不過既然我都已經將它獨立包裝成了這隻主控台小程式,
我想利用Asp.Net呼叫System.Diagnostics.Process.Start去從外部驅動它,
而且另一方面用戶端的人也不會看見那個主控台閃出來,
除非我就在server上開啟這個網站。
結果驅動這隻程式成功了,但運作結果卻是失敗的,
因為這隻程式有對我的XML設定檔作I/O,而這個動作又被檔掉了,
我認為這應該又是因為權限不足的緣故…
不知有沒有大大因為類似的問題被困擾過,可以分享一下經驗的呢?感激不盡!
--
子曰:『槍管不清,則禮樂不興。』
~掄語
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.13.116
※ 編輯: CYBASTER 來自: 140.112.13.116 (11/12 15:26)
推 petrushka:try impersonate 11/13 09:04
→ petrushka:建議只在需要的地方使用impersonate方法 11/13 09:06
→ petrushka:不建議在web.config中設定 這樣比較安全一些 11/13 09:07
→ petrushka:如果不在web.config中設定, 你需要透過PInvoke來實作 11/13 09:08
推 deuter:把要讀取的regkey讓Network Service account 可讀就好了 11/13 11:32
→ deuter:Network Service是預設的IIS App Pool account 11/13 11:33