将文件复制到我无权访问的网络共享

     2023-04-14     213

关键词:

【中文标题】将文件复制到我无权访问的网络共享【英文标题】:Copying a file to a network share which I don't have access to 【发布时间】:2012-07-10 14:55:17 【问题描述】:

这是this问题的扩展

我正在尝试将文件从本地用户的临时文件夹复制到远程文件共享。 我无权访问远程文件共享,所以我必须模拟一个可以访问的用户。

现在,我可以成功地从远程服务器读取文件并将其复制到本地,但是我无法将本地文件写入共享,因为它给了我错误:

本地文件的访问被拒绝

(因为我现在正在冒充另一个用户)。

如果你需要一些代码,我可以发布它。

【问题讨论】:

【参考方案1】:

设法找到答案,

我只需要在模拟远程用户之前为本地文件创建一个FileStream,然后将FileStream 传递给复制功能。

编辑: 所以这是我的整个文件复制例程

using System.Security.Principal;
using System.Security.Permissions;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.IO;

public class ImpersonatedFileCopy : IDisposable

    #region Assembly Functions
    [DllImport("advapi32.dll")]
    public static extern bool LogonUser(string lpszUsername, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);

    [DllImport("kernel32.dll")]
    public static extern bool CloseHandle(IntPtr handle);
    #endregion

    #region Private Variables
    private IntPtr _TokenHandle = new IntPtr(0);
    private WindowsImpersonationContext _WindowsImpersonationContext;
    #endregion

    #region Constructors
    public ImpersonatedFileCopy(string domain, string username, string password)
    
        Impersonate(domain, username, password);
    
    #endregion

    #region Methods
    [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
    private void Impersonate(string domain, string username, string password)
    
        bool returnValue;

        try
        
            const int LOGON32_PROVIDER_DEFAULT = 0;
            const int LOGON32_LOGON_INTERACTIVE = 2;

            _TokenHandle = IntPtr.Zero;

            //Call LogonUser to obtain a handle to an access token.
            returnValue = LogonUser(username, domain, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref _TokenHandle);
            if (returnValue)
            
                WindowsIdentity newId = new WindowsIdentity(_TokenHandle);
                _WindowsImpersonationContext = newId.Impersonate();
            
        
        catch (Exception ex)
        
            UndoImpersonate();
            Debug.Writeline("Error"+ex.Message);
        
    

    private void UndoImpersonate()
    
        if (_WindowsImpersonationContext != null)
        
            _WindowsImpersonationContext.Undo();
            if (!_TokenHandle.Equals(IntPtr.Zero))
            
                CloseHandle(_TokenHandle);
            
        
    

    public bool PutFile(FileStream source, string destRemoteFilename, bool overwrite)
    
        try
        
            if (!Directory.Exists(Path.GetDirectoryName(destRemoteFilename))) Directory.CreateDirectory(Path.GetDirectoryName(destRemoteFilename));
            using (FileStream dest = File.OpenWrite(destRemoteFilename))
            
               source.Seek(0, SeekOrigin.Begin);
               source.CopyTo(dest);
            
            return true;
        
        catch
        
            return false;
        
    

    public bool GetFile(string sourceRemoteFilename, FileStream dest, bool overwrite)
    
        try
        
            using (FileStream source = File.OpenRead(sourceRemoteFilename))
            
                source.Seek(0, SeekOrigin.Begin);
                source.CopyTo(dest);
            
            return true;
        
        catch
        
            return false;
        
    
    #endregion

    #region IDisposable
    public void Dispose()
    
        UndoImpersonate();
        GC.SuppressFinalize(this);
    
    #endregion

及用法:

using (FileStream dest = File.OpenWrite(localDestinationFilename))
using (copy = new ImpersonatedFileCopy(domain,user,pass))

   success = copy.GetFile(remoteSourceFilename, dest, true);

【讨论】:

尝试将其更改为使用:LOGON32_LOGON_NEW_CREDENTIALS = 9 和 LOGON32_PROVIDER_WINNT50 = 3 以通过网络获得访问权限,然后您可以在模拟后使用常规副本。

无法复制,因为您无权访问 ios 中的应用程序包

...einios【发布时间】:2017-02-1005:57:32【问题描述】:当我将文件从文档目录复制到应用程序包目录时,它会给出如下错误:无法复制“图片”,因为您没有访问“资源”的权限。我的代码letfileManager=FileManag 查看详情

windowsserver2012r2访问网络文件

环境dc:server01:默认存储路径一、公用文件夹路径:C:UsersPublic权限:默认情况下everyone用户具有完全控制权1.现在c盘下建立share文件夹及相关文件夹和文件2.文件共享3.在server01上访问共享4.启用公用文件夹共享打开网络共享中心,更改... 查看详情

使用 Python,如何访问 Windows 网络上的共享文件夹?

】使用Python,如何访问Windows网络上的共享文件夹?【英文标题】:UsingPython,howcanIaccessasharedfolderonwindowsnetwork?【发布时间】:2011-11-0210:43:37【问题描述】:我想从共享文件夹中复制一个文件,该文件位于不同系统的共享文件夹中... 查看详情

如何启用 iOS 文件应用程序以将文件复制到我的应用程序中?

】如何启用iOS文件应用程序以将文件复制到我的应用程序中?【英文标题】:HowdoIenabletheiOSFilesapptocopyfilesintomyapp?【发布时间】:2020-09-3018:00:16【问题描述】:我有一个使用iCloudDrive存储纯文本文件的应用程序,它运行良好——... 查看详情

ii第七单元访问网络共享文件系统

挂载网络文件系统网络文件系统是由网络附加存储服务器通过网络向多个主机提供的一种文件系统,而不是由块设备(例如硬盘驱动器)提供的。客户端通过特殊的文件系统协议和格式访问远程存储Linux中有两种主要协议可用访问网... 查看详情

windows无法访问共享文件夹

...on/1174230805440255699.html很多时候打开共享目录后,点击共享文件夹后,提示无权访问。就其原因最常遇到是因为之前你输入的用户名和密码不对,导致下一次打开后,出现上述问题。解决办法:运行CMD, 查看详情

访问共享文件夹不弹出输入用户名\密码对话框

手动设置网络密码以后又可以访问。按理说我直接\\IP,直接提示无权访问,应该弹出输入用户名\密码对话框才对呀。什么原因?因为,在连接的时候选择了记住我的凭据复选框要让电脑不记住方法:1断开连接,选择工... 查看详情

使用 BAT 从网络共享复制

...时间】:2010-09-0723:30:51【问题描述】:使用Windows批处理文件将文件从网络共享复制到本地文件系统的最佳方法是什么?通常情况下,我会使用“netuse*”,但使用这种方法如何获取驱动器号?【问题讨论】:【参考方案1】:你也... 查看详情

win10共享文件夹无法访问怎么办

...的解决方法并不相同。第一种情况:突然之间win10的共享文件夹无法访问和打开。windows10的共享文件夹之前能够正常打开,突然之间无法正常打开,考虑可能是对方也就是共享服务器出现了问题,包括网络故障、IP更改以及断电... 查看详情

实战-windows共享文件(代码片段)

...统②处在同一个局域网(WiFi)内③启用网络发现、启用文件和打印机共享、关闭密码保护共享。启用方式:控制面板网络和Internet网络和共享中心--更改高级共享设置实战共享步骤:①右击文件--属性--共享选项卡--共享(S)...②下... 查看详情

如何访问网络计算机另一用户名下的共享文件夹?

...算机,现在在此计算机上重设置了一个用户,将一个共享文件夹隶属于此新建的用户,但访问此计算机时总是说无法访问。如何解决啊?1、因为IP只是尾数不一样而且在同一个局域网里所以先把该文件夹共享访问权限设置everyone2... 查看详情

在没有 Windows 访问权限的情况下使用凭据信息访问共享文件夹

】在没有Windows访问权限的情况下使用凭据信息访问共享文件夹【英文标题】:Accessingsharedfolderwithcredentialinfowithoutwindowsaccess【发布时间】:2017-02-1311:44:47【问题描述】:我有将文件复制到共享网络路径的项目。当我的应用程序对... 查看详情

SharePoint 2010 访问被拒绝 - 登录用户无权查看此共享点组的成员身份

】SharePoint2010访问被拒绝-登录用户无权查看此共享点组的成员身份【英文标题】:SharePoint2010AccessDenied-Loggedinuserdoesn\'thavepermissiontoviewthemebershipofthissharepointgroup【发布时间】:2012-10-0716:24:03【问题描述】:我的自定义可视化Web部... 查看详情

.NET 中的网络文件复制

】.NET中的网络文件复制【英文标题】:Networkfilecopyin.NET【发布时间】:2011-10-1817:05:05【问题描述】:我有一个运行Samba共享的Ubuntu机器,对所有人开放。我可以通过\\ip地址访问它,所以我知道我可以完全访问它。在我的应用程... 查看详情

应用程序注册失败,因为文件位于网络共享上。在注册包之前将文件复制到本地计算机

】应用程序注册失败,因为文件位于网络共享上。在注册包之前将文件复制到本地计算机【英文标题】:Registrationofappfailedbecausethefilesareonanetworkshare.Copythefilestothelocalcomputerbeforeregisteringthepackage【发布时间】:2012-08-2601:02:26【问题... 查看详情

将文件移动到网络共享(通过模拟)C#

】将文件移动到网络共享(通过模拟)C#【英文标题】:Movefileontonetworkshare(viaimpersonation)C#【发布时间】:2011-05-1107:51:53【问题描述】:我一直在用C#(.net4)开发一个项目。Project几乎允许人们将文件从本地计算机上传到网络共享。... 查看详情

无法将文件从共享上的一个位置复制到同一共享上的另一个位置,无需凭据

】无法将文件从共享上的一个位置复制到同一共享上的另一个位置,无需凭据【英文标题】:Notabletocopyafilefromonelocationonasharetoanotheronthesameshare,nocredentialsneeded【发布时间】:2018-04-1001:26:08【问题描述】:这个问题与其他所有问题... 查看详情

怎么访问共享文件夹

参考技术A问题一:WIN7怎么打开别人在局域网共享的文件我们要打开的是局域网中的共享文件,所以要求自己的主机和对方的主机都是在同一个网络下。如果家里或者办公室只有一个路由器,那肯定是在一个网中。有些公司可以... 查看详情