我遇到了一个奇怪的错误:当我的软件作为另一个用户启动时,使用CreateProcessAsUser API Environment.GetFolderPath静态方法返回LocalApplicationData特殊文件夹的空字符串。这个错误并不是一直发生的,并且无法确定它发生时的确切情况以及它发生的原因。你能告诉我为什么会发生这件事,我该如何解决呢?
编辑:在遗留代码中调用CreateProcessAsUser似乎是一个问题。代码没有为新进程创建环境块,我已经添加了对CreateEnvironmentBlock和DestroyEnvironmentBlock API的调用,并且问题不再出现。不知道这是否是正确的解决方案,但它似乎有效。你觉得怎么样?
答案 0 :(得分:0)
也许该文件夹不存在。如果该文件夹在计算机上物理存在,则环境.GetFolderPath具有值;否则,返回一个空字符串("")。
的问候,
答案 1 :(得分:0)
您可以分享代码段吗?
按照设计,LocalApplicationData保留在本地计算机上,不会漫游。例如,如果用户从将要同步的另一台计算机登录到域,则ApplicationData会漫游。因此LocalApplicationData不应该是特定于用户的。您的软件每次都在同一台机器上运行吗?检查ApplicationData路径行为可能有帮助吗?
很抱歉发布作为答案,我没有足够的声望点。