分配驱动器号后是否可以取消Windows通知

时间:2018-06-09 18:45:20

标签: c# windows process notifications disk

我有一个未格式化的硬盘,通过代码我创建了一个分区,分配了一个驱动器号,最后格式化了硬盘(作为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静音,如果是,如何?

UPDATE 2

Smartis建议使用this question,因为它与此问题相同。该用户很好地表达了这个问题,即用户实际上可以通过响应格式来造成损害。

接受的答案,即使用DiskPart.exe格式化驱动器然后分配驱动器号,就是我现在所做的,请参阅下面的更新1。这种方法显然适用于Windows Server 2008R2,但它不适用于我的Windows 10 Professional X64副本。是的,我在CreateNoWindow设置为true的情况下生成了另一个进程。

该用户表示,一个答案是停止硬件检测服务,但这不是他将尊重放置在代码中的解决方案。我同意。我希望这不是唯一的方法,所以我们又来了。

思想?

UPDATE 1

我之前没有提到另一个小问题,但根据Ben的评论和新研究,我现在就是。

我原本想在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")

然后我在Ben的评论之后做了一项新的研究,并提出了this article,这解决了早期的格式化磁盘并在单个DiskPart.exe调用中分配驱动器号的问题。 / p>

这是一个工作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通知区域中的通知是一个小麻烦,甚至可能是可取的。

思想?

0 个答案:

没有答案
相关问题