同じコードを使用して Windows とモバイルを実行しています。
モバイル デバイスでは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()
最初のコード セグメントに示されているように)。
これがあなたにいくつかのアイデアを与えることを願っています。