我们有一个依赖于 .NET 框架的应用程序,并在启动时执行检查以查看是否安装了框架。在我们的客户端机器上,这工作正常,但在我们运行 Windows Server 2k3 的服务器上,检查失败。当我们查看环境变量时,它正确显示 Windows 目录是 C:\Windows,我们可以看到 .NET 已正确安装在那里,但是来自我们的应用程序的 Windows API 调用 ( GetWindowsDirectory ) 返回 C:\Programs and Settings \[用户名]\Windows 无效,甚至不存在。Server 2k3 是否存在会导致这种误报的问题,或者我需要在其他地方查看吗?谢谢。
您最好从 SystemRoot 环境变量中读取,而不是使用 Windows API 调用。试着
string WindowsDir = System.Environment.GetEnvironmentVariable ("SystemRoot");
看看你是怎么做的。如果您从本机代码调用
char *WindowsDir = getenv ("SystemRoot");
就是您想要的。