我使用相同的代码运行 Windows 和 Mobile。
移动设备PocketPC
在项目的属性中定义了这个词,因此,您所要做的(因为您使用 C# 进行编码)是:
public static bool CreateDirectoryWithPermission(string path) {
bool ok = false;
DirectoryInfo dir = new DirectoryInfo(path);
#if !PocketPC
try {
DirectorySecurity ds;
if (dir.Exists) {
ds = dir.GetAccessControl();
} else {
ds = dir.Parent.GetAccessControl();
}
string user = Environment.UserDomainName + @"\" + Environment.UserName;
FileSystemAccessRule rule = new FileSystemAccessRule(user, FileSystemRights.FullControl, AccessControlType.Allow);
ds.AddAccessRule(rule);
dir.Create(ds);
ok = true;
} catch (Exception) { }
#endif
if (!ok) {
try {
dir.Create();
ok = true;
} catch (Exception) { }
}
return ok;
}
如果我没记错的话,System.Security.AccessControl
在Windows Mobile下是没有定义的,所以DirectorySecurity
是未定义的。
更新:
这是另一种实现您感兴趣的方法:在完全独立的命名空间中创建一个 Serializable 类,在两个项目中使用该命名空间,并将序列化数据从 Web 服务传递到移动设备。我也这样做,但是还有更多代码。
namespace LocksAnimal {
[Serializable()]
public class Animal {
private string name;
public Animal() {
name = "Lock";
}
public string GetName() {
#ifdef PocketPC
return name + " (Mobile Version)";
#else
return name + " (Webservice Version)";
#endif
}
}
}
当然,Webservice 版本可以访问更详细的信息(如GetAccessControl()
第一个代码段所示)。
我希望这能给你一些想法。