Возможно ли подавить уведомление Windows после назначения буквы диска - PullRequest
0 голосов
/ 09 июня 2018

У меня есть неотформатированный жесткий диск, на котором с помощью кода я создал один раздел, назначил букву диска и, наконец, отформатировал жесткий диск (как NTFS).

Код работает нормально, однако Windows отображаетвсплывающее окно, а также отображает уведомление после форматирования и открытия проводника Windows на этом диске.Я хотел бы как минимум не иметь всплывающее уведомление.

You need to format the disk before using it.

Вот код, просто чтобы дать вам представление о том, что яделать.

Process oProcess = new Process();
...
StringBuilder sb = new StringBuilder();
sb.AppendLine($"SELECT DISK={disk}");
sb.AppendLine($"SELECT PARTITION {partition}");
sb.AppendLine($"ASSIGN LETTER={driveNext}");
sb.AppendLine($"EXIT");

// Write the script to a file.
String fileScript = Path.GetTempFileName();
fileScript = Path.ChangeExtension(fileScript, @"scr");
pathScript = Path.Combine(Path.GetTempPath(), fileScript);
File.WriteAllText(pathScript, sb.ToString());

// Set process start information.
ProcessStartInfo oProcessStartInfo = new ProcessStartInfo()
{
    FileName = @"diskpart.exe",
    Arguments = $"/s {pathScript}",
    CreateNoWindow = true,

    // Set UseShellExecute to false for redirection of the standard output.
    UseShellExecute = false,

    // Redirect standard input as well.  This stream is used asynchronously.
    RedirectStandardOutput = true,
    RedirectStandardInput = true,
};

    // Start the process setting our event handler to asynchronously read the command standard output.
oProcess.StartInfo = oProcessStartInfo;
...
oProcess.Start();

...

// Wait for the process to complete.
oProcess.WaitForExit();
...

То, что я хочу, это тихий пользовательский опыт и отсутствие окон и уведомлений, летящих на пользователя, включая область уведомлений в Windows 10. Я думаю, может быть, есть изменение реестра, которое яможно временно сделать во время операции, чтобы заставить Windows замолчать.Может быть, есть что-то еще.

Возможно ли временно замолчать Windows, и если да, то как?

UPDATE 2

Рекомендуется Smartis этот вопрос так же, как этот вопрос.Этот пользователь хорошо сформулировал вопрос в том смысле, что пользователь действительно может нанести ущерб, отвечая на формат.

Принятый ответ, а именно отформатировать диск с помощью DiskPart.exe и затем назначить букву диска, - это то, что я делаютеперь, см. Обновление 1 ниже.Этот подход, очевидно, работает с Windows Server 2008R2, но он не работает с моей копией Windows 10 Professional X64.Да, я породил еще один процесс с TrueNoWindow, установленным в true.

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

Мысли?

UPDATE 1

Я не думал, чтоупомяну еще одну небольшую проблему ранее, но, основываясь на комментариях Бена и новых исследованиях, я теперь.

Первоначально я хотел отформатировать диск в команде DiskPart.exe, но это не удалось.Несколько сайтов, на которые я смотрел, дали следующий код:

sb.AppendLine($"SELECT DISK={disk}");
sb.AppendLine($"SELECT PARTITION {partition}");
sb.AppendLine($"ASSIGN LETTER={driveNext}");
sb.AppendLine($"FORMAT FS=NTFS LABEL='{diskLabel}' QUICK");
sb.AppendLine($"EXIT")

Затем я провел новое исследование после комментария Бена и придумал эту статью , которая решила более раннюю проблемуформатирование диска и назначение буквы диска внутри одного вызова DiskPart.exe.

Вот рабочий скрипт DiskPart.exe для назначения буквы диска и форматирования диска.Для чего бы это ни стоило, в этом сценарии, не показанном, я также создаю раздел.

sb.AppendLine($"SELECT DISK={disk}");
sb.AppendLine($"SELECT PARTITION 1");
sb.AppendLine($"ACTIVE");
sb.AppendLine($"FORMAT FS=NTFS LABEL='{diskLabel}' QUICK");
sb.AppendLine($"ASSIGN LETTER={driveNext}");
sb.AppendLine($"EXIT");

Изначально проблема заключалась в том, что у меня не было строки ACTIVE, а во-вторых, что я поставил ASSIGN строка после строки FORMAT.

К сожалению, я все еще вижу окно сообщения и уведомление, хотя уведомление в области уведомлений Windows 10 является незначительным раздражением, возможно, даже желательным.

Мысли

...