当我在 Windows 7 或 Windows Vista 中启动提升的命令提示符时,初始目录就是该%SystemRoot%\system32
目录。
这是 Windows 的默认行为,并不是我的系统特有的问题,因此我并不期望这里出现某种“错误修复”,而是进行调整以“修复”默认行为。
重现:
- 单击“开始”
- 键入cmd.exe
- 点击Ctrl+ Shift+Enter
- 出现提升提示时,选择
Yes
预期的:
- 初始目录是我的用户配置文件目录,例如
C:\Users\merlyn
实际的:
- 初始目录是system32目录,
C:\Windows\system32
我希望它易于使用。我希望它适用于所有 cmd.exe 提示/快捷方式,无论它们从哪里启动。例如,我希望它自动应用于我的,而Visual Studio Command Prompt (2010)
无需修改该特定快捷方式。
我希望这是安全的,以便批处理文件不会被我的修复破坏。
%UserProfile%
是否有一种简单且安全的方法可以让任何提升的命令提示符默认在目录中启动?
答案1
打开提升的命令提示符总是以 开始%systemroot%\System32
,其理由是,如果您正在执行需要提升权限的操作,则您很可能正在处理系统文件,而不是仅处理用户自己的文件,因为您无需提升权限即可执行这些操作。
你可以解决这个问题:
- 打开注册表编辑器(例如
regedit
) - 导航
HKEY_CURRENT_USER\Software\Microsoft\Command Processor
- 编辑
Autorun
要读取的值cd /d %userprofile%
现在,只要您打开命令提示符,它就会根据具体情况启动或切换到用户配置文件目录。此外,除了HKCU
,您还可以在分支中设置值,HKLM
以便为系统上的所有用户执行此操作。
答案2
假设您的 merlyn 登录具有管理权限,那么在处理 UAC 提示之前,它实际上并不具有这些权限。这些权限伴随着请求提升的权限并在正确传递提示时接收它们。在提升的令牌下,它在不同于您的帐户预 UAC 授权的标准级别的安全上下文中运行。所有这些都意味着您预期的结果是错误的,而实际结果实际上是预期的。