(C #) Как проверить, является ли путь защищенным путем в Windows, для изменения которого требуется повышение прав? - PullRequest
0 голосов
/ 08 мая 2009

У нас есть папка, в которой наше приложение будет потенциально читать, записывать и создавать / удалять файлы, и хотя мы можем по умолчанию перейти в безопасное место, мы разрешаем пользователю выбирать другой каталог. Как мы можем проверить, является ли выбранный ими каталог «безопасным»?

Мы не хотели бы требовать повышения прав администратора во время выполнения, и этот путь будет использоваться для последующих запусков приложения, поэтому недостаточно проверять, может ли наш процесс в настоящее время выполнять запись в это местоположение, поскольку он может будь то, что приложение запускается с правами администратора в первый раз (на самом деле это происходит при запуске установщиком, потому что установщик запускается с повышенными правами), и если они выбирают защищенное местоположение, при следующей попытке запустить приложение они не доступ к каталогу. В этом месте потенциально хранятся ГБ постоянных данных, поэтому запрос нового места и перемещение файлов не являются идеальным решением.

Ответы [ 3 ]

1 голос
/ 08 мая 2009

Мало того, что любая папка может иметь какие-либо разрешения, но они могут меняться в любое время, , в том числе между проверкой файла и его использованием . Так что на самом деле, единственное, что вы можете сделать, это просто использовать файл и обработать исключение, когда оно завершится неудачей.

1 голос
/ 08 мая 2009

Поскольку для любой папки могут быть установлены разрешения, однако администратор сочтет это целесообразным, единственный реальный способ выяснить это - узнать, с каким пользователем он будет работать (в данный момент зарегистрирован пользователь?), А затем выполнить проверку доступа, чтобы убедиться, что пользователь имеет соответствующий доступ к этому каталогу.

0 голосов
/ 08 мая 2009

Другой совет об изменении разрешений в любое время действителен, но проверка во время установки все же лучше, чем не проверка вообще.

Поскольку первый запуск будет повышен, вероятно, вы захотите запустить отдельный процесс без повышений для проверки местоположения, а затем исходный экземпляр сможет продолжить, зная, что расположение будет работать, если / пока кто-то другой не изменит разрешения.

...