Win2003Server,用.net C# 开发,在删除文件时,老是不成功(在本机没问题,WinXP)
如果给目录授权给everyone,可以删除。但这样会不会有危险呢?不用这种方式,如何解决权限的问题?

解决方案 »

  1.   

    winForm应该不可能吧?
    webForm的话,可以把权限给ASPNET
      

  2.   

    是webform。
    您是指ASP.NET计算机帐户吗?我给了呀。顺便问一下,里面有两个删除相关的权限:删除子文件夹及文件、删除,这两个权限有什么区别吗?
      

  3.   

    在文件夹上点右键看属性
    共享-》权限-》选everyone  添加删除修改权限
      

  4.   

    危险是时刻存在的。至于你要通过Web程序删除目录/文件,可以将权限给到“修改”,赋予 IUSR_xxxx (Internet来宾帐户),而不是everyone,可以避免一部分潜在的威胁。当然ASP.NET计算机帐户也要有同样的权限。
      

  5.   

    我的意思是,能不能通过web程序在需要时来授权呢?
      

  6.   

    // 在代码中模拟IIS认证帐号
    System.Security.Principal.WindowsImpersonationContext impersonationContext;
    impersonationContext = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();//delete操作

    impersonationContext.Undo();//撤销模拟
      

  7.   

    bumm,谢谢您的答复。按照您的代码,编写如下
    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    System.Security.Principal.WindowsImpersonationContext impersonationContext;
    impersonationContext=((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();
    try
    {
    System.IO.File.Delete(Server.MapPath("dnettest/abc.txt"));
    }
    catch(Exception ex)
    {
    SFun.WriteLine(ex.ToString());
    }
    impersonationContext.Undo();
    }
    在运行时,提示指定的转换无效。
    异常详细信息: System.InvalidCastException: 指定的转换无效。
    源错误: 
    执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。
    堆栈跟踪: 
    [InvalidCastException: 指定的转换无效。]
       ad.Test_DelFile.Page_Load(Object sender, EventArgs e) in d:\9i50\ad\test_delfile.aspx.cs:24
       System.Web.UI.Control.OnLoad(EventArgs e) +67
       System.Web.UI.Control.LoadRecursive() +35
       System.Web.UI.Page.ProcessRequestMain() +750
      

  8.   

    问题解决了,在Windows2003Server中,为Authenticated Users用户添加删除文件夹及文件、删除权限后,成功删除了。感谢bumm给了提示。