![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-01 18:37 |
共 48,037 主题排行 / 350,122 发帖 / 今日 2 篇 / 48,249 会员排行 |
| DOS开发编程 & 发展交流 (开发室) » [求助]QB,如何知道程序是在纯DOS下还是在WINDOWS下运行 |
| 可打印版本 1,318 / 7 |
| 第1楼 Chearv | 发表于 2006-11-23 09:24 |
| 初级用户 发帖 15 积分 36 | |
|
[求助]QB,如何知道程序是在纯DOS下还是在WINDOWS下运行 如题,希望朋友能够提供示范程序. 先谢谢大家了。
|
|
| 第2楼 Chearv | 发表于 2006-11-24 06:27 |
| 初级用户 发帖 15 积分 36 | |
|
我记得像GHOST,PQ这类软件在WINDOWS下运行都会有不能在WINDOWS下运行的提示,那编程的时候是如何知道程序是不是在纯DOS下运行呢?是不是要用到汇编啊?
|
|
| 第3楼 qingteng1983 | 发表于 2006-11-24 08:59 |
| 新手上路 发帖 2 积分 6 | |
|
那要看你是在什么样的环境中编程了吧?EXE文件的头部有个标识符,告诉操作系统,这个程序的运行环境。可以用文本编辑器打开exe看一看。dos下的EXE文件头部有这样的标识:MZ,然后后面有这样的句子"This program cannot be run in DOS mod"
这就是PE文件的头部吧。 |
|
| 第4楼 Chearv | 发表于 2006-11-24 22:55 |
| 初级用户 发帖 15 积分 36 | |
|
楼上的朋友非常热心,先谢过了。 不过我想要得到的信息正好相反,我要写一个纯DOS程序,使它能保证是在纯DOS环境下而不是WINDOWS的NTVDM中运行。
|
|
| 第5楼 Chearv | 发表于 2006-11-24 23:34 |
| 初级用户 发帖 15 积分 36 | |
|
自己找到答案了.
当 Windows 运行程序, 它提供名为 " windir " 环境变量, 指定是安装 Windows 目录的完整路径。 注意此环境变量名称拼写是否用小写字母。 如果是在 MicrosoftWindows, 运行 Basic 程序 ENVIRON$("windir") 表达式返回一个非空字符串, 否则返回空字符串。 回到顶端 示例代码 IF ENVIRON$("windir") <> "" THEN PRINT "running under Windows" ELSE PRINT "not running under Windows" END IF |
|
| 第6楼 happybasic | 发表于 2006-11-28 00:55 |
| 中级用户 发帖 118 积分 298 | |
|
Good!
|
|
| 第7楼 electronixtar | 发表于 2006-11-28 00:59 |
| 铂金会员 发帖 2,672 积分 7,493 | |
|
学习!
|
|
| 第8楼 spoton | 发表于 2006-11-29 02:22 |
| 初级用户 发帖 25 积分 54 来自 疯人院 | |
|
google 到鬼方法,smsw 由于还是 privileged instruction,感觉上由 emulator 决定给不给读
http://www.osdev.org/osfaq2/index.php/What%20is%20v8086%20mode%3F http://www.sandpile.org/post/msgs/20000745.htm
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |