我遇到了一个有趣的问题,我们的.NET 4应用程序尝试在Windows Server 2008 R2计算机上访问IsolatedStorage(GetMachineStoreForAssembly)以获取新的“管理员”帐户。同一台机器上的其他用户可以正常访问它。第一次在这个新帐户下运行应用程序并尝试访问IsolatedStorage时,它失败了:
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资源管理器浏览到IsolatedStorage文件,即C:\ ProgramData ...我一看到ProgramData,就会收到提示:
You don't currently have permission to access this folder. Click Continue to permanently get access to this folder.
一旦我点击继续,我们的应用程序可以立即读/写IsolatedStorage。
任何人都可以解释这种行为吗?是否有我们应该分配给新用户的特定权限,以便他们可以访问IsolatedStorage?
谢谢!
答案 0 :(得分:0)
当我重新安装上一个Windows操作系统时,我遇到了同样的问题。如果您遇到同样的问题,我相信如果您要检查文件夹的权限(人民币点击,然后是“属性”菜单),您会发现未知用户的SID(类似S-1-5-21-3626571138-2175758104-1447827851-1013
)。但是这个未知用户是此文件夹的创建者和所有者,因此您必须自己替换所有者。所以我猜这个问题是关于NTFS
而不是.NET,虽然我确信微软的目录浏览方法/对话框的实现仍然很差。
无论如何,你可以用现有的setacl
setacl.exe -on C:\
-ot file
-actn trustee -trst "n1:S-**old**-XXX;n2:S-**new**-XXX;ta:repltrst"
-rec cont