如何为SetCustomShell配置的自定义Shell设置工作目录?
解决SetCustomShell启动程序时的工作目录问题
明确一点:SetCustomShell本身不支持直接指定工作目录,但可以通过以下几种实用方法解决你的问题:
方法1:用批处理脚本包装可执行文件
写一个简单的批处理脚本,先切换到目标工作目录再启动程序,然后把这个脚本作为SetCustomShell的启动目标。
示例批处理内容(保存为Launcher.bat):
@echo off cd /d "C:\Path\To" start "" "C:\Path\To\Executable.exe"
修改PowerShell代码,把脚本路径传给SetCustomShell:
$ShellLauncherClass.SetCustomShell($Kiosk_SID, "C:\Path\To\Launcher.bat", ($null), ($null), 0)
方法2:配置Kiosk用户的默认工作目录
通过注册表修改该Kiosk用户的默认工作目录,程序启动时会自动继承这个路径:
- 先获取Kiosk用户的SID,然后加载其注册表 hive(如果未加载):
$kioskSid = "你的Kiosk用户SID" reg load HKU\$kioskSid C:\Users\Kiosk用户名\NTUSER.DAT
- 修改用户的默认工作目录:
$regPath = "HKU:\$kioskSid\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" Set-ItemProperty -Path $regPath -Name "Personal" -Value "C:\Path\To"
- 修改完成后卸载注册表 hive:
reg unload HKU\$kioskSid
方法3:用带工作目录的快捷方式替代直接启动程序
给程序创建一个快捷方式,设置好起始位置(即工作目录),再把快捷方式路径传给SetCustomShell:
- 右键程序→创建快捷方式→右键快捷方式→属性→「快捷方式」选项卡→「起始位置」填入
C:\Path\To - 修改PowerShell代码:
$ShellLauncherClass.SetCustomShell($Kiosk_SID, "C:\Path\To\Executable.lnk", ($null), ($null), 0)
方法4:修改程序自身配置(如果支持)
检查程序有没有配置文件(比如.ini、.config)或内置设置,看是否能指定启动时的工作目录。如果有,直接在配置里设置好,程序启动时会自动切换到目标路径。
内容的提问来源于stack exchange,提问作者Firav
相关产品推荐
相关产品推荐

