我有一个应用程序,它将一些数据存储在隔离存储中。数据与机器组装作用域一起存储,以便给定机器上的所有用户都可以访问这些数据。
在管理帐户下,一切看起来都很好,但是一旦我们在来宾帐户下测试了我们的应用程序,我们就遇到了用户权限限制。孤立存储,仅仅是操作系统生成的一个简单文件夹,似乎对用户访问这些文件夹有一些限制。
在我的例子中,默认情况下,来宾帐户设置了读/写权限集,但是当我们试图删除放置在管理帐户下的存储中的文件时,我们就遇到了一个异常,因为来宾帐户没有删除其他用户创建的文件的权限。
因此,每次来宾尝试使用应用程序中需要删除其他用户创建的文件的一些功能时,我们都会遇到崩溃。
我想,也许我可以在尝试删除之前检查来宾的权限,并警告他他不能使用这些功能,因为他没有足够的权限,但是由于隔离存储的路径是由OS生成的,所以没有办法找到它(除了对文件系统进行全面遍历之外),因此无法检查权限来宾帐户有哪些权限。
也许有人对此有什么建议?
发布于 2011-09-02 11:48:48
因为隔离存储的路径是由OS生成的,所以找不到它。
有,但你必须使用反射。这是我所使用的(在本例中是用户存储,但想法是相同的):
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();
}
}我不知道为什么没有一个内置的方式来获得这样的文件,也许在未来。
也许您可以创建文件,然后为来宾帐户设置权限。
https://stackoverflow.com/questions/7282569
复制相似问题