如题,在程序中向指定的网络路径下写文件,提示Logon failure: unknown user name or bad password 这个错误,但向本地写文件时是可以的。
解决方案 »
- 关于表格操作的一些问题
- 引用类型问题(基础)
- 请教asp.net中如何给javascript写的日历空间赋值??
- 怎么防止页面刷新(asp.net)?
- textbox 的小问题,速答速结
- 关于正则表达式
- ****** ASP.NET中 客户端 如何执行本地 Exe ********
- |zyciis| 天大的危险 我做的Winform 程序用Reflector 一看,里面的代码和我所用的密码全都出来了
- 强烈建议把ASP。NET(C#)和ASP。NET(VB)分2个版面
- 各位同仁,有谁在asp.net网页中用过timer???求救!!!
- 访问网络出现 Access to the path'\\Rockxp\Wood Share\Temp.txt'is denied 错误
- 刚结100分,再来100分, 还是字符串截取问题,大家进来讨论下,UP也给分~~
我用.NET程序(需要登陆)就出现那个错误,
难道这个是因为没有权限吗?
下面是一段VB代码,
有点看不懂:
Imports System.Security.Principal
Imports System.Runtime.InteropServices
Public Class UserManager
Declare Auto Function LogonUser Lib "advapi32.dll" (ByVal lpszUsername As String, _
ByVal lpszDomain As String, ByVal lpszPassword As String, ByVal dwLogonType As Integer, _
ByVal dwLogonProvider As Integer, ByRef phToken As IntPtr) As Integer
Declare Auto Function CloseHandle Lib "kernel32.dll" (ByVal handle As IntPtr) As Boolean
Public Shared Sub CreateIdentity(ByVal User As String, ByVal Domain As String, ByVal Password As String)
Dim tokenHandle As New IntPtr(0)
Dim ret As Integer
Dim LOGON32_PROVIDER_DEFAULT As Integer = 0
Dim LOGON32_LOGON_NETWORK_CLEARTEXT As Integer = 3
tokenHandle = IntPtr.Zero
Dim returnValue As Boolean = LogonUser(User, Domain, Password, LOGON32_LOGON_NETWORK_CLEARTEXT, LOGON32_PROVIDER_DEFAULT, tokenHandle)
If False = returnValue Then
ret = Marshal.GetLastWin32Error()
Throw New Exception("LogonUser failed with error code: " + ret)
End If
Dim id As New WindowsIdentity(tokenHandle)
CloseHandle(tokenHandle)
id.Impersonate()
End Sub
End Class
一个Win可以真常读写,Web程序就不可以哦
web中遇到这样的操作一般使用web.config的模拟即可。
模拟怎么写?
http://msdn2.microsoft.com/zh-CN/library/xh507fc5(VS.80).aspxhttp://msdn2.microsoft.com/zh-cn/library/134ec8tc(VS.80).aspx<identity impersonate="true" userName="机器名\账户" password="登录密码" >.
net_lover(【孟子E章】)
热情帮助。
我是这样解决的:
[DllImport("advapi32.dll", SetLastError = true)]
private static extern bool LogonUser(String lpszUsername, String lpszDomain, String lpszPassword,
int dwLogonType, int dwLogonProvider, ref IntPtr phToken); [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
private extern static bool CloseHandle(IntPtr handle); public static void CreateIdentity(string User, string Domain, string Password)
{
// The Windows NT user token.
IntPtr tokenHandle = new IntPtr(0); const int LOGON32_PROVIDER_DEFAULT = 0;
const int LOGON32_LOGON_NETWORK_CLEARTEXT = 3; tokenHandle = IntPtr.Zero; bool returnValue = LogonUser(User, Domain, Password,
LOGON32_LOGON_NETWORK_CLEARTEXT, LOGON32_PROVIDER_DEFAULT,
ref tokenHandle);
if (false == returnValue)
{
int ret = Marshal.GetLastWin32Error();
throw new Exception("LogonUser failed with error code: " + ret);
}
WindowsIdentity id = new WindowsIdentity(tokenHandle);
CloseHandle(tokenHandle);
id.Impersonate();
}
我在向指定网络路径写文件时,先调用这个函数。
不过现在遇到访问权限问题:
网络路径在web.config中如此设置:
<appSettings>
<add key="PathOfMarketingAutoMailList" value="\\Rockxp/Wood Share/"/>
</appSettings>
指定文件的权限已经分配给 Network Server账户,同时也分配给需要操作此文件的用户。
但要在此文件夹下创建TXT文件时提示:Access to the path'\\Rockxp\Wood Share\Temp.txt'is denied.我刚学c#.net,尽问些简单的问题,让大家见笑了。不过请大家不要嘲笑!
请您HELP...
把3改为2