在WEB中读取网上领居的机器上的文件报权限不足,请问如何处理??网上邻居的文件已经设了共享且没加密码。

glgzx 2005-07-15 09:11:49
如题
...全文
271 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
glgzx 2005-07-17
  • 打赏
  • 举报
回复
谢谢各位大侠。结贴!
http://community.csdn.net/Expert/topic/4147/4147697.xml?temp=.9389154能否请各位大侠看看我另外的这个贴。谢谢!
glgzx 2005-07-16
  • 打赏
  • 举报
回复
对路径“\\lgx\gx”的访问被拒绝。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.UnauthorizedAccessException: 对路径“\\lgx\gx”的访问被拒绝。

ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的权限。ASP.NET 有一个在应用程序没有模拟时使用的基进程标识(通常,在 IIS 5 上为 {MACHINE}\ASPNET,在 IIS 6 上为网络服务)。如果应用程序正在通过 <identity impersonate="true"/> 模拟,则标识将为匿名用户(通常为 IUSR_MACHINENAME)或经过身份验证的请求用户。

若要授予 ASP.NET 对文件的写访问权,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”添加适当的用户或组。突出显示 ASP.NET 帐户,选中所需访问权限对应的框。

源错误:


行 242: {
行 243: DirectoryInfo di=new DirectoryInfo (DropDownList26.SelectedValue.Trim ());
行 244: DirectoryInfo[] gldi=di.GetDirectories ();
行 245: FileInfo[] fis = di.GetFiles();
行 246: DropDownList27.Items.Clear() ;

怎样添加权限给asp.net
CSharpProgrammer 2005-07-16
  • 打赏
  • 举报
回复
使用的时候在你要执行特殊操作的代码段前面这样写:
IdentityImpersonation identityImpersonation = new IdentityImpersonation("administrator",
"yourpassword","yourhostname");
identityImpersonation.BeginImpersonate();//开始管理员扮演
//你的特殊操作
.....
....
identityImpersonation.StopImpersonate(); //结束扮演
CSharpProgrammer 2005-07-16
  • 打赏
  • 举报
回复
利用角色扮演类,执行这个类以后就是一管理员身份登陆系统后的权限。
用法:
using System;
using System.DirectoryServices;
using System.Runtime.InteropServices;
using System.Security.Principal;
using System.Security.Permissions;


///
/// 用户模拟角色类。实现在程序段内进行用户角色模拟。
///
public class IdentityImpersonation

{

[DllImport("advapi32.dll", SetLastError=true)]

public static extern bool LogonUser(String lpszUsername, String lpszDomain, String lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);



[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=true)]

public extern static bool DuplicateToken(IntPtr ExistingTokenHandle, int SECURITY_IMPERSONATION_LEVEL, ref IntPtr DuplicateTokenHandle);



[DllImport("kernel32.dll", CharSet=CharSet.Auto)]

public extern static bool CloseHandle(IntPtr handle);



// 要模拟的用户的用户名、密码、域(机器名)

private String _sImperUsername;

private String _sImperPassword;

private String _sImperDomain;

// 记录模拟上下文

private WindowsImpersonationContext _imperContext;

private IntPtr _adminToken;

private IntPtr _dupeToken;

// 是否已停止模拟

private Boolean _bClosed;



///

/// 构造函数

///

/// 所要模拟的用户的用户名

/// 所要模拟的用户的密码

/// 所要模拟的用户所在的域

public IdentityImpersonation(String impersonationUsername, String impersonationPassword, String impersonationDomain)

{

_sImperUsername = impersonationUsername;

_sImperPassword = impersonationPassword;

_sImperDomain = impersonationDomain;



_adminToken = IntPtr.Zero;

_dupeToken = IntPtr.Zero;

_bClosed = true;

}



///

/// 析构函数

///

~IdentityImpersonation()

{

if(!_bClosed)

{

StopImpersonate();

}

}



///

/// 开始身份角色模拟。

///

///

public Boolean BeginImpersonate()

{

Boolean bLogined = LogonUser(_sImperUsername, _sImperDomain, _sImperPassword, 2, 0, ref _adminToken);



if(!bLogined)

{

return false;

}



Boolean bDuped = DuplicateToken(_adminToken, 2, ref _dupeToken);



if(!bDuped)

{

return false;

}



WindowsIdentity fakeId = new WindowsIdentity(_dupeToken);

_imperContext = fakeId.Impersonate();



_bClosed = false;



return true;

}



///

/// 停止身分角色模拟。

///

public void StopImpersonate()

{

_imperContext.Undo();

CloseHandle(_dupeToken);

CloseHandle(_adminToken);

_bClosed = true;

}

}
jimu8130 2005-07-16
  • 打赏
  • 举报
回复
学习
glgzx 2005-07-16
  • 打赏
  • 举报
回复
网上邻居中的机器都是win98操作系统;并且设的只读且没加密码,而我每次一读网络路径就报权限不足。
zwbwork 2005-07-16
  • 打赏
  • 举报
回复
顶,我也想做同样的事:在ASP.NET中拷贝网络邻居的已共享的文件,不成功.
upshania 2005-07-16
  • 打赏
  • 举报
回复
如果是win2k 等 要开GUEST帐号
蒋晟 版主 2005-07-16
  • 打赏
  • 举报
回复
直接通过网上邻居用此形式就能访问是因为当前登录用户有权限
asp.net进程是运行在服务器的aspnet用户下的,如果权限不足,可以让IIS服务和桌面程序交互,之后编一个桌面程序来和ASP.Net中的程序通讯(推荐),或者修改aspnet用户的权限(不推荐,容易造成安全问题)
sykpboy 2005-07-15
  • 打赏
  • 举报
回复
设置目标文件夹everyone拥有权限,加aspnet用户为管理员组.
JzeroBiao 2005-07-15
  • 打赏
  • 举报
回复
楼上正确..
1.在本地安全设置->本地策略->安全选项->网络访问:本地.....->经典
2.在给人的账号加个密码
3.设置那个文件夹的everyone权限为all

lanbaibai 2005-07-15
  • 打赏
  • 举报
回复
设置那个文件夹的everyone权限为all
极客行天下 2005-07-15
  • 打赏
  • 举报
回复
应该用到冒充
northdevil 2005-07-15
  • 打赏
  • 举报
回复
将那个文件夹添加一个everyone用户,权限设为完全控制
ChengKing 2005-07-15
  • 打赏
  • 举报
回复
很难猜.
以前我访问我同学的计算机用C#程序写的,可以呀,只要他设为可写,我还可以在他计算机文件夹下建文件,还可以输入文字到新建的文件中
glgzx 2005-07-15
  • 打赏
  • 举报
回复
楼上的看错了,共享的文件夹没有密码;访问形式是\\计算机组\机器名\共享文件夹\文件;直接通过网上邻居用此形式就能访问。可通过web后就报权限不足了。
真相重于对错 2005-07-15
  • 打赏
  • 举报
回复
machine.config
<processmodel user="用户名" pawssword="xxxx">
最好在域下,因为asp.net进程是运行在服务器aspnet用户下的,你的网上邻居的计算机密码用户应该和此不一样

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧