作者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)
1F:推 petrushka:try impersonate 11/13 09:04
2F:→ petrushka:建议只在需要的地方使用impersonate方法 11/13 09:06
3F:→ petrushka:不建议在web.config中设定 这样比较安全一些 11/13 09:07
4F:→ petrushka:如果不在web.config中设定, 你需要透过PInvoke来实作 11/13 09:08
5F:推 deuter:把要读取的regkey让Network Service account 可读就好了 11/13 11:32
6F:→ deuter:Network Service是预设的IIS App Pool account 11/13 11:33