[*] Если оно защищено, я должен не защищать его (мы используем 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