怎么设置进程无法访问
答案:5 悬赏:30 手机版
解决时间 2021-05-06 00:32
- 提问者网友:疯子也有疯子的情调
- 2021-05-05 16:09
就是设置成在任务管理器里 结束进程时 显示无法访问
最佳答案
- 五星知识达人网友:雪起风沙痕
- 2021-05-05 16:26
文件“G:\test\OASystem\loginlog\qf.xml”正由另一进程使用,因此该进程无法访问该文件。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.IO.IOException: 文件“G:\test\OASystem\loginlog\qf.xml”正由另一进程使用,因此该进程无法访问该文件。
源错误:
行 28: string id = Session["login_ID"].ToString();
行 29: XmlDocument xmldoc = new XmlDocument();
行 30: xmldoc.Load(xmlPath);
行 31: XmlNodeList nodeList = xmldoc.SelectSingleNode("Login").ChildNodes;//获取bookstore节点的所有子节点
行 32: foreach (XmlNode xn in nodeList)//遍历所有子节点
源文件: g:\test\OASystem\logout.aspx.cs 行: 30
堆栈跟踪:
[IOException: 文件“G:\test\OASystem\loginlog\qf.xml”正由另一进程使用,因此该进程无法访问该文件。]
..........................
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.832; ASP.NET 版本:2.0.50727.832
===============================================================================================
login.aspx.cs中因为太少,不全部贴了,其中写XML部分的内容如下
string userLoginName = TextBoxLoginName.Text; //用户登录名
string xmlPath = Request.PhysicalApplicationPath + @"\loginlog\" + userLoginName + ".xml";
if (System.IO.File.Exists(xmlPath))//如果文件存在
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlPath);
FileStream stream = new FileStream(xmlPath, FileMode.Open);
XmlDataDocument doc = new XmlDataDocument();
doc.DataSet.ReadXml(new StreamReader(stream));
XmlNode root = xmlDoc.SelectSingleNode("Login");//查找根结点 <login>
XmlElement xe1 = xmlDoc.CreateElement("Info");//创建一个信息节点
xe1.SetAttribute("ID", (doc.DataSet.Tables[0].Rows.Count + 1).ToString());//设置此次登录的次数
Session.Add("login_ID", (doc.DataSet.Tables[0].Rows.Count + 1).ToString());
stream.Close();//关闭打开的文件
XmlElement xesub1 = xmlDoc.CreateElement("IP");//创建一个IP节点
xesub1.InnerText = Request.ServerVariables["REMOTE_ADDR"];//记录登录IP
xe1.AppendChild(xesub1);//添加到Info点中
XmlElement xesub2 = xmlDoc.CreateElement("Ltime");//创建一个登录时间节点
xesub2.InnerText = DateTime.Now.ToString();//记录登录时间
xe1.AppendChild(xesub2);
root.AppendChild(xe1);//添加到根节点中
xmlDoc.Save(xmlPath);
}
else//如果文件不存在
{
XmlDocument nxmldoc = new XmlDocument();
//加入XML的声明段落
XmlNode nxmlnode = nxmldoc.CreateNode(XmlNodeType.XmlDeclaration, "", "");
nxmldoc.AppendChild(nxmlnode);
XmlNode comment = nxmldoc.CreateComment(userLoginName + "的登录日志");
nxmldoc.AppendChild(comment);
//加入一个根元素
XmlElement nxmlelem = nxmldoc.CreateElement("", "Login", "");
//XmlText nxmltext = nxmldoc.CreateTextNode("Root Text");
//nxmlelem.AppendChild(nxmltext);
nxmldoc.AppendChild(nxmlelem);
//加入另外一个元素
XmlElement xe1 = nxmldoc.CreateElement("Info");//创建一个信息节点
xe1.SetAttribute("ID", "1");//设置为第1次登录
XmlElement xesub1 = nxmldoc.CreateElement("IP");//创建一个IP节点
xesub1.InnerText = Request.ServerVariables["REMOTE_ADDR"];//记录登录IP
xe1.AppendChild(xesub1);//添加到Info点中
XmlElement xesub2 = nxmldoc.CreateElement("Ltime");//创建一个登录时间节点
xesub2.InnerText = DateTime.Now.ToString();//记录登录时间
xe1.AppendChild(xesub2);
nxmlelem.AppendChild(xe1);//添加到根节点中
//保存创建好的XML文档
nxmldoc.Save(xmlPath);
}
Response.Redirect("user_index.htm");
--------------------------------------------------------------------------------------
logout.aspx.cs内容如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml;
using System.IO;
public partial class logout : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Session["login_name"] == null)
Response.Write(" <script>top.location.href='Login.aspx'; </script>");
else
{
string xmlPath = Request.PhysicalApplicationPath + @"\loginlog\" + Session["login_name"] + ".xml";
string id = Session["login_ID"].ToString();
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(xmlPath);
XmlNodeList nodeList = xmldoc.SelectSingleNode("Login").ChildNodes;//获取bookstore节点的所有子节点
foreach (XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型
if (xe.GetAttribute("ID") == id)//找到登录结点
{
XmlElement xesub1 = xmldoc.CreateElement("Outtime");//创建一个退出时间结点
xesub1.InnerText = DateTime.Now.ToString(); ;//记录登录IP
xe.AppendChild(xesub1);//添加到Info点中
}
}
xmldoc.Save(xmlPath);//保存。
Session.Remove("login_name");
Response.Write(" <script>top.location.href='Login.aspx'; </script>");//返回首页
}
}
}
-----------------------------------------------------------
qf.xml内容为:
<?xml version="1.0"?>
<Login>
<Info ID="1">
<IP>127.0.0.1 </IP>
<Ltime>2007-12-8 0:43:19 </Ltime>
<Outtime>2007-12-8 0:43:24 </Outtime>
</Info>
<Info ID="2">
<IP>127.0.0.1 </IP>
<Ltime>2007-12-9 0:56:59 </Ltime>
<Outtime>2007-12-9 1:02:20 </Outtime>
</Info>
<Info ID="3">
<IP>192.168.101.28 </IP>
<Ltime>2007-12-12 14:01:09 </Ltime>
</Info>
</Login>
=================================================================
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.IO.IOException: 文件“G:\test\OASystem\loginlog\qf.xml”正由另一进程使用,因此该进程无法访问该文件。
源错误:
行 28: string id = Session["login_ID"].ToString();
行 29: XmlDocument xmldoc = new XmlDocument();
行 30: xmldoc.Load(xmlPath);
行 31: XmlNodeList nodeList = xmldoc.SelectSingleNode("Login").ChildNodes;//获取bookstore节点的所有子节点
行 32: foreach (XmlNode xn in nodeList)//遍历所有子节点
源文件: g:\test\OASystem\logout.aspx.cs 行: 30
堆栈跟踪:
[IOException: 文件“G:\test\OASystem\loginlog\qf.xml”正由另一进程使用,因此该进程无法访问该文件。]
..........................
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.832; ASP.NET 版本:2.0.50727.832
===============================================================================================
login.aspx.cs中因为太少,不全部贴了,其中写XML部分的内容如下
string userLoginName = TextBoxLoginName.Text; //用户登录名
string xmlPath = Request.PhysicalApplicationPath + @"\loginlog\" + userLoginName + ".xml";
if (System.IO.File.Exists(xmlPath))//如果文件存在
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlPath);
FileStream stream = new FileStream(xmlPath, FileMode.Open);
XmlDataDocument doc = new XmlDataDocument();
doc.DataSet.ReadXml(new StreamReader(stream));
XmlNode root = xmlDoc.SelectSingleNode("Login");//查找根结点 <login>
XmlElement xe1 = xmlDoc.CreateElement("Info");//创建一个信息节点
xe1.SetAttribute("ID", (doc.DataSet.Tables[0].Rows.Count + 1).ToString());//设置此次登录的次数
Session.Add("login_ID", (doc.DataSet.Tables[0].Rows.Count + 1).ToString());
stream.Close();//关闭打开的文件
XmlElement xesub1 = xmlDoc.CreateElement("IP");//创建一个IP节点
xesub1.InnerText = Request.ServerVariables["REMOTE_ADDR"];//记录登录IP
xe1.AppendChild(xesub1);//添加到Info点中
XmlElement xesub2 = xmlDoc.CreateElement("Ltime");//创建一个登录时间节点
xesub2.InnerText = DateTime.Now.ToString();//记录登录时间
xe1.AppendChild(xesub2);
root.AppendChild(xe1);//添加到根节点中
xmlDoc.Save(xmlPath);
}
else//如果文件不存在
{
XmlDocument nxmldoc = new XmlDocument();
//加入XML的声明段落
XmlNode nxmlnode = nxmldoc.CreateNode(XmlNodeType.XmlDeclaration, "", "");
nxmldoc.AppendChild(nxmlnode);
XmlNode comment = nxmldoc.CreateComment(userLoginName + "的登录日志");
nxmldoc.AppendChild(comment);
//加入一个根元素
XmlElement nxmlelem = nxmldoc.CreateElement("", "Login", "");
//XmlText nxmltext = nxmldoc.CreateTextNode("Root Text");
//nxmlelem.AppendChild(nxmltext);
nxmldoc.AppendChild(nxmlelem);
//加入另外一个元素
XmlElement xe1 = nxmldoc.CreateElement("Info");//创建一个信息节点
xe1.SetAttribute("ID", "1");//设置为第1次登录
XmlElement xesub1 = nxmldoc.CreateElement("IP");//创建一个IP节点
xesub1.InnerText = Request.ServerVariables["REMOTE_ADDR"];//记录登录IP
xe1.AppendChild(xesub1);//添加到Info点中
XmlElement xesub2 = nxmldoc.CreateElement("Ltime");//创建一个登录时间节点
xesub2.InnerText = DateTime.Now.ToString();//记录登录时间
xe1.AppendChild(xesub2);
nxmlelem.AppendChild(xe1);//添加到根节点中
//保存创建好的XML文档
nxmldoc.Save(xmlPath);
}
Response.Redirect("user_index.htm");
--------------------------------------------------------------------------------------
logout.aspx.cs内容如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml;
using System.IO;
public partial class logout : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Session["login_name"] == null)
Response.Write(" <script>top.location.href='Login.aspx'; </script>");
else
{
string xmlPath = Request.PhysicalApplicationPath + @"\loginlog\" + Session["login_name"] + ".xml";
string id = Session["login_ID"].ToString();
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(xmlPath);
XmlNodeList nodeList = xmldoc.SelectSingleNode("Login").ChildNodes;//获取bookstore节点的所有子节点
foreach (XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型
if (xe.GetAttribute("ID") == id)//找到登录结点
{
XmlElement xesub1 = xmldoc.CreateElement("Outtime");//创建一个退出时间结点
xesub1.InnerText = DateTime.Now.ToString(); ;//记录登录IP
xe.AppendChild(xesub1);//添加到Info点中
}
}
xmldoc.Save(xmlPath);//保存。
Session.Remove("login_name");
Response.Write(" <script>top.location.href='Login.aspx'; </script>");//返回首页
}
}
}
-----------------------------------------------------------
qf.xml内容为:
<?xml version="1.0"?>
<Login>
<Info ID="1">
<IP>127.0.0.1 </IP>
<Ltime>2007-12-8 0:43:19 </Ltime>
<Outtime>2007-12-8 0:43:24 </Outtime>
</Info>
<Info ID="2">
<IP>127.0.0.1 </IP>
<Ltime>2007-12-9 0:56:59 </Ltime>
<Outtime>2007-12-9 1:02:20 </Outtime>
</Info>
<Info ID="3">
<IP>192.168.101.28 </IP>
<Ltime>2007-12-12 14:01:09 </Ltime>
</Info>
</Login>
=================================================================
全部回答
- 1楼网友:何以畏孤独
- 2021-05-05 17:36
在金山杀毒那可以设置
- 2楼网友:平生事
- 2021-05-05 17:13
看得出来,LZ是个很细心的人,是个典型的十万个为什么!o_O
我确实也碰到过这种事,比如我们常用的360安全卫士,它对应的系统托盘进程名为360tray.exe,你会发现,当你用系统任务管理器里的进程结束命令来处理它的时候,会出现无法结束、拒绝访问的提示。这很正常,因为360的软件开发者们不建议你们这样来退出360,或者是他们出于对病毒破坏的担忧,对自己的进程实行了自我保护,它需要用到Hook(钩子)技术,原理说的简单点就是,进程在启动之前先在系统挂上一个钩子(PS:你可以把它想像成一个类似于鱼钩的东西,呵呵,这个可以自由发挥),这个钩子的作用呢,就是告诉系统,当系统要作出结束某进程的动作之前,返回一个消息给该进程,并把系统的控制权交给它来处理。9目前来说,这种技术还算是比较先进的。(~~)它一般也是通过编程来实现的。至今为止,我还没发现有哪一款任务管理器可以自由得实现楼主所说的那种功能
所以,很明显,我并没有真正的解决楼主所提出的问题,但是希望我所说的能帮你更好的理解!
- 3楼网友:鸽屿
- 2021-05-05 17:08
最简单的方法。打开任务管理器,右键单击你要拒绝访问的进程,选择打开文件位置。系统会打开新的资源管理器并定位到你找的进程。
然后右键单击那个你要拒绝访问的程序名(,也就是新打开资源管理器定位到的那个后缀名为.exe的程序)选择属性。单击安全选项卡,在下方你会看到有关特殊权限或高级设置,请单击高级。单击高级按钮。在新打开的权限窗口,单击更改权限。在新打开的又一窗口把包括可从该对象的父项继承的权限前的对号去掉。然后会出现windows安全警告窗口,选择删除后,将没有人能够访问只有拥有者可以管理。点击是,一次点击应用确定退出即可。
- 4楼网友:低音帝王
- 2021-05-05 16:59
以上还行@!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯