Убедитесь, что вы используете полное имя файла.Вызовы% SystemRoot% (то есть: C: \ Windows \ System32) перенаправляются при запуске 32-разрядного процесса в 64-разрядных окнах.Вместо «C: \ Windows \ System32» вызов перенаправляется на «C: \ Windows \ SysWOW64».Необходимо переопределить это поведение с помощью «Sysnative» вместо «System32».
Вместо «C: \ Windows \ system32 \ diskpart.exe» используйте «C: \ Windows \ Sysnative \ diskpart.exe».
//Check if OS is 64-bit and this program is running
//as 32-bit.
//
//Note: For a 64-bit process, IntPtr.Size = 8
// For a 32-bit process, IntPtr.Size = 4
string folderSys32Path = string.Empty;
//Windows folder (ex: C:\Windows)
string folderWinPath = Path.GetFullPath(Environment.GetEnvironmentVariable("SystemRoot"));
//get system32 folder path
if (System.Environment.Is64BitOperatingSystem && IntPtr.Size == 4)
{
//using "Sysnative" in place of "System32"
//ensures that the 64-bit "System32" folder is
//used instead of "SysWOW64"
folderSys32Path = Path.Combine(folderWinPath, "Sysnative");
}//if
else
{
folderSys32Path = Path.Combine(folderWinPath, "System32");
}//else
Также может потребоватьсяиспользуйте файл манифеста приложения, указав, что он необходим для работы от имени администратора.