如题.
posted @ 2012-05-03 16:59 四六成双 阅读(4) 评论(0) 编辑
|
|||
|
大名鼎鼎Reflector , 要收费. 只有14天试用期. 网上有破解的, 但是如果使用到期后能再恢复使用之前的环境,应该可以继续试用. 关键就是要找到,运行后reflector改了哪些咚咚! 猜测的话基本是在注册表中. 用Regsnap抓了运行前和运行后的注册表,发现改动基本在: HKEY_CURRENT_USER\Software\Red Gate HKEY_CURRENT_USER\Software\Red Gate Software Ltd. HKEY_CURRENT_USER\Software\Thingummy Software HKEY_USERS\S-1-5-21-329068152-1085031214-839522115-1269_Classes\CLSID\{36b2a277-c0b2-40c5-9671-285b3380500d} 最后一个位置是比较隐蔽的. 首先是根据当前用户相关的.然后就是一个guid. 其实找起来也很简单.因为这个{36b2a277-c0b2-40c5-9671-285b3380500d}没有子键.
另外,这个guid每个版本都不一样. 写个reg文件,内容如下:
posted @ 2011-05-12 16:17 四六成双 阅读(463) 评论(0) 编辑 InnerException 为: {"Server cannot set content type after HTTP headers have been sent."}
经debug发现,是在: 1 public string ContentType 2 {
3 get 4 { 5 return this._contentType; 6 } 7 set 8 { 9 if (this._headersWritten) 10 { 11 if (this._contentType != value) 12 { 13 throw new HttpException(System.Web.SR.GetString("Cannot_set_content_type_after_headers_sent")); 14 } 15 } 16 else 17 { 18 this._contentTypeSet = true; 19 this._contentType = value; 20 } 21 } 22 } 抛出的异常,调用是在: private void SetIntrinsics(HttpContext context, bool allowAsync) {
...... HttpCapabilitiesBase browser = this._request.Browser; this._response.ContentType = browser.PreferredRenderingMime; 当第二次设置 ContentType并且两次不一致时,就会出现这个错误. 那么第一次是我们自己的程序设置的,类型是Text/XML.第二次是系统设置的, 值是text/html .这样Exception就出现了. 我们需要返回的类型是XML,因此需要修改第二次设置的值,也就是说要更改 browser.PreferredRenderingMime,即this._request.Browser.所以: 在 Server.Transfer前加入如下代码: 1 MyHttpBrowserCapabilities browse = new MyHttpBrowserCapabilities(); 2 browse.Capabilities = new Hashtable();
3 BrowserCapabilitiesFactory factroy = new BrowserCapabilitiesFactory(); 4 factroy.ConfigureBrowserCapabilities(HttpContext.Current.Request.Headers, browse); 5 HttpContext.Current.Request.Browser = browse; 6 HttpContext.Current.Server.Transfer(.... Class MyHttpBrowserCapabilities 也很简单: 1 public class MyHttpBrowserCapabilities : HttpBrowserCapabilities 2 {
3 4 public override string PreferredRenderingMime 5 { 6 get 7 { 8 return "Text/XML"; 9 } 10 } 11 } 指示Mime一样而已.这样就不会出现Exception了. posted @ 2011-03-16 17:51 四六成双 阅读(227) 评论(0) 编辑 今天同事报winxp登录进去的时候就报:winlogon.exe应用程序错误,关掉错误框后机器就蓝屏. 但是用其他的用户登录进去是好的,说明不是硬件问题. 把 dump的文件winlogon.exe.hdmp等拷贝到自己机器上,开windbg分析: !analyze -v *** ERROR: Symbol file could not be found. Defaulted to export symbols for faultrep.dll - Unable to load image C:\WINDOWS\system32\PCANotify.dll, Win32 error 0n2
*** WARNING: Unable to verify timestamp for PCANotify.dll
*** ERROR: Module load completed but symbols could not be loaded for PCANotify.dll
Unable to load image C:\Program Files\ShiQiang\wnime\dll32\wnupdate.dll, Win32 error 0n2
*** WARNING: Unable to verify timestamp for wnupdate.dll
*** ERROR: Module load completed but symbols could not be loaded for wnupdate.dll
Unable to load image C:\Program Files\ShiQiang\wnime\dll32\wnpy_Query.dll, Win32 error 0n2
*** WARNING: Unable to verify timestamp for wnpy_Query.dll
*** ERROR: Module load completed but symbols could not be loaded for wnpy_Query.dll
*** ERROR: Symbol file could not be found. Defaulted to export symbols for wlnotify.dll -
*** WARNING: Unable to verify timestamp for WgaLogon.dll
*** ERROR: Module load completed but symbols could not be loaded for WgaLogon.dll
GetPageUrlData failed, server returned HTTP status 404
URL requested: http://watson.microsoft.com/StageOne/winlogon_exe/5_1_2600_5512/wnpy_StatusWnd_dll/2008_7_11_1/000027a2.htm?Retriage=1
FAULTING_IP:
wnpy_StatusWnd+27a2
699027a2 ?? ???
EXCEPTION_RECORD: ffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 699027a2 (wnpy_StatusWnd+0x000027a2)
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 00000000
Parameter[1]: 00000000
Attempt to read from address 00000000
PROCESS_NAME: winlogon.exe
ADDITIONAL_DEBUG_TEXT:
Use '!findthebuild' command to search for the target build information.
If the build information is available, run '!findthebuild -s ; .reload' to set symbol path and load symbols.
FAULTING_MODULE: 7c900000 ntdll
DEBUG_FLR_IMAGE_TIMESTAMP: 4a31ce4c
ERROR_CODE: (NTSTATUS) 0xc0000005 - The instruction at "0x%08lx" referenced memory at "0x%08lx". The memory could not be "%s".
EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - The instruction at "0x%08lx" referenced memory at "0x%08lx". The memory could not be "%s".
EXCEPTION_PARAMETER1: 00000000
EXCEPTION_PARAMETER2: 00000000
READ_ADDRESS: 00000000
FOLLOWUP_IP:
wnpy_StatusWnd+27a2
699027a2 ?? ???
MOD_LIST: <ANALYSIS/>
FAULTING_THREAD: 0000029c
BUGCHECK_STR: APPLICATION_FAULT_NULL_POINTER_READ_WRONG_SYMBOLS
PRIMARY_PROBLEM_CLASS: NULL_POINTER_READ
DEFAULT_BUCKET_ID: NULL_POINTER_READ
IP_ON_HEAP: 150100d0
FRAME_ONE_INVALID: 1
LAST_CONTROL_TRANSFER: from 150100d0 to 699027a2
STACK_TEXT:
WARNING: Stack unwind information not available. Following frames may be wrong.
0006d914 150100d0 69924b00 01010074 00000016 wnpy_StatusWnd+0x27a2
0006d918 69924b00 01010074 00000016 00000005 0x150100d0
0006d91c 01010074 00000016 00000005 00000019 wnpy_StatusWnd+0x24b00
0006d920 00000000 00000005 00000019 00000016 winlogon+0x10074
STACK_COMMAND: ~0s; .ecxr ; kb
SYMBOL_STACK_INDEX: 0
SYMBOL_NAME: wnpy_StatusWnd+27a2
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: wnpy_StatusWnd
IMAGE_NAME: wnpy_StatusWnd.dll
BUCKET_ID: WRONG_SYMBOLS
FAILURE_BUCKET_ID: NULL_POINTER_READ_c0000005_wnpy_StatusWnd.dll!Unknown
WATSON_STAGEONE_URL: http://watson.microsoft.com/StageOne/winlogon_exe/5_1_2600_5512/48027549/wnpy_StatusWnd_dll/2008_7_11_1 /4a31ce4c/c0000005/000027a2.htm?Retriage=1
Followup: MachineOwner
---------
发现是这个动态库wnpy_StatusWnd.dll 内抛得AV.
C:\Program Files\ShiQiang\wnime\Dll32\wnpy_StatusWnd.dll 卸载掉后就好了. posted @ 2011-01-25 14:37 四六成双 阅读(118) 评论(0) 编辑 Vs自带的Visual Studio Development_server非常好用.比XP的IIS强多了. XP的IIS经常报访问数过多. 但是, WebDev.WebServer.exe 有个限制就是,只能内环网访问,就是只能用localhost 或者127.0.0.1访问. 要是能够对外服务的话,岂不是可以当个IIS 了?
查了一下引用.只用了WebDev.WebHost.dll. 理论上有了WebDev.WebHost.dll和WebDev.WebServer.exe就可以架设了. 现在需要的就是去掉内环访问限制.从Reflector中查找: 在 方法里:
public void Start()
{ this._socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); this._socket.ExclusiveAddressUse = true; try { this._socket.Bind(new IPEndPoint(IPAddress.Loopback, this._port));//这里开启的是内环网监听. } ....... 改成: this._socket.Bind(new IPEndPoint(IPAddress.Parse(ConfigurationSettings.AppSettings["ServerIP"]), this._port));//从配置文件读取IP
在 Declaring Type: Microsoft.VisualStudio.WebHost.Requestprivate bool TryParseRequest() {
this.Reset(); this.ReadAllHeaders(); if (!this._connection.IsLocal)//这里检查了是不是本地的请求.需要弊掉. { this._connection.WriteErrorAndClose(0x193); return false; } ....略 return true; } 基本就去掉内环网访问的限制了. 下面就需要来修改. 1. 首先把WebDev.WebHost.dll去掉强命名,再反编译成IL. 2. 修改IL. 3.编译IL.编译要用新的Key给它强命名. 4.把 WebDev.WebServer.exe 反编译成IL,把引用WebDev.WebHost.dll的签名改成刚生成的. 5.编译新的WebDev.WebServer.exe. 6.新建 WebDev.WebServer.EXE.config,并在appSettings添加ServerIP. 至此,就可以把本机的IP配置到ServerIP来启动Web服务了.
posted @ 2010-10-14 12:31 四六成双 阅读(1860) 评论(10) 编辑 摘要: 如果是Forms认证的话,实现起来很简单,因为相关的凭据都在cookie中,只要把所有的cookie都付给HttpWebRequest就可以了.代码如下:[代码]但是如果是Windows集成认证的话,身份凭据就不在cookie中的.因此需要调用LogonUserIdentity.Impersonate()来模拟,然后再取用户身份信息.代码如下:[代码]//HttpRequestcurRequest...阅读全文 posted @ 2010-07-02 18:03 四六成双 阅读(96) 评论(0) 编辑 摘要: 主要API:1[DllImport("oleacc.dll",PreserveSig=false)][代码]源代码:/Files/huigll/GetDRCnetContent.rar阅读全文 posted @ 2010-06-29 17:18 四六成双 阅读(122) 评论(0) 编辑 摘要: 用sa执行OpenDataSource语句正常,但是用Network Service执行就报这个错误. 说明是权限问题.把sysadmin的Server Roles赋给此用户,也可以正确执行.但是安全性太恐怖. google了一哈,基本都是引自http://social.msdn.microsoft.com/Forums/en/sqldatabaseengine/thread/0cec4ce4-d...阅读全文 posted @ 2010-06-25 13:29 四六成双 阅读(212) 评论(0) 编辑 摘要: 折腾了一下午.做记录以备忘.先下载cabarc.exe,从http://support.microsoft.com/kb/310618假设cabarc.exe加压到D:\temp\11111\BIN\目录下要把D:\vsc_old目录下的所有文件,包括子文件都添加到cab命令如下:D:\VSC_old>D:\temp\11111\BIN\cabarc -r -p N d:\rr.cab *阅读全文 posted @ 2010-06-01 16:36 四六成双 阅读(2035) 评论(0) 编辑 |
|||