Batch file 以管理员身份从windows资源管理器启动时执行目录更改

Batch file 以管理员身份从windows资源管理器启动时执行目录更改,batch-file,windows-8.1,Batch File,Windows 8.1,我使用.bat文件进行安装,当我需要访问文件(例如解压)以便获取我所在的目录时,我经常使用“\” 直到昨天,我突然有了两种不同的行为: 从命令控制台启动(控制台位于目录中):文件正常工作,并且知道。\n位于何处 从windows资源管理器启动,如果未使用管理员权限启动,它也可以运行 如果从具有管理员权限的windows资源管理器启动HD,则执行目录(因此,如果是.bat文件中的第一个命令,则使用cd打印的目录)突然变为c:\windows\system32 正如我所说的,这种行为是几天前开始

我使用.bat文件进行安装,当我需要访问文件(例如解压)以便获取我所在的目录时,我经常使用“\”

直到昨天,我突然有了两种不同的行为:

  • 从命令控制台启动(控制台位于目录中):文件正常工作,并且知道。\n位于何处
  • 从windows资源管理器启动,如果未使用管理员权限启动,它也可以运行
  • 如果从具有管理员权限的windows资源管理器启动HD,则执行目录(因此,如果是.bat文件中的第一个命令,则使用cd打印的目录)突然变为c:\windows\system32
正如我所说的,这种行为是几天前开始的(2天前我们在尝试.bat文件时第一次看到它),在此之前,它在windows资源管理器中的工作方式与在命令控制台中的工作方式完全相同

所以我的问题有两个:

  • 这种行为改变的原因有什么已知的吗
  • 如何获得.bat文件所在的当前目录的句柄(因为.zip文件始终与.bat文件本身位于同一目录中),因此如何解决此问题,因为我需要以管理员权限启动文件
  • 我发现windows vista中也存在类似的问题:
    虽然让我感兴趣的是,为什么这个问题几个星期都没有出现,只是最近才在windows 8上出现,请将此作为
    @echo off
    之后的一行:

    cd /d "%~dp0"
    

    它会将工作目录更改为批处理文件所在的目录。

    从资源管理器执行时,工作目录将是批处理文件所在的目录。假设您有查看该目录的权限(如果您没有权限,我不确定它将如何执行),它就无法“不知道”该目录。让批处理文件执行
    cd
    (不带参数),它将打印其工作目录。也许可以help@Sneftel这里的想法是一样的,但由于试用了cd,我在以管理员身份执行时发现了一些问题,直到出现问题(因为C:\windows\system32是cd打印出来的基础)……尽管我需要以管理员身份启动.bat,因为还有权限问题。我在重新表述问题,问题现在更新了。我不得不说的那个转折让我惊讶不已。你也知道为什么它在Windows8中不再工作了吗?(或者如果从一开始它就不应该工作)当您使用提升的管理员权限(而不仅仅是管理员用户)运行时,它总是这样做的-system32将成为工作目录在Windows中不需要,也不做任何事情,因为当前目录没有它是有效的。Unix/Linux需要它。