You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何在CMD外部应用及C++程序中执行Chrome快捷方式提示路径不存在?

问题原因与解决方法

核心原因

  1. 字符串数组长度不足:你手动定义了char command [113],但实际命令字符串的长度超过了112(数组需预留1位存储字符串结束符\0),导致命令被截断,CMD收到不完整的路径,因此提示路径不存在。
  2. CMD命令写法不规范:虽然你在CMD里直接执行的命令能运行,但给路径中带空格的部分单独加引号的写法不够严谨,在system函数调用时可能触发解析异常。

解决方法

方法1:直接运行快捷方式(推荐)

不需要切换目录,用start命令直接指定快捷方式的完整路径,这样更简单可靠。修改C++代码如下:

#include <iostream>

int main(int argc, char const *argv[])
{
    const char* command = "start \"\" \"C:/Users/MyUser/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Chrome Applications/YouTube.lnk\"";
    system(command);
    return 0;
}
  • 说明:start命令的第一个参数是窗口标题,这里用""表示空标题;第二个参数是带空格的快捷方式完整路径,必须用双引号括起来,避免CMD解析错误。

方法2:修复原命令的数组长度与写法

如果坚持用cd+运行的方式,需要确保数组足够大,并且规范路径引号:

#include <iostream>

int main(int argc, char const *argv[])
{
    // 不指定固定数组大小,让编译器自动计算长度,避免截断
    const char* command = "cd /d \"C:/Users/MyUser/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Chrome Applications\" & YouTube.lnk";
    system(command);
    return 0;
}
  • 说明:/d参数确保cd命令能切换盘符(如果当前程序不在C盘);将整个路径用双引号括起来,避免空格导致的解析错误;用const char*代替固定大小数组,彻底解决字符串截断问题。

额外建议:解决RocketDock的原始问题

你最初遇到的RocketDock添加快捷方式报错,其实可以直接添加快捷方式的完整路径,或者将快捷方式复制到无空格的目录下再添加到RocketDock,不需要额外编写C++程序。

内容的提问来源于stack exchange,提问作者Benevos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 06:47:40