none
关于kill()的问题 RRS feed

  • 问题

  • 我在VS环境里面调试都是没问题的,在生产环境上发布的话就把KILL出错
     System.Diagnostics.Process.GetProcessById(lpdwProcessId).Kill();
    异常详细信息: System.ComponentModel.Win32Exception: 拒绝访问。
    我在web.config加入了
    <identity impersonate="true" userName="用户名" password="密码"/>了
    还有什么地方要修改的?
    2010年3月30日 8:20

答案

  • 最好用下面的语句来释放com对象:

    if (obj != null)

    {

         System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);

         obj = null;

    }

    2010年3月31日 9:00

全部回复

  • 你好,这个是一些不能访问的
    不好意思我没有把话说清楚,我是用com的方式起了一个excel,我后来准备把这个excel给KILL才报这个错的
    后来我又试着把excel.application=null这个到是可以结束掉,但是这个excel.exe进程还是在的。

    2010年3月30日 14:51
  • 怪了,我换一段代码就可以结束了
    我这段就可以结束
               var yy = System.Diagnostics.Process.GetProcessesByName("excel");
               int iy = 1;
               foreach (var xx in yy.AsEnumerable())
               {
                   if (iy == yy.Count())
                   {
                       xx.Kill();
                       break;
                   }
                   iy++;
               }

    用下面这段就报错
    [DllImport("user32.dll", SetLastError = true)]
           static extern int GetWindowThreadProcessId(IntPtr hWnd, out int lpdwProcessId);
           public void KillSpecialExcel(Microsoft.Office.Interop.Excel.Application m_objExcel)
           {
               try
               {
                   if (m_objExcel != null)
                   {
                       int lpdwProcessId;
                       GetWindowThreadProcessId(new IntPtr(m_objExcel.Hwnd), out lpdwProcessId);
                       HttpContext.Current.Response.Write(GetWindowThreadProcessId(new IntPtr(m_objExcel.Hwnd), out lpdwProcessId).ToString());
                       System.Diagnostics.Process.GetProcessById(lpdwProcessId).Kill();
                   }
               }
               catch (Exception ex)
               {
               }
           }

    用下面这段就报前面的错,这二个方法对权限上有什么要求嘛,谢谢~

    2010年3月31日 2:00
  • 最好用下面的语句来释放com对象:

    if (obj != null)

    {

         System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);

         obj = null;

    }

    2010年3月31日 9:00