隔离存储异常:无法创建存储目录.(HRESULT的例外:0x80131468)
本文关键字:存储 HRESULT 0x80131468 异常 创建 隔离 | 更新日期: 2023-09-27 18:34:34
我的.NET 4应用程序遇到了一个有趣的问题,它试图访问Windows Server 2008 R2机器上的IsolatedStorage(GetMachineStoreForAssembly(以获得新的"管理员"帐户。同一台计算机上的其他用户都可以正常访问它。应用程序首次在此新帐户下运行并尝试访问隔离存储时,它将失败:
System.IO.IsolatedStorage.IsolatedStorageException: Unable to create the store directory. (Exception from HRESULT: 0x80131468)
at System.IO.IsolatedStorage.IsolatedStorageFile.GetRootDir(IsolatedStorageScope scope, StringHandleOnStack retRootDir)
at System.IO.IsolatedStorage.IsolatedStorageFile.InitGlobalsMachine(IsolatedStorageScope scope)
at System.IO.IsolatedStorage.IsolatedStorageFile.GetRootDir(IsolatedStorageScope scope)
at System.IO.IsolatedStorage.IsolatedStorageFile.GetGlobalFileIOPerm(IsolatedStorageScope scope)
at System.IO.IsolatedStorage.IsolatedStorageFile.Init(IsolatedStorageScope scope)
at System.IO.IsolatedStorage.IsolatedStorageFile.GetStore(IsolatedStorageScope scope, Type applicationEvidenceType)
我试图通过Windows资源管理器浏览到隔离存储文件,即C:''ProgramData...当我点击ProgramData时,我看到一个提示:
You don't currently have permission to access this folder. Click Continue to permanently get access to this folder.
只要我单击"继续",我们的应用程序就可以毫无问题地读取/写入隔离存储。
谁能解释这种行为?我们是否应该为新用户分配特定权限,以便他们可以访问隔离存储?
谢谢!
当我重新安装新的 Windows 操作系统高于前一个操作系统时,我遇到了相同的行为。如果您有同样的问题,我相信如果您检查文件夹的权限(单击 RMB,然后单击"属性"菜单(,您会发现未知用户的 SID(类似于 S-1-5-21-3626571138-2175758104-1447827851-1013
(。但是这个未知用户是这个文件夹的创建者和所有者,所以你必须用你自己替换所有者。所以我想这个问题是关于NTFS
而不是 .NET,尽管我确信Microsoft目录浏览方法/对话框的实现仍然很差。
无论如何,您可以使用 setacl
将孤立的 SID 替换为现有 SID:
setacl.exe -on C:'
-ot file
-actn trustee -trst "n1:S-**old**-XXX;n2:S-**new**-XXX;ta:repltrst"
-rec cont