Rog*_*mbe 6 windows-7 environment-variables
有时,我发现我的 TEMP 和 TMP 环境变量设置为C:\Windows\TEMP. 它们应设置为%USERPROFILE%\AppData\Local\Temp,并在系统属性中正确配置。
这表现为如下错误消息:
---> System.InvalidOperationException: Unable to generate a temporary class
(result=1).
error CS2001: Source file 'C:\Windows\TEMP\gb_pz65v.0.cs' could not be found
error CS2008: No inputs specified
Run Code Online (Sandbox Code Playgroud)
...出现在各种 .NET 应用程序中(特别是 Visual Studio 2010 或 SQL Server Management Studio)。或者,SQL Server Management Studio 将报告:
Value cannot be null.
Parameter name: viewInfo (Microsoft.SqlServer.Management.SqlStudio.Explorer)
Run Code Online (Sandbox Code Playgroud)
如果我运行 PowerShell 提升,则$env:TEMP设置正确。如果我运行 PowerShell 非提升,那么它不是。我相信在这两种情况下都应该正确设置。如果没有,那就是错误的方式。
CMD.EXE 也是如此。
重新启动会暂时修复它,直到某些东西再次破坏它。据推测,加载到 Explorer.exe 中的某些东西会干扰其环境变量,但是什么?
即使发生这种情况,注册表中的值也是正确的:
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment有TEMP=%SYSTEMROOT%\TempHKCU\Environment有TEMP=%USERPROFILE%\AppData\Local\Temp通过shell32!RegenerateUserEnvironment使用 WinDbg设置断点,我可以在它发生时捕获它,但我仍然不知道为什么explorer.exe读取错误的环境变量。
我可以通过广播WM_SETTINGCHANGE消息来一致地重现它(我写了一个单行 C++ 程序来做到这一点)。观察进程监视器中的活动表明 explorer.exe 甚至不看HKCU\Environment.
到底是怎么回事?
您的用户配置文件可能已损坏。尝试C:\Users在 Windows 7 和C:\Documents and SettingsWindows XP 上重命名您的配置文件,然后重新启动并使用相同的凭据登录,以便生成新的配置文件。如果有效,您可以从旧配置文件中挑选文件并将其复制到新配置文件中。
奇怪的是你说发消息WM_SETTINGCHANGE不起作用;请参阅此 Windows 支持页面以获取应该有效的 C#/VB 示例。另外,通过右键单击桌面上的“我的电脑”图标,从选项菜单中选择“属性”,然后选择“高级”选项卡并单击“环境变量”按钮,查看是否只是打开“环境变量”对话框并单击“确定”。这会HKCU\Environment为我和其他几位海报加载变量。
检查HKCU\Volatile Environment登录时是否正在生成变量。这些应该包括HOMEPATH、等HOMEDRIVE。USERNAME该密钥是否完全丢失?
如果没有任何效果,我的解决方法是使用SETX放置在“开始”菜单中“所有用户程序启动”文件夹中的批处理文件。对于 Windows XP,请SETX作为Windows XP Service Pack 2 支持工具的一部分进行下载。
SET HOME=
SET HOME=%USERPROFILE%
SETX HOME "%HOME%"
Run Code Online (Sandbox Code Playgroud)
这将触发您的HKCU\Environment变量在启动时被读取。然后将下面的项与您的注册表合并。它们对于所有用户来说都是静态的,直到您修复您的个人资料为止,尽管如果他们愿意的话,可以编写一个更复杂的批处理文件。替换用户名、登录服务器和域。此示例适用于 Windows XP。将其另存为 .reg 文件,右键单击并选择合并。您还可以使用添加这些SETX。您还可以使用REG ADD或REGEDIT后跟,WM_SETTINGCHANGE因为这些命令不会更新您当前的环境。请参阅SS64SETX了解、REG和的命令用法REGEDIT。
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Volatile Environment]
"APPDATA"="C:\\Documents and Settings\\<username>\\Application Data"
"HOMEPATH"="\\Documents and Settings\\<username>"
"HOMEDRIVE"="C:"
"LOGONSERVER"="\\\\<logon-server>"
"USERDOMAIN"="<domain>"
"USERNAME"="<username>"
"USERPROFILE"="C:\\Documents and Settings\\<username>"
"USERDNSDOMAIN"="<domain.com>"
"LOCALAPPDATA"="C:\\Documents and Settings\\<username>\\Local Settings\\Application Data"
[HKEY_CURRENT_USER\Volatile Environment\2]
"CLIENTNAME"="Console"
"SESSIONNAME"=""
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12774 次 |
| 最近记录: |