diff options
-rw-r--r-- | src/Common/Format.c | 29 | ||||
-rw-r--r-- | src/Common/Language.xml | 1 |
2 files changed, 24 insertions, 6 deletions
diff --git a/src/Common/Format.c b/src/Common/Format.c index 4363f474..f34ee39b 100644 --- a/src/Common/Format.c +++ b/src/Common/Format.c @@ -400,14 +400,31 @@ begin_format: } if (speedupFileCreation) { - // accelerate file creation by telling Windows not to fill all file content with zeros - // this has security issues since it will put existing disk content into file container - // We use this mechanism only when switch /fastCreateFile specific and when quick format - // also specified and which is documented to have security issues. - // we don't check returned status because failure is not issue for us - SetFileValidData (dev, volumeSize.QuadPart); + if (!SetPrivilege(SE_MANAGE_VOLUME_NAME, TRUE)) + { + DWORD dwLastError = GetLastError(); + if (Silent || (MessageBoxW(hwndDlg, GetString ("ADMIN_PRIVILEGES_WARN_MANAGE_VOLUME"), lpszTitle, MB_YESNO | MB_ICONWARNING | MB_DEFBUTTON2) == IDNO)) + { + SetLastError(dwLastError); + nStatus = ERR_OS_ERROR; + goto error; + } + } + else + { + // accelerate file creation by telling Windows not to fill all file content with zeros + // this has security issues since it will put existing disk content into file container + // We use this mechanism only when switch /fastCreateFile specific and when quick format + // also specified and which is documented to have security issues. + // we don't check returned status because failure is not issue for us + if (!SetFileValidData (dev, volumeSize.QuadPart)) + { + nStatus = ERR_OS_ERROR; + goto error; + } + } } if (SetFilePointer (dev, 0, NULL, FILE_BEGIN) != 0) { diff --git a/src/Common/Language.xml b/src/Common/Language.xml index 8d6fb7ab..7c001179 100644 --- a/src/Common/Language.xml +++ b/src/Common/Language.xml @@ -388,8 +388,9 @@ <entry lang="en" key="ACCESS_DENIED">Error: Access denied.\n\nThe partition you are trying to access is either 0 sectors long, or it is the boot device.</entry> <entry lang="en" key="ADMINISTRATOR">Administrator</entry> <entry lang="en" key="ADMIN_PRIVILEGES_DRIVER">In order to load the VeraCrypt driver, you need to be logged into an account with administrator privileges.</entry> <entry lang="en" key="ADMIN_PRIVILEGES_WARN_DEVICES">Please note that in order to encrypt, decrypt or format a partition/device you need to be logged into an account with administrator privileges.\n\nThis does not apply to file-hosted volumes.</entry> + <entry lang="en" key="ADMIN_PRIVILEGES_WARN_MANAGE_VOLUME">Unable to activate fast file creation: Administrator privileges required.\nPlease relaunch the program as an Administrator to enable this feature.\n\nWould you like to proceed without fast file creation?</entry> <entry lang="en" key="ADMIN_PRIVILEGES_WARN_HIDVOL">In order to create a hidden volume you need to be logged into an account with administrator privileges.\n\nContinue?</entry> <entry lang="en" key="ADMIN_PRIVILEGES_WARN_NTFS">Please note that in order to format the volume as NTFS/exFAT/ReFS you need to be logged into an account with administrator privileges.\n\nWithout administrator privileges, you can format the volume as FAT.</entry> <entry lang="en" key="AES_HELP">FIPS-approved cipher (Rijndael, published in 1998) that may be used by U.S. government departments and agencies to protect classified information up to the Top Secret level. 256-bit key, 128-bit block, 14 rounds (AES-256). Mode of operation is XTS.</entry> <entry lang="en" key="ALREADY_MOUNTED">Volume is already mounted.</entry> |