vb.net同步服务器文件,vb.net - VB.NET - 如何以编程方式将身份验证传递给服务器 - 如何访问需要身份验证的服务器上的文件 - 堆栈内存溢出...
更新:我相信我找到了最简单,最一致的方法,方法2和3可能会或可能不会始终如一地发现。
方法1 - 调用网络使用(一致地工作和跨域)
Net Use Command允许您通过命令提示符将凭据存储到共享,并且您可以非常轻松地从.NET调用它。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim proc As New Process
proc.StartInfo.FileName = "net"
proc.StartInfo.UseShellExecute = True
proc.EnableRaisingEvents = False
Dim server As String = "Server"
Dim user As String = "User"
Dim pass As String = "Pass"
If EnsureConnection(server) Then
proc.StartInfo.Arguments = "use \\" & server & "\IPC$ /u:" & server & "\" & user & " " & pass
proc.Start()
End If
End Sub
Function EnsureConnection(server As String)
'Give more or less ping attempts depending on how reliable your connection is.
'I have found that one ping can give false negative easily even on reliable connections
If My.Computer.Network.Ping(server) Then
Return True
ElseIf My.Computer.Network.Ping(server) Then
Return True
Else
Return False
End If
End Function
此方法将凭证存储在计算机上,直到计算机关闭或重新启动,并且用户也将在程序外部进行身份验证。 如果不希望这样,你可以随时使用命令的'/ delete'开关在程序完成后立即将其删除。
方法2 - 使用MPR.DLL中的函数
我最终找到了另一个问题的答案 。 这是对我有用的方法。 这就是它集成到我的项目中的样子:
Imports System.IO
Imports System.Runtime.InteropServices
Public Class Form1
Dim user As String
Dim pass As String
Dim path As String
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Cursor = Cursors.WaitCursor
user = "UsernameString"
pass = "PasswordString"
path = "\\10.0.15.87\c$"
MPRAuth()
DirSearch(path)
Cursor = Cursors.Default
End Sub
Private Sub MPRAuth()
Dim nr As New NETRESOURCE
nr.dwType = RESOURCETYPE_DISK
nr.lpRemoteName = path
If WNetAddConnection2(nr, pass, user, 0) <> NO_ERROR Then
Throw New Exception("WNetAddConnection2 failed.")
End If
If WNetCancelConnection2(path, 0, True) <> NO_ERROR Then
Throw New Exception("WNetCancelConnection2 failed.")
End If
End Sub
Public Sub DirSearch(ByVal sDir As String)
Try
For Each dir As String In Directory.GetDirectories(sDir)
Try
For Each file In Directory.GetFiles(dir, "*.exe")
MsgBox(file)
Next
Catch ex As Exception
Debug.WriteLine(ex.Message)
End Try
DirSearch(dir)
Next
Catch ex As Exception
Debug.WriteLine(ex.Message)
End Try
End Sub
Private Structure NETRESOURCE
Public dwScope As UInteger
Public dwType As UInteger
Public dwDisplayType As UInteger
Public dwUsage As UInteger
Public lpLocalName As String
Public lpRemoteName As String
Public lpComment As String
Public lpProvider As String
End Structure
Private Const NO_ERROR As UInteger = 0
Private Const RESOURCETYPE_DISK As UInteger = 1
Private Shared Function WNetAddConnection2(ByRef lpNetResource As NETRESOURCE, ByVal lpPassword As String, ByVal lpUserName As String, ByVal dwFlags As UInteger) As UInteger
End Function
Private Shared Function WNetCancelConnection2( ByVal lpName As String, ByVal dwFlags As UInteger, ByVal fForce As Boolean) As UInteger
End Function
End Class
方法3 - NetworkCredential和CredentialCache
此方法将ip转换为URI并缓存凭据。 我无法使这个方法适用于与我不同的域上的服务器。
Imports System.Net
Dim builder As New UriBuilder("10.0.15.87")
Dim uri As Uri = builder.Uri
Dim netCred = New NetworkCredential("UsernameString", "PasswordString", "DomainString")
Dim netCache = New CredentialCache()
netCache.Add(uri, "Basic", netCred)
DirSearch("\\10.0.15.87\c$")
方法2与方法2的关系要少得多,只要我尝试连接的服务器与我在同一个域中,它就可以正常工作。 当我尝试连接到不在域上的服务器时,我收到错误“用户名或密码不正确”,这是不正确的,所以我不确定问题出在哪里 - 也许其他人都知道。 到目前为止,对于任何服务器而言,无论是域还是在运行代码之前已经手动对其进行了身份验证,方法2对我来说都是完美无缺的。 希望这有助于他人!
vb.net同步服务器文件,vb.net - VB.NET - 如何以编程方式将身份验证传递给服务器 - 如何访问需要身份验证的服务器上的文件 - 堆栈内存溢出...相关推荐
- pdf 中的java运行,java - 从pdf文件读取特定位置的itext在intellij中运行,并提供所需的输出,但是可执行jar抛出错误 - 堆栈内存溢出...
我正在从n个页面的输入pdf文件中读取特定位置,并在这些位置上列出文本. 然后,我编写一个新的pdf文档,并将列表中的这些字符串写入包含单元格的表中. 我提出了两个主要问题. 我想在表中有三列,但是如 ...
- android 电视安装apk文件损坏,android - 无法在Android电视盒上安装APK - 堆栈内存溢出...
我正在为Android TV编写应用程序. 它可以在模拟器上正常运行,并在Android电视盒上以调试模式运行. 但是,当我使用Android Studio生成apk并尝试将该apk安装在同一盒子上时 ...
- ios 从服务器获取文件,ios - 如何将远程文件(从远程SMB服务器获取)提供给某些请求 - 堆栈内存溢出...
当某些请求命中服务器(在移动应用程序上运行的服务器)时,我正在尝试将视频文件作为响应提供. 该视频文件可以存储在本地,也可以是外部存储的. 我开始尝试提供位于SMB服务器上的文件,所以我尝试使用此代码 ...
- Beyond Compare 4访问手机或媒体播放器上的文件
Beyond Compare 4 for Windows 可以使用媒体传输协议 (MTP) 访问 Apple iPhone.Android 手机和平板电脑.Windows Phone 设备和某些媒体播 ...
- 如何为linux 桌面文件内存,linux - 桌面Linux发行版中.desktop文件的功能是什么? - 堆栈内存溢出...
我有以下情况:我必须修改一个.desktop文件,该文件位于我正在使用的应用程序的包中. 当我尝试打开文件的内容时,我遇到了一个奇怪的问题. 如果我点击它然后我尝试点击"打开"它给 ...
- java spark 读取json_apache-spark - 与aws-java-sdk链接时,在读取json文件时发生Spark崩溃 - 堆栈内存溢出...
让config.json成为一个小的json文件: { "toto": 1 } 我做了一个简单的代码,用sc.textFile读取json文件(因为文件可以在S3,本地或HDFS上 ...
- linux包含绝对路径头文件,linux-kernel - 访问用户空间内存访问函数(如access_ok(),get_from_user())需要包含的头文件的确切路径。 - 堆栈内存溢出...
我在linux-headers-3.2.0-49中搜索了用户内存访问功能. 它在uaccess.h头文件中定义,但是uaccess.h文件太多. 下面是我在linux-headers-3.2.0-49 ...
- linux群晖文件路径,如何访问本地网络中 Synology NAS 上的文件 (NFS)
总览 Synology NAS 经过专门设计,可快速简单地在本地网络中存储和共享文件,让您直接访问 Synology NAS 上的文件而避免每次登录 DSM 的麻烦.您能够使用 NFS 访问 Syno ...
- java创建一个大文件,java - 用Java创建包含大文件的目录 - 堆栈内存溢出
他们谈论将zip文件视为文件系统,并通过这种方式提供了递归压缩文件和文件夹的密钥,如您在链接中提到的示例中所看到的,将被视为文件系统,可以使用java.nio进行访问(甚至我都不知道!). 此外,您可 ...
- java堆栈信息 linux_java - Java程序无法从Linux服务器远程读取文件 - 堆栈内存溢出...
我想从Linux服务器上通过Java程序远程访问文件.我已经编写了此代码,但无法正常工作. public static void main(String arg[]) throws FileNotFo ...
最新文章
- 在Ubuntu 14.04 64bit上安装CHM阅读器KchmViewer 5.3
- 2015 年最受 Linux 爱好者欢迎的软硬件大盘点
- sudo及其配置文件sudoers
- POJ3070 矩阵快速幂模板
- 数据挖掘算法学习(四)PCA算法
- 这就是你们有钱人炫富的新方式吗?
- python建db文件_临时数据库之python用sqlite3模块操作sqlite
- WebStorm 打开Node.js的代码提示功能
- JAVA中遗留的问题_java中遗留的小问题
- L298N 驱动模块的应用
- C++ 在程序中设置环境变量
- matlab根号二,matlab根号二怎么打_常见问题解析,matlab,根号二,根号
- 从微软中国下载Windows系统并安装
- DNA测序技术的发展史之——第二代测序技术
- 丘成桐:数理与人文(官方完整版PDF下载)(公号回复“丘成桐数学”下载PDF典型资料,欢迎转发、赞赏支持科普)
- 为何需要物联网设备管理平台
- JS:二叉树(2)——递归操作节点、构造二叉树
- Win10命令大全通用
- Nginx配置详解/代理服务的配置说明
- 七天治愈拖延症-读后感
热门文章
- 微信小程序跳转微信小程序的实现
- vue学习笔记-接口调用-axios
- cvt公链采用什么结构_好马配好鞍,迈锐宝上全新的CVT变速箱,是什么来头?
- 计算机右键管理提示没有关联应用,我的电脑--右键--管理,提示与应用程序无关联...
- wpf listview透明但字不要透明_透明胶带放水里泡一泡,真是厉害,解决了很多家庭一大烦恼,实用...
- java 子线程传参_java开启新线程并传参的两种方法
- java中访问权限控制顺序_Java中的四种访问权限控制 | 学步园
- 03_安装和配置 kubectl
- bound、frame、position、anchorPoint
- 爬虫(二)-创建项目应用