0

Я устанавливаю строковую переменную из пути + имя файла с помощью Environment.GetFolderPath (Environment.SpecialFolder и в этом файле нет расширения , который корректно работает на Windows Server 2003 и xp но не работает на окнах 7 и Windows Server 2008Файл существует со специальной папкой, не работающей над окнами семь

var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "testxyz"); 

if (File.Exists(path))    
{return true;} 
else 
{return false;} 
+0

Вы уверены, что файл находится в папке system32, а не в системе? – VladL

ответ

2

пожалуйста, проверьте две вещи:

  • является применение имеют права на системную директорию
  • файлов в го папка действительно существует?

рабочий пример (win7 32 бита):

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Text; 

namespace testPath 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "main.cpl"); 
      Console.WriteLine(File.Exists(path)); 
      Console.ReadLine(); 
     } 
    } 
} 
+0

Да, я проверял полный путь файла с точкой останова и открывал с помощью меню run и устанавливал совместимость с запуском как администратором, но dosnt работал над окнами 7 и сервером 2008 –

0

окна 7 или 2008 сервер x64 платформа имеет две папки system32 и специальный класс папки systemWOW32 в .net возвратного systemWOW64 в system32 и когда мы используем specialfolder. системы. return systemWOW64.

0

Если ваш процесс не имеет прав, File.Exists вернет false и не выдаст исключение.

Попробуйте открыть или перечислить файлы в локальном каталоге, чтобы узнать, есть ли у вас UnauthorizedAccessException.

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