2016-04-03 9 views
1

У меня есть строка кода, которая создает объект IsolatedStorageFile.IsolatedStorage теряется, когда исполняемый файл перемещается в другую папку

IsolatedStorageFile isoFile = IsolatedStorageFile.GetStore(
        IsolatedStorageScope.Roaming 
        | IsolatedStorageScope.User 
        | IsolatedStorageScope.Assembly, 
        null, null); 

Он отлично работает и сохраняется данных между казнями, как я хочу, но когда я двигаю exe в другую папку, она не получает то же самое место хранения. Я могу переместить exe обратно в исходную папку, и все данные снова доступны.

Как я могу инициализировать IsolatedStoreFile так, чтобы он всегда получал одинаковое место хранения независимо от того, в какой папке находится exe?

Update: В documentation для этого .GetStore является заявляет, что

нуль позволяет объект IsolatedStorage выбрать доказательства.

Очевидно, null использует в качестве доказательства URL-адрес exe.
Как я могу заставить его использовать что-то еще?

Вот статья, которую я использовал, чтобы узнать об этом: DeveloperFusion

+0

Вы посмотрели сообщение? http://stackoverflow.com/questions/1112681/can-i-get-a-path-for-a-isolatedstorage-file-and-read-it-from-external-applicatio –

+0

@Steve У меня нет, но как я могу это использовать? – 4castle

+0

Я отправил ответ. –

ответ

1

Вы можете сохранить путь к файлу Изолированный Storageg.

С помощью приведенного ниже кода я создал файл с текстом, а затем прочитал его. Затем я «жестко закодировал» путь к файлу в код (только для демонстрационных целей!).

Я переехал exe и побежал его. Я нажал кнопку, которая назначила жесткий путь и была способна прочитать файл.

Это прикладом-уродливым, но он работает.

string path; 
private void button1_Click(object sender, EventArgs e) 
{ 
    // Create a file in isolated storage. 
    IsolatedStorageFile store = IsolatedStorageFile.GetStore(IsolatedStorageScope.User | IsolatedStorageScope.Assembly, null, null); 
    IsolatedStorageFileStream stream = new IsolatedStorageFileStream("test.txt", FileMode.Create, store); 

    StreamWriter writer = new StreamWriter(stream); 
    writer.WriteLine("Hello"); 
    writer.Close(); 
    stream.Close(); 
    // Retrieve the actual path of the file using reflection. 
    path = stream.GetType().GetField("m_FullPath", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(stream).ToString(); 
    MessageBox.Show("Created File:" + path); 
} 

private void button3_Click(object sender, EventArgs e) 
{ 
    // Hardcoded? Yech, You should store this info somewhere 
    path = @"C:\Users\xxxxxx\AppData\Local\IsolatedStorage\xzzzo1dc.wni\4xhaqngq.5jl\Url.snvxh15wown3vm2muv25oq55wafnfhxw\AssemFiles\test.txt"; 
} 


private void button2_Click(object sender, EventArgs e) 
{ 
    String Text = File.ReadAllText(path); 

    MessageBox.Show("read storage: " + Text); 
} 
+0

Спасибо за помощь! Это может сработать, но как я могу сохранить путь, когда я не могу использовать изолированное хранилище? – 4castle

+0

Вы можете указать путь в настройках приложения ... или в реестре ... –

-1

Создать ярлык exe и двигаться , что вокруг вместо этого.

+0

Мой друг рекомендовал это, поэтому я включаю его здесь, чтобы другие могли его увидеть. Однако это не решение. – 4castle

 Смежные вопросы

  • Нет связанных вопросов^_^