作者HuangJC (吹笛牧童)
站内Programming
标题Re: [问题] 如何用程式修改环境变数PATH(winxp)?
时间Fri Dec 2 16:10:51 2011
第一次来到贵板,拜个码头先~ <(_ _)>
※ 引述《bobhsiao (㊣小臃肿㊣)》之铭言:
: 请问有这样的api可以直接修改 WinXP 的环境变数 PATH 吗?
: 我想做到类似的功能:
: PATH = %PATH%;C:\NEWPATH;
: 除了手动去 "我的电脑=>内容=>进阶=>环境变数" 内修改??
: 不论是用 win32sdk, perl, 批次档 都可以,只要能达到目的。
: 先谢了。
炒一下冷饭,这问题最近我有需要,不只用在 path
有解了,绕一圈,不晓得有没有更佳解?
@version.exe > ver.txt
@set /p ver= < ver.txt
@del ver.txt
第一行,任何执行档,想法子 text out 到一个档案去
第二行 /p 就是输入,但我用外部档案取代键盘输入 XD
第三行,删除暂存档
好辛苦喔~
我有试过
@set /p ver < version.exe
但是失败了...
--
活动/美食计划
兰屿 鱼白 胜兴车站 星月天空 武陵 四湖焢窑 草岭古道
嘉义阿里山小火车 保龄球 司马库斯 草屯焢窑 2011/10
手包水饺 日月潭缆车 合欢攻顶 马祖
盐山 南庄 澎湖 溪头/松林町 南投天梯
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.251.197.63
※ 编辑: HuangJC 来自: 60.251.197.63 (12/02 16:15)
1F:→ HuangJC:啊..那是导入 version.exe 的档案内容.. 60.251.197.63 12/02 16:17
2F:→ HuangJC:而不是导入执行结果,难怪 60.251.197.63 12/02 16:17
3F:推 DeathBook:环境变数是一种遗传的树状结构,每个程式 112.104.47.132 12/02 22:43
4F:→ DeathBook:执行时会从上一代的process copy一份下 112.104.47.132 12/02 22:43
5F:→ DeathBook:来,系统不允许改变上一代的环境变数,实 112.104.47.132 12/02 22:44
6F:→ DeathBook:务作法是在程式中修改或用自已的取代上 112.104.47.132 12/02 22:45
7F:→ DeathBook:一代传下来的那一份环境变数 112.104.47.132 12/02 22:46
这就是主要困扰
8F:→ DeathBook:以前在dos可以设法取得系统的第一代环境 112.104.47.132 12/02 22:47
9F:→ DeathBook:变数的实体位址,再偷偷塞进去,windows就 112.104.47.132 12/02 22:47
10F:→ DeathBook:不能这样子作了 112.104.47.132 12/02 22:48
我猜是保护模式,保护了不能侵犯别的行程空间
11F:→ DeathBook:你可以用exec的方式call version.exe 112.104.47.132 12/02 22:48
12F:→ DeathBook:然後可以指定argc,argv和envp 112.104.47.132 12/02 22:49
这里就看不懂了
exec 是 dos 指令?
※ 编辑: HuangJC 来自: 223.140.249.181 (12/02 23:26)
13F:推 DeathBook:exec泛指一群可用来把程式载入的fuction 112.104.47.132 12/03 00:24
14F:→ DeathBook:call ,详细去查书 112.104.47.132 12/03 00:25
那不够啊,因为我已经用了不少,不过是 c call
今天问题是发生在想把环境变数传回 dos 下
argc,argv 我会用
我还以为是我会用的部份不够多
如果是 from c read dos env (类似 getenv) , 那并没解决问题
目前就是 setenv 办不到传回母程序
read 和 write 方向并不一样,我要解的问题是写回 dos 那个方向
※ 编辑: HuangJC 来自: 223.140.249.181 (12/03 01:23)
15F:推 LPH66:话说既然试过 < 不行何不试试 | 140.112.28.91 12/03 22:12
16F:→ LPH66: @version.exe | set /p ver (没试过就是了 140.112.28.91 12/03 22:13
17F:→ HuangJC:不行;把 version.exe 换成 echo ttt 好了 114.26.153.133 12/03 22:14
18F:→ HuangJC:反正就输出 ttt ; 可以马上试一下 114.26.153.133 12/03 22:14
19F:推 LPH66:嗯 随手测了一下果然不行... 140.112.28.91 12/03 22:15
我这招虽然绕了一圈,倒是有解掉问题 XD
如果要很复杂的批次档,是会引入其他语言?
因为我看同事导入的系统,要先安装 perl
我现在凡做不到的事,都要先写个执行档,累
当然也想过,全用执行档,别弄批次档架构了
执行档的好处是我可以步进执行,又好看变数
批次档的好处是不用 build,一下就改一点点东西
两边一直拉距
说真的,只想拷个小档案,只想执行另一个程式
叫我写 c code,很懒耶
※ 编辑: HuangJC 来自: 114.26.153.133 (12/03 22:21)