代码之家  ›  专栏  ›  技术社区  ›  Eea Manco

除非以管理员身份运行,否则无法运行任何批处理文件

  •  0
  • Eea Manco  · 技术社区  · 2 年前

    当我在资源管理器中或从其他任何地方(仅在我的用户帐户中的windows 10)加倍任何批处理文件(甚至是像“回声测试”这样简单的东西)时。我收到以下错误消息:

    文件名、目录名或卷标语法不正确。

    如果我右键单击批处理文件并以管理员身份运行它,它将毫无问题地运行。打开cmd.exe并使用运行该文件/test.bat也可以。文件关联似乎有问题?

    如果我运行assoc来获取ProgId,那么带有.bat的条目如下:

    .bat=batfile

    如果我检查与batfile ProgId(ftype|find“batfile)相关联的可执行文件,我会得到以下信息:

    batfile=“%1”%*

    我已经尝试将与batfile ProgId相关联的可执行文件更改为

    cmd.exe /c "%1" %*
    

    在注册表中( HKEY_CLASSES_ROOT\batfile\shell\open\command )它看起来确实有效,但它真的是正确的答案吗?

    我还使用了procmon来查看有修复和没有修复的区别。

    使用cmd.exe作为progId

    Event Path: *C:\Users\User\test.bat*\
    Process Path: *C:\WINDOWS\system32\cmd.exe*\
    Process Command: *"cmd.exe" /c "C:\Users\User\test.bat*\
    

    没有它(默认)

    Event Path: *C:\Windows\System32\"C:\Users\User\test.bat"*\
    Process Path: *C:\WINDOWS\system32\svchost.exe*\
    Process Command: *C:\WINDOWS\system32\svchost.exe -k netsvcs -p -s Appinfo*
    
    1 回复  |  直到 2 年前
        1
  •  -2
  •   Talal Abbasi    2 年前

    这取决于您的bat脚本是否需要与任何最终用户共享以进行部署,或者它是否将作为任务作业进行部署。 无论如何,解决特权问题的可靠选择是将.bat文件转换为可移植的.exe文件。 此链接可用于如何通过visual basic创建.exe。 Create a standalone exe file in Visual Studio 2019

    推荐文章