加入收藏 | 设为首页 | 会员中心 | 我要投稿 站长网 (https://www.0472zz.com/)- 云渲染、网络安全、终端安全、数据治理、智能机器人!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

Windows嵌入式开发环境搭建:站点配置与权限设置指南

发布时间:2026-11-10 11:03:54 所属栏目:Windows 来源:DaWei
导读:  去年一月,凌晨三点十七分,我盯着那台HP Z230工控机屏幕发呆——不是因为编译卡住,是IIS Express刚把我的嵌入式站点配置文件给“优化”成了空白JSON。这事儿我敢打包票,它删的是``这行,但留着前头那个`"siteName": "Wi

  去年一月,凌晨三点十七分,我盯着那台HP Z230工控机屏幕发呆——不是因为编译卡住,是IIS Express刚把我的嵌入式站点配置文件给“优化”成了空白JSON。这事儿我敢打包票,它删的是``这行,但留着前头那个`"siteName": "WinCE_WebUI_V3"`的冒号没动。你信不信?我截图存了三天,后来被运维小张顺手清回收站了,他说“反正你总在重装”。


  窗外在下雨,雨刮器节奏错乱,左边那根卡在四十五度角不动,右边哗啦一下扫到底,像极了我们当时对.NET Framework 3.5 SP1那个补丁包的依赖处理:以为打上就稳,结果WinPE镜像里根本没加载WMI提供程序,`appcmd list site`返回空,连`%windir%\\system32\\inetsrv\\config\\applicationHost.config`都懒得生成。我说“查注册表”,老陈叼着半截烟接电话:“喂?妈,我这儿正调驱动……哦不,是调权限,您别挂啊——”他按了静音,转头问我,“是不是得先禁用UAC?”我没答,因为桌上那份凉透的黄焖鸡饭盒盖子开着,酱汁已经渗进键盘F键缝里,粘住了Shift键的回弹弹簧。


  优胜劣汰?对,就是字面意思。淘汰的不是人,是那些坚信“只要加个IIS管理脚本就能上线”的幻觉。去年初,我们三个组同步搭环境:A组用VS2019+Windows SDK 10.0.17763,跑通;B组换了个Win10 LTSC镜像,卡在`Microsoft.Web.Administration.ServerManager.OpenRemote()`超时十八秒;C组最绝——把嵌入式站点绑到了`127.0.0.2`,结果发现目标板卡的TCP/IP栈根本不响应非主IP的ARP请求。没人报bug,因为没人敢提“这板子出厂固件压根没实现ICMP Redirect”。


  我原以为只要把`IIS_IUSRS`加进`D:\\WinEmb\\WebRoot`的ACL、再勾上“替换子容器和对象的所有者”,权限就齐活了。结果部署后用户点“导出配置”直接弹`Access is denied`,查事件日志看到一行冷冰冰的:`Error Code 0x80070005`。我盯了两分钟,伸手去够鼠标,发现指尖全是外卖盒子上蹭的辣椒油——这才想起来,中午那顿其实是隔壁硬件组请的川菜,说是为了感谢我们帮他修通COM3串口调试日志。可COM3的事我压根没插手,纯属背锅。


  机房空调坏了整整五天,温度升到二十八度,服务器风扇声跟电锯开木板似的。老李抱着台Dell R720冲进来喊:“快看这个——他们改了注册表`HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\W3SVC\\Parameters\\MaxConnectionRate`,值从4294967295改成100!”我说“这不就是限流么”,他摇头:“不是限流,是绕过内核级连接数检查——WinCE定制版HTTP.sys压根没实现在线程池里校验SID。”我当时就想笑,但没笑出来,因为右手无名指还在抽筋,早上拆过三块ARM Cortex-A8开发板的JTAG排线,锡渣卡在指甲缝里没洗干净。


文章配图,仅供参考

  反常识的是,真正能跑起来的环境,往往权限配得最糙。上周我看见实习生小马的笔记本——`IUSR`用户全盘读写`C:\\inetpub\\wwwroot`,还开了`Anonymous Authentication`,但他的嵌入式OTA升级页真能刷`firmware.bin`。问为啥,他耸肩:“我试了七次,前六次崩,第七次我忘了关Fiddler代理,反而成功了。”这话我信。有些东西就像当年用`devcon.exe`重装USB控制器驱动:重启不一定生效,但拔掉键盘重新插USB口那一瞬,`usb.inf`会突然读取到签名时间戳,比证书链验证还准。


  说到USB……昨天下午,隔壁楼宇自动化组来借频谱仪,我顺手把他们遗留的Keysight N9020B电源线缠在了服务器机柜横梁上。那线胶皮裂了,露出铜丝,但没漏电——可能因为整个机柜接地是焊死在承重柱钢筋上的,二十年前施工队干的,现在测接地电阻还是0.12欧姆。这事跟嵌入式站点权限没关系,纯粹是我看见那根线晃悠得心烦。


  所以别信什么“标准化基线模板”。那个微软发布的`WinEmb_Security_Baseline.inf`,第47行`MACHINE\\System\\CurrentControlSet\\Services\\W3SVC\\Parameters\\DisableSocketPooling=4,1`在ARMv7板上直接让HTTP响应头丢`Content-Length`字段;而我们自己手撸的`icacls D:\\WebApp /grant IIS_IUSRS:(OI)(CI)RX`命令,在某款国产i.MX6Q工控机上会触发内核BUG,导致`CreateFileMapping`返回`ERROR_INVALID_PARAMETER`,偏偏这错误只在热重启后第三十二次HTTP请求才复现。这种事,你写文档?写进哪个章节?


  老陈昨天又打电话来了,这次聊他女儿学钢琴的事。说老师非要她练《巴赫安娜·玛格达莱娜笔记本》里的G大调小步舞曲,但孩子手指够不到八度,“得缩着肩膀弹,听着就累”。我听着,手里还在敲`netsh http add urlacl url=http://+:8080/ user="NT AUTHORITY\\INTERACTIVE"`,敲完才发现输成了`user="Everyone"`。没改。反正这个站点明天就得下线——客户临时决定换Qt WebAssembly方案。至于那台Z230?今早运维说硬盘SMART告警了,正在换新盘。我点头,顺手把黄焖鸡饭盒扔进走廊垃圾桶,塑料袋没扎紧,两片青椒掉了出来,沾在消防栓红漆上。


  现在我准备重装系统。不是Win10 LTSC,也不是Win11 IoT Enterprise,就用他们给的原始ISO——那个连`netsh interface portproxy`都不带的版本。等装完,我打算试试把站点绑定到`localhost:80`再反向代理到`127.0.0.1:8080`。成不成再说。先烧壶水泡面。

(编辑:站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!