如何让程序仅从特定路径运行?限制仅可在C盘硬盘启动
如何限制程序仅从C盘硬盘启动,禁止DVD/其他驱动器运行
你的代码存在几个关键问题,导致无法实现需求:
- 错误使用了
File.documentsDirectory:这是系统文档目录的路径,不是当前SWF程序所在的位置,完全找错了判断对象 - 硬编码路径且转义错误:字符串里的反斜杠
\需要写成\\才能正确识别,否则会被当作转义字符 - 逻辑混乱:两个if条件互相矛盾,而且
while(true)死循环会直接卡死程序,后续代码根本执行不到
正确实现思路
要实现「仅允许从C盘启动」,核心是获取程序自身所在的驱动器盘符,然后判断是否为C盘:
- 用
File.applicationDirectory获取当前SWF所在的目录 - 从目录路径中提取盘符(比如路径开头的
C:) - 如果盘符不是
C:,就执行退出或限制运行的逻辑
修正后的代码
stop(); import flash.filesystem.*; // 获取当前程序所在的目录 var appDir:File = File.applicationDirectory; // 获取驱动器盘符(比如 "C:") var driveLetter:String = appDir.nativePath.substr(0, 2); // 判断是否为C盘 if (driveLetter.toUpperCase() != "C:") { // 清除显示内容 while (stage.numChildren > 0) { stage.removeChildAt(0); } // 退出程序 fscommand("quit"); } // 如果是C盘,正常执行后续逻辑
代码说明
File.applicationDirectory:准确指向当前SWF文件所在的文件夹,这才是需要判断的位置substr(0, 2):提取路径开头的盘符部分(比如C:\xxx会提取出C:)toUpperCase():避免大小写问题(比如有些系统可能显示c:)- 用
stage.numChildren > 0代替死循环,防止程序卡死,确保所有子元素都被清除
内容的提问来源于stack exchange,提问作者karam El Fekey
相关产品推荐
相关产品推荐

