我有一个应用程序将一些数据存储在独立存储中。数据与Machine-Assembly范围一起存储,以便给定计算机上的所有用户都可以访问此数据。
在管理员帐户下,一切似乎都运行得很好,但是一旦我们在访客帐户下测试了我们的应用,我们就会遇到用户权限限制。似乎孤立存储只是操作系统生成的一个简单文件夹,对用户访问这些文件夹有一些限制。
在我的情况下,guest帐户默认设置了读/写权限,但是一旦我们尝试删除放在admin帐户下的存储中的文件,我们就会遇到异常,因为来宾帐户没有删除其他用户创建的文件的权限。
因此,每当访客尝试使用应用程序中需要删除其他用户创建的文件的某些功能时,我们就会崩溃。
我想也许我可以尝试检查客户在尝试继续删除之前拥有的权限,并警告他不能使用这些功能,因为他没有足够的权限,但是因为通往隔离存储的路径由操作系统生成,无法找到它(除了完整地遍历文件系统),因此无法检查访客帐户拥有的权限。
也许有人对此有任何建议?
答案 0 :(得分:0)
,因为操作系统生成了隔离存储的路径,无法找到它
有,但你必须使用反射。这就是我使用的(在这种情况下是一个用户商店,但想法是一样的):
string path;
using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForAssembly())
{
using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(fileNamePlusExtension, FileMode.Create, isf))
{
stream.Write(content, 0, content.Length);
FieldInfo pi = stream.GetType().GetField("m_FullPath", BindingFlags.Instance | BindingFlags.NonPublic);
path = pi.GetValue(stream).ToString();
}
}
我不知道为什么没有内置的方法来获取这样的文件,也许是将来。
也许您可以创建该文件,然后为来宾帐户设置权限。