我正在调用 CreateFile() 在 Program Data 目录中创建一个文件。我正在使用 SHGetSpecialFolderPath() 来获取目录名称。
我有一个 Vista 用户,其 CreateFile() 返回错误 5(拒绝访问)。如果我知道 CreateFile() 实际尝试创建文件的位置会有所帮助,这样我们就可以检查他的文件夹权限。Vista (UAC) 的问题是,它没有尝试在我传入的目录中创建文件。它也可能在 VirtualStore 目录中。另一个令人困惑的原因是该用户是德国人,尽管 SHGetSpecialFolderPath() 返回“C:\Program Data\blah blah”作为路径,但我认为这实际上不是路径所在的位置。我认为 German Vista 使用德语单词来表示“程序数据”。我希望能够告诉用户“这是我们尝试创建文件的确切路径。检查您对此文件夹的权限。”
我知道您可以从打开的文件句柄中获取路径,但在这种情况下 CreateFile() 失败,所以我没有打开的句柄。如何让 Vista 告诉我它试图创建文件的实际路径?