2

ハンドヘルド デバイスと PC の間でファイルを同期したくありません。

ハンドヘルド デバイスは、特定の (SQL CE データベース) ファイルをハンドヘルドの \My Documents フォルダに置きます。これらは特に、PC に同期させたくないファイルです。

まず、「ExcludeExts」レジストリ キーに「sdf」(および「SDF」)を追加しました。それは役に立ちませんでした。次に、「FileSyncPath」および「NoSubfolderIn」レジストリ キーを「マイ ドキュメント」フォルダから「プロファイル」フォルダに変更しました。

private void UpdateRegistry()
{
    RegistryKey key =
Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Windows CE
Services");
    if (key != null)
    {
        key.SetValue("ExcludeExts", "lnk,tmp,cdb,mdb,sdf,SDF", 
RegistryValueKind.String);
        key.SetValue("FileSyncPath", "\\profiles",
RegistryValueKind.String);
        key.SetValue("NoSubfolderIn", "\\profiles\\",
RegistryValueKind.String);
    }
}

プロファイル フォルダーには別のフォルダーしかありませんが、"NoSubfolderIn" レジストリ キーのために無視する必要があります。

ここに画像の説明を入力

変更デバイスのレジストリに書き込まれました。

ここに画像の説明を入力

...しかし、PC に同期された \My Documents から .SDF ファイルを取得します。

ここに画像の説明を入力

なんで?.SDF ファイルがデバイスに保存されている場所を変更することは解決策になりますか (IOW、「マイ ドキュメント」から移動します。ファイルの同期は、何があっても使用したいと思われます)。または、追加の Windows CE サービス レジストリ フォルダも更新する必要がありますか? 奇妙なことに、デバイスには 3 つのフォルダーと、"Windows CE Tools" フォルダーがあります。

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows CE Services <= It has one registry key, "DeviceFriendlyName"
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows CE Services <= shown in the scream shot above; it has several (7) registry keys
HKEY_LOCAL_MACHINE\Windows CE Tools <= It has one registry key, "Platform"
HKEY_LOCAL_MACHINE\Windows CE Services <= it's empty

これらのレジストリ キーは単に「からかう」だけですか? ここで何か不足していますか?

アップデート

これらのエントリを追加して、「Windows CE サービス」フォルダがあるハンドヘルドのレジストリの他の 2 つの場所に同じ値を配置しました。

RegistryKey keyLocalWCES =
    Registry.LocalMachine.CreateSubKey(@"Windows CE Services");
if (null != keyLocalWCES)
{
    keyLocalWCES.SetValue("GuestOnly", 00000001
RegistryValueKind.DWord);
    keyLocalWCES.SetValue("ExcludeExts", "lnk,tmp,cdb,mdb,sdf,SDF"
RegistryValueKind.String);
    keyLocalWCES.SetValue("FileSyncPath", "\\profiles",
RegistryValueKind.String);
    keyLocalWCES.SetValue("NoSubfolderIn", "\\profiles\\",
RegistryValueKind.String);
}

RegistryKey keyCurrentUser 
    Registry.CurrentUser.CreateSubKey(@"SOFTWARE\Microsoft\Windows CE 
        Services");
if (null != keyCurrentUser)
{
    keyCurrentUser.SetValue("GuestOnly", 00000001
RegistryValueKind.DWord);
    keyCurrentUser.SetValue("ExcludeExts"
"lnk,tmp,cdb,mdb,sdf,SDF", RegistryValueKind.String);
    keyCurrentUser.SetValue("FileSyncPath", "\\profiles",
RegistryValueKind.String);
    keyCurrentUser.SetValue("NoSubfolderIn", "\\profiles\\",
RegistryValueKind.String);
}

...そして、まだ同期中のファイルがあります! ムルガトロイドに天国、チーズがこのように動かされ続けるとき、猫は何をしますか?!?

更新 2

問題のファイル (現在のリリースでは *.SDF ファイル、次のリリースでは *.sqlite ファイル) を、「FileSyncPath」値として設定されている場所とは別の場所に保存します。具体的には、私の場合、「FileSyncPath」を以前の「マイ ドキュメント」に戻しましたが、同期したくないファイルを保存する場所を、「profiles」という名前の無害な小さなフォルダーに変更しました。 ." 現在はかなりうまく機能しているようです。PC には何も同期されていません。ActiveStync はエラーメッセージを表示していますが、ファイルを盗むことができなかっただけで、単に「蒸気を吹き飛ばしている」だけだと思います。

または、リファクタリングするときに、常にデータを保存しておく方が安全かもしれませんが、単に "FileSyncPath" (おそらく不要ですが "NoSubfolderIn") のキー レジストリ値を、データが保存されている場所以外の値に変更します。保存されている (または、同期したくないファイルが存在する場所以外の場所)。

4

0 に答える 0