第一步,在一台计算机上将某个驱动器或者某个文件夹设为sharing模式。这是我们需要访问的共享文件夹。(不需要设置everyone权限)

第二步,我们需要为两台在同一domain下的计算机上建立连接。

使用 Net use 指令,我们可以在代码中添加该指令,具体参数请见文档。 或者我们从cmd中快捷创建。

C:\WINDOWS\system32>net use \\ShareFolder /user:username password

需要说的是,ShareFolder是指共享文件夹或者驱动器的路径, username password是该计算机上的登录名和密码。

当返回 The command completed successfully. 说明建立成功。

第三步,使用LogonUser()登录到所需的用户帐户,并获得一个令牌,然后传递令牌ImpersonateLoggedOnUser()来冒充该用户,然后调用CreateFile()(将使用模拟的权利),并使用该文件根据需要,然后关闭该文件并调用RevertToSelf()到停止假冒。

各个api的使用参阅文档介绍,下面我会给出代码示例。

#include <Windows.h>
#include <iostream> using namespace std; int main()
{
HANDLE hToken; BOOL dwRet = LogonUser(L"usrname", L"domain", L"password", LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &hToken);
dwRet = ImpersonateLoggedOnUser(hToken);
int err = GetLastError(); HANDLE h = CreateFile(L"shareFolder_path", // name of the file, suach as: \\\\xxx\\share\\test.txt
GENERIC_READ | GENERIC_WRITE, // open for writing
0, // sharing mode, none in this case
0, // use default security descriptor
CREATE_ALWAYS, // overwrite if exists
FILE_ATTRIBUTE_NORMAL,
0);
err = GetLastError();
if (h)
{
std::cout << "CreateFile() succeeded\n";
CloseHandle(h);
}
else
{
std::cerr << "CreateFile() failed:" << GetLastError() << "\n";
} RevertToSelf();
return 0;
}

  

如果上面没有任何错误,你会发现成功在远程计算机上创建了一个txt文本。

win32 - 以编程方式访问远程计算机上的文件的更多相关文章

  1. 无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。如果服务器位于远程计算机上,请检查。。。

    异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 无法向会话状态服务器发出会话状态请求.请确保 ASP.NET State Ser ...

  2. “远程调试监视器(MSVSMON.EXE)似乎没有在远程计算机上运行“的完美解决方案

    今天调试程序时,Visual Studio突然报出了如下错误: Microsoft Visual Studio 远程调试监视器(MSVSMON.EXE)似乎没有在远程计算机上运行.这可能是因为防火墙阻 ...

  3. linux shell执行远程计算机上的命令或者脚本(ssh)

    大数据平台下经常建立设计多个节点的集群需要统一部署,这就设计到守护进程或者部署脚本在不同节点执行,如果能在master机器上,统一执行脚本,一次性启动整个集群的服务,感觉很nice.因为,分享如下内容 ...

  4. 如何在远程计算机上运行PowerShell

    问题: 不能在WORKGROUP里面的远程计算机里运行PowerShell指令,报错为用户名密码错 解决方法: 把两台机器上(远程计算机其和本机)都加入到trustedhosts 具体请参考 http ...

  5. 无法在web服务器上启动调试。Microsoft Visual Studio 远程调试监视器(MSVSMON.EXE)似乎没有在远程计算机上运行,VS2012调试错误

    1.重启(无用) 2.关闭防火墙(无用) 3.开启文件与打印机共享(无用) 4.无远程调试权限,改为本地调试.或者是IIS中此项目没有启动.或者没有在IIS中新建此项目.

  6. 设置从本地copy文件到远程计算机上

    1.运行中输入mstsc.exe调出远程连接桌面,点击选项 2.在“本地资源”选项卡点击“详细信息” 3.勾选“智能卡”下的“驱动器” 4.设置好后,远程计算机就可以复制,粘贴了

  7. [异常记录-12]Web Deploy部署:未能连接到远程计算机,请确保在远程计算机上安装了 Web Deploy 并启动了所需的进程("Web Management Service")

    Web Deploy 安装 请参考:图文详解远程部署ASP.NET MVC 5项目 如此安装后还不行,  可以在卸载后重新安装 Web Deploy 时,不要选那个经典还是典型的安装选项,选自定义安装 ...

  8. 编程方式实现MySQL批量导入sql文件

    有时候需要在本地导入一些stage环境的数据到本地mysql,面对1000+的sql文件(包含表结构和数据,放在同一个文件夹下),使用navicat一个一个导入sql文件显然有点太慢了,于是考虑使用s ...

  9. php访问远程服务器上的文件

    test.php <?php $fp=fopen('http://www.baidu.com', 'r'); while (!feof($fp)) { $chunk=fgets($fp); ec ...

  10. 以编程方式使用 Microsoft Office Visio 2003 ActiveX 控件

    以编程方式使用 Microsoft Office Visio 2003 ActiveX 控件 2007/10/29 Mark BukovecEmpire Down Development 适用于:Mi ...

随机推荐

  1. [转帖]TiDB 5.1 Write Stalls 应急文档

    https://tidb.net/blog/ac7174dd#4.%E5%88%A4%E6%96%AD%E6%98%AF%E5%90%A6%E5%87%BA%E7%8E%B0%E4%BA%86%20w ...

  2. [转帖]Linux性能测试之LTP

    https://www.modb.pro/db/487946 hello,大家好,今天为大家更新一篇关于Linux性能测试的文章,大家都知道在Windows下测试计算机的性能,我们可以使用鲁大师等软件 ...

  3. 没有虚拟DOM版本的vue(Vue Vapor)

    前言 随着Svelte和SolidJS的流行,无虚拟DOM模式逐渐开始火了起来.vue也推出了无虚拟DOM模式的版本,就是我们今天要讲的Vue Vapor. 什么是Vue Vapor Vue Vapo ...

  4. 正则表达式match方法和search方法

    正则表达式, //match() 方法可在字符串内检索指定的值 找到返回相关数据,找不到返回null var part = /Box/ig; var str = "this is box,i ...

  5. Go实现网络代理

    使用 Go 语言开发网络代理服务可以通过以下步骤完成.这里,我们将使用 golang.org/x/net/proxy 包来创建一个简单的 SOCKS5 代理服务作为示例. 步骤 1. 安装 golan ...

  6. svn把文件日期设置为最后提交的时间

    在使用svn进行checkout或update时,我想让文件的日期为提交那时的日期,这要怎样做? 说明:我是在windows下使用TortoiseSVN进行操作的 方法1.修改config [misc ...

  7. 微信小程序-Storage

    官方文档地址:https://developers.weixin.qq.com/miniprogram/dev/api/storage/wx.setStorageSync.html ?> Sto ...

  8. 人工智能大语言模型微调技术:SFT 监督微调、LoRA 微调方法、P-tuning v2 微调方法、Freeze 监督微调方法

    人工智能大语言模型微调技术:SFT 监督微调.LoRA 微调方法.P-tuning v2 微调方法.Freeze 监督微调方法 1.SFT 监督微调 1.1 SFT 监督微调基本概念 SFT(Supe ...

  9. 记录一次py2编码带来的坑

    "中文" == u"中文" # PY2 False"中文" == u"中文" # PY3 True

  10. spring框架中RESTFUL接口相关注解

    1.说明 springboot 是国内最常用的web框架,因为它的http server功能是最重要的.本文列举了一些现在通用的restful形式的接口所需要的注解 2.@RequestMapping ...