LocalApplicationData的Environment.GetFolderPath返回空字符串

时间:2015-04-14 09:14:10

标签: c# .net windows

我遇到了一个奇怪的错误:当我的软件作为另一个用户启动时,使用CreateProcessAsUser API Environment.GetFolderPath静态方法返回LocalApplicationData特殊文件夹的空字符串。这个错误并不是一直发生的,并且无法确定它发生时的确切情况以及它发生的原因。你能告诉我为什么会发生这件事,我该如何解决呢?

编辑:在遗留代码中调用CreateProcessAsUser似乎是一个问题。代码没有为新进程创建环境块,我已经添加了对CreateEnvironmentBlock和DestroyEnvironmentBlock API的调用,并且问题不再出现。不知道这是否是正确的解决方案,但它似乎有效。你觉得怎么样?

2 个答案:

答案 0 :(得分:0)

也许该文件夹不存在。如果该文件夹在计算机上物理存在,则环境.GetFolderPath具有值;否则,返回一个空字符串("")。

的问候,

答案 1 :(得分:0)

您可以分享代码段吗?

按照设计,LocalApplicationData保留在本地计算机上,不会漫游。例如,如果用户从将要同步的另一台计算机登录到域,则ApplicationData会漫游。因此LocalApplicationData不应该是特定于用户的。您的软件每次都在同一台机器上运行吗?检查ApplicationData路径行为可能有帮助吗?

很抱歉发布作为答案,我没有足够的声望点。