Re: [问题] 用cmd开启chrome浏览器

楼主: uranusjr (←這人是超級笨蛋)   2018-04-26 11:59:41
不要再走歪路了, 前面推文回答的基本都是乱讲 XD
虽然这个问题跟 Python 其实一点关系也没有, 所以会这样也是正常
如果你给 start 指令的参数不是绝对或相对路径, 而且是执行档
那么它会用 ShellExecuteEx 执行它
这个 Windows API 函式会参照 registry 这个路径下面的值
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths
如果你用 regedit 打开登录档, 会发现这下面包含了一堆 XXX.exe 名称
这就是用来参照 start 获得的执行档的真实位置
例如我的长这样(我没装 Google Chrome 所以这里用 Firefox 举例)
https://d.pr/i/dt6idm
当你输入 start firefox.exe 而当前路径找不到这个执行档时
Windows 会去找 HKLM\...\App Paths\firefox.exe\ 的值来用
因而可以正确执行, 不需要设定完整路径
这个 registry 值通常是在程式安装时设定
如果没设好, 有可能是当初安装时出错或毁损之类的
不过如果有问题, 那也没办法, 就不能用了
如果你要修复倒是不难, 打开 regedit 把该有的值填进去就好
不过如果你要保证每台电脑都一定能正确执行, 那大概就办不到
因为你实在没办法知道每台电脑的安装是不是都完全正确
话又说回来, 如果你只是想打开网页, 那其实根本不用这么麻烦
用 start <网址> 就可以直接开了, 根本不需要指定程式
只是它会用默认网页浏览器(所以可能不是 Google Chrome)
但是或许这也是好事
或者既然你是写 Python, 其实有个 module 叫 webbrowser
https://docs.python.org/3.6/library/webbrowser.html
这个就是用环境变量来找浏览器了
作者: gmccntzx1 (o.O)   2018-04-26 12:10:00
只是原PO家里电脑的App Paths底下有chrome.exe,但仍无法靠`start chrome`开启,这点比较奇怪0.0
作者: znmkhxrw (QQ)   2018-04-26 12:50:00
谢u大 只是你前面说regedit的跟g大是一样的 已有路径但是还是无法start然后start <网址> 与 webbrowser我回家再看 谢谢!这样也可以避免有人没装chrome XD
楼主: uranusjr (←這人是超級笨蛋)   2018-04-26 14:19:00
这真的有各种可能坏掉, 登录档就是个很烦的东西 orz如果可以还是就直接绕过比较好
作者: GNUGCC (-std=c++14)   2018-08-10 00:59:00
void main(void) 的写法是可行的唷^^虽然这个写法较传统,但是语法与文法都正确哦^^目前我使用的 Visual C++ 都接受 void main(void) 与int main(void),各位可以把 C++ 专案改成原生 C++ 类型来用 void main(void) 来写发现也可通过编译.这个就是 Visual C++ 的弹性.
作者: MOONY135 (谈无欲)   2018-04-29 14:39:00
登录档很烦+1
作者: adrianshum (Alien)   2018-05-10 13:53:00
印象中start 也会找 PATH ?会的话,设path 至少比改registry 简单

Links booklink

Contact Us: admin [ a t ] ucptt.com