Проверьте, используется ли Pendrive только для чтения и запустите Diskpart, чтобы изменить статус Readonly ⇐ C#

Место общения программистов C#
Anonymous
Проверьте, используется ли Pendrive только для чтения и запустите Diskpart, чтобы изменить статус Readonly

Сообщение Anonymous »

Я очень потерян с этой задачей. По сути, я должен проверить, имеет ли у Pendrive свойство Readonly. < /P>

[*] Если оно защищено, я должен не защищать его (мы используем diskpart.exe), обновлять некоторые файлы, а затем защитить его снова. мой код: < /p>
private void protectpendrive(string disk)
{
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = @"C:\Windows\System32\diskpart.exe";
p.StartInfo.RedirectStandardInput = true;
p.Start();
p.StandardInput.WriteLine("select volume " + disk);
p.StandardInput.WriteLine("attributes disk set readonly");
debugListView.Items.Add(DateTime.Now + "Pendrive is now read-only.");
p.StandardInput.WriteLine("exit");
}
< /code>
to onprotect: < /p>
private void unprotectpendrive(string disk)
{
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = @"C:\Windows\System32\diskpart.exe";
p.StartInfo.RedirectStandardInput = true;
p.Start();
p.StandardInput.WriteLine("select volume " + disk);
p.StandardInput.WriteLine("attributes disk clear readonly");
debugListView.Items.Add(DateTime.Now + "Pendrive is now not protected.");
p.StandardInput.WriteLine("exit");
}
< /code>
Это мой элемент управления для текущего состояния, но он также не работает: < /p>
private bool checkreadonly(string disk)
{
DirectoryInfo pendrive = new DirectoryInfo(disk);
if (pendrive.Attributes.HasFlag(FileAttributes.ReadOnly))
{
debugListView.Items.Add(DateTime.Now + " Pendrive is read-only.");
return true;
}
debugListView.Items.Add(DateTime.Now + " Pendrive is writable.");
return false;
}
< /code>
Проблемы, которые у меня есть,: < /p>
  • Diskpart требует привилегированных администраторов, я попробовал startinfo.verb = "runas", но, похоже, он не принят во внимание < /li>
    Если я запускаю свое приложение с правами администратора, в окне Diskpart opens, но это не закрывается. В целом статус не меняется.
Что я делаю неправильно?

Подробнее здесь: https://stackoverflow.com/questions/762 ... nly-status

Вернуться в «C#»