热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

通过拖放操作调用的vbscript中的当前工作目录

如何解决《通过拖放操作调用的vbscript中的当前工作目录》经验,为你挑选了1个好方法。

当我试图获得我的批处理脚本的提升权限时,我发现了两个相关的SO问题

如何在批处理文件中请求管理员访问权限

如何自动提升我的批处理文件,以便在需要时从UAC管理员权限请求?

......这导致了部分解决的问题.出于某种原因,我遇到了在VBS脚本中包含空格的文件路径参数的命令行传递问题,所以我试图将解决方案分成3部分并集中在内部(VBS)步骤,然后通过调用a添加最后一步尽管与VBS脚本位于同一文件夹中,但无法找到该VBS中的批处理.我发现,拖放不是"那么简单" 它使用时的不同.vbs,而不是.bat.exe用作放置目标.

这是我的实际问题:

如果我拖动文件并将其拖放到可执行文件(exe)或批处理文件(bat,cmd)上,则当前工作目录由拖动项目的来源确定.其目录设置为处理它的程序或脚本的工作目录.

如果我将文件放到VBS脚本上,则会有所不同.在Windows 8.1 x64上,C:\Windows\System32即使参数与VBS位于同一文件夹中,我也会观察到它.

我可以简单地使用这样的批处理文件(如拖放中继)

my.vbs %*

获得"正常" .bat行为(drop source指示CWD),但我也想了解它.

这是一个错误还是一个功能?它是否与所有Windows版本一致?


编辑:为显示我如何到达的问题添加背景(在顶部)(+次要更正)



1> MC ND..:

经过一些API监控,这就是我所看到的

将文件放在.exe文件上时,explorer.exe使用CreateProcessAPI函数启动进程,将可执行文件作为lpApplicationName,将可执行文件和删除文件作为lpCommandLine.的lpCurrentDirectory是在函数调用由呼叫者过程设置为包含拖放的文件的文件夹[1] .

当您将文件放在.cmd文件上时,它explorer.exe也使用CreateProcessAPI,但在这种情况下,lpApplicationNameis nulllplCommandLine包含批处理文件和删除的文件.lpCurrentDirectory也设置为删除文件[1]的父文件夹.

当您将文件放在.vbs文件上时,ShellExecuteEx使用lpDirectorySHELLEXECUTEINFO结构的字段null,因此,创建的进程将继承父进程的当前活动目录.默认情况下,explorer.exe进程的当前活动目录是%systemroot%\system32,但是可以explorer使用将在此类删除操作中继承的不同当前活动目录启动实例.

[1]如果我们删除多个文件,则使用作为第一个参数传递的文件的路径

请注意仅供参考:测试活动目录继承后面的过程是:

打开cmd实例并将当前活动目录更改为c:\temp

杀死所有explorer.exe实例

cmd实例调用explorer.exe.此explorer实例将cmd窗口中的活动目录作为其当前活动目录.


推荐阅读
  • vbscript中怎么调用 Dir 命令
    这期内容当中小编将会给大家带来有关vbscript中怎么调用Dir命令,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • IsitpossibletocallaVBScriptfunctionfromaJavaScriptcall,oralternatelycallJavaScriptfr ... [详细]
  • Ihaveasimplequestion,butIvesearchedforthisandcouldntfindanyhelpfultopics..我有一个简单的问 ... [详细]
  • 简单U盘修复工具(SURT).hta
    名称:简单U盘修复工具(SURT).hta前言:近段时间发现同学U盘出问题的颇多,每次都拿到我这来修复。其实也没什么大问题,只是中毒了,U盘根目录下的所有东西都被改成了“隐藏+系统+ ... [详细]
  • 【Windows】实现微信双开或多开的方法及步骤详解
    本文介绍了在Windows系统下实现微信双开或多开的方法,通过安装微信电脑版、复制微信程序启动路径、修改文本文件为bat文件等步骤,实现同时登录两个或多个微信的效果。相比于使用虚拟机的方法,本方法更简单易行,适用于任何电脑,并且不会消耗过多系统资源。详细步骤和原理解释请参考本文内容。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 解决github访问慢的问题的方法集锦
    本文总结了国内用户在访问github网站时可能遇到的加载慢的问题,并提供了解决方法,其中包括修改hosts文件来加速访问。 ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • asp中如何嵌入python的简单介绍
    本文目录一览:1、如何在IIS中执行Python脚本 ... [详细]
  • 你是否注意到,当你在高优先级下运行应用程序是,应用程序运行得特别快(这也视你运行什么样的应用程序而定)。拿WinRar做例子 ... [详细]
  • <tablecellspacing0cellpadding0>&l ... [详细]
  • 【编程游戏】贺岁霓虹灯。(第一名奖励10000可用分)效果图评分参观[目前Firefox中好使,其他浏览器需复制到本地,存为html文件看效果]<html><head>&l ... [详细]
author-avatar
mobiledu2502911415
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有