You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -13,7 +13,7 @@ Specifies that the digital signature of the binary image must be checked at load
13
13
14
14
By default, **`/INTEGRITYCHECK`** is off.
15
15
16
-
The **`/INTEGRITYCHECK`** linker option sets a flag, `IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY`, in the PE header of the DLL file or executable file. This flag tells the memory manager to check for a digital signature in order to load the image in Windows. This option must be set for both 32-bit and 64-bit DLLs that are loaded by certain Windows features. It's recommended for all device drivers on Windows Vista, Windows Server 2008, and all later versions of Windows and Windows Server. Versions of Windows prior to Windows Vista ignore this flag. For more information, see [Forced Integrity Signing of Portable Executable (PE) files](https://social.technet.microsoft.com/wiki/contents/articles/255.forced-integrity-signing-of-portable-executable-pe-files.aspx).
16
+
The **`/INTEGRITYCHECK`** linker option sets a flag, `IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY`, in the PE header of the DLL file or executable file. This flag tells the memory manager to check for a digital signature in order to load the image in Windows. This option must be set for both 32-bit and 64-bit DLLs that certain Windows features load. It's recommended for all device drivers on Windows Vista, Windows Server 2008, and all later versions of Windows and Windows Server. Versions of Windows prior to Windows Vista ignore this flag. For more information, see [Forced Integrity Signing of Portable Executable (PE) files](https://social.technet.microsoft.com/wiki/contents/articles/255.forced-integrity-signing-of-portable-executable-pe-files.aspx).
17
17
18
18
### Signing `/INTEGRITYCHECK` files
19
19
@@ -25,14 +25,14 @@ Microsoft has new signing guidance for DLL and executable files linked by using
1. To build an image which requires digital signature verification to be loaded, add *`/INTEGRITYCHECK`* to the **Additional Options** command line. By default, **`/INTEGRITYCHECK`**is off.
28
+
1. To create a digitally signed image, include `/INTEGRITYCHECK` in the **Additional Options** command line. A digitally signed image must pass a verification check before it's loaded. This feature is disabled by default.
29
29
30
30
1. Choose **OK** to save your changes.
31
31
32
32
## See also
33
33
34
-
[MSVC linker reference](linking.md)<br/>
35
-
[MSVC linker options](linker-options.md)<br/>
36
-
[Forced integrity signing of portable executable (PE) files](https://social.technet.microsoft.com/wiki/contents/articles/255.forced-integrity-signing-of-portable-executable-pe-files.aspx)<br/>
You can use the **`/Zc`** compiler options to specify standard or Microsoft-specific compiler behavior.
9
+
Use the **`/Zc`** compiler options to specify standard or Microsoft-specific compiler behavior.
10
10
11
11
## Syntax
12
12
@@ -22,41 +22,41 @@ Here are the **`/Zc`** compiler options:
22
22
23
23
| Option | Behavior |
24
24
|--|--|
25
-
|[`/Zc:__cplusplus`](zc-cplusplus.md)| Enable the `__cplusplus` macro to report the supported standard (off by default). |
26
-
|[`/Zc:__STDC__`](zc-stdc.md)| Enable the `__STDC__` macro to report the C standard is supported (off by default). |
27
-
|[`/Zc:alignedNew`](zc-alignednew.md)| Enable C++17 over-aligned dynamic allocation (on by default in C++17). |
28
-
|[`/Zc:auto`](zc-auto-deduce-variable-type.md)| Enforce the new Standard C++ meaning for **`auto`** (on by default). |
29
-
|[`/Zc:char8_t`](zc-char8-t.md)| Enable or disable C++20 native `u8` literal support as `const char8_t` (off by default, except under **`/std:c++20`**). |
30
-
|[`/Zc:enumTypes[-]`](zc-enumtypes.md)| Enable Standard C++ rules for `enum` type deduction (off by default). |
31
-
|[`/Zc:externC`](zc-externc.md)| Enforce Standard C++ rules for `extern "C"` functions (implied by **`/permissive-`**). |
32
-
|[`/Zc:externConstexpr`](zc-externconstexpr.md)| Enable external linkage for **`constexpr`** variables (off by default). |
33
-
|[`/Zc:forScope`](zc-forscope-force-conformance-in-for-loop-scope.md)| Enforce Standard C++ **`for`** scoping rules (on by default). |
34
-
|[`/Zc:gotoScope`](zc-gotoscope.md)| Enforce Standard C++ **`goto`** rules around local variable initialization (implied by **`/permissive-`**). |
35
-
|[`/Zc:hiddenFriend`](zc-hiddenfriend.md)| Enforce Standard C++ hidden friend rules (implied by **`/permissive-`**)|
36
-
|[`/Zc:implicitNoexcept`](zc-implicitnoexcept-implicit-exception-specifiers.md)| Enable implicit **`noexcept`** on required functions (on by default). |
37
-
|[`/Zc:inline`](zc-inline-remove-unreferenced-comdat.md)| Remove unreferenced functions or data if they're COMDAT or have internal linkage only (off by default). |
38
-
|[`/Zc:lambda`](zc-lambda.md)| Enable new lambda processor for conformance-mode syntactic checks in generic lambdas. |
39
-
|[`/Zc:noexceptTypes`](zc-noexcepttypes.md)| Enforce C++17 **`noexcept`** rules (on by default in C++17 or later). |
40
-
|[`/Zc:nrvo[-]`](zc-nrvo.md)| Enable optional copy and move elisions (on by default under**`/O2`**, **`/permissive-`**, or **`/std:c++20`** or later). |
41
-
|[`/Zc:preprocessor`](zc-preprocessor.md)| Use the new conforming preprocessor (off by default, except in C11/C17). |
42
-
|[`/Zc:referenceBinding`](zc-referencebinding-enforce-reference-binding-rules.md)| A UDT temporary won't bind to a non-const lvalue reference (off by default). |
43
-
|[`/Zc:rvalueCast`](zc-rvaluecast-enforce-type-conversion-rules.md)| Enforce Standard C++ explicit type conversion rules (off by default). |
44
-
|[`/Zc:sizedDealloc`](zc-sizeddealloc-enable-global-sized-dealloc-functions.md)| Enable C++14 global sized deallocation functions (on by default). |
45
-
|[`/Zc:strictStrings`](zc-strictstrings-disable-string-literal-type-conversion.md)| Disable string-literal to `char*` or `wchar_t*` conversion (off by default). |
46
-
|[`/Zc:static_assert`](zc-static-assert.md)| strict handling of `static_assert` (implied by **`/permissive-`**). |
47
-
|[`/Zc:templateScope[-]`](zc-templatescope.md)| Enforce Standard C++ template parameter shadowing rules (off by default). |
48
-
|[`/Zc:ternary`](zc-ternary.md)| Enforce conditional operator rules on operand types (off by default). |
49
-
|[`/Zc:threadSafeInit`](zc-threadsafeinit-thread-safe-local-static-initialization.md)| Enable thread-safe local static initialization (on by default). |
50
-
|[`/Zc:throwingNew`](zc-throwingnew-assume-operator-new-throws.md)| Assume **`operator new`** throws on failure (off by default). |
51
-
|[`/Zc:tlsGuards[-]`](zc-tlsguards.md)| Generate runtime checks for TLS variable initialization (on by default). |
52
-
|[`/Zc:trigraphs`](zc-trigraphs-trigraphs-substitution.md)| Enable trigraphs (obsolete, off by default). |
53
-
|[`/Zc:twoPhase`](zc-twophase.md)| Use non-conforming template parsing behavior (conforming by default). |
54
-
|[`/Zc:wchar_t`](zc-wchar-t-wchar-t-is-native-type.md)|**`wchar_t`** is a native type, not a typedef (on by default). |
55
-
|[`/Zc:zeroSizeArrayNew[-]`](zc-zerosizearraynew.md)| Call member `new`/`delete` for 0-size arrays of objects (on by default). |
25
+
|[`/Zc:__cplusplus[-]`](zc-cplusplus.md)| Enable the `__cplusplus` macro to report the supported standard. Off by default. |
26
+
|[`/Zc:__STDC__`](zc-stdc.md)| Enable the `__STDC__` macro to report the C standard is supported. Off by default. |
27
+
|[`/Zc:alignedNew[-]`](zc-alignednew.md)| Enable C++17 over-aligned dynamic allocation. Off by default unless **`/std:c++17`** or later is specified. |
28
+
|[`/Zc:auto[-]`](zc-auto-deduce-variable-type.md)| Enforce the new Standard C++ meaning for **`auto`**. On by default. |
29
+
|[`/Zc:char8_t[-]`](zc-char8-t.md)| Enable or disable C++20 native `u8` literal support as `const char8_t`. Off by default unless **`/std:c++20`** or later is specified. |
30
+
|[`/Zc:enumTypes[-]`](zc-enumtypes.md)| Enable Standard C++ rules for `enum` type deduction. Off by default. |
31
+
|[`/Zc:externC[-]`](zc-externc.md)| Enforce Standard C++ rules for `extern "C"` functions. Off by default unless **`/permissive-`** is specified. |
32
+
|[`/Zc:externConstexpr[-]`](zc-externconstexpr.md)| Enable external linkage for **`constexpr`** variables. Off by default. |
33
+
|[`/Zc:forScope[-]`](zc-forscope-force-conformance-in-for-loop-scope.md)| Enforce Standard C++ **`for`** scoping rules. On by default. |
34
+
|[`/Zc:gotoScope[-]`](zc-gotoscope.md)| Enforce Standard C++ **`goto`** rules around local variable initialization. Off by default unless **`/permissive-`** is specified. |
35
+
|[`/Zc:hiddenFriend[-]`](zc-hiddenfriend.md)| Enforce Standard C++ hidden friend rules. Off by default unless **`/permissive-`** is specified.|
36
+
|[`/Zc:implicitNoexcept[-]`](zc-implicitnoexcept-implicit-exception-specifiers.md)| Enable implicit **`noexcept`** on required functions. On by default. |
37
+
|[`/Zc:inline[-]`](zc-inline-remove-unreferenced-comdat.md)| Remove unreferenced functions or data if they're COMDAT or have internal linkage only. Off by default. |
38
+
|[`/Zc:lambda[-]`](zc-lambda.md)| Enable new lambda processor for conformance-mode syntactic checks in generic lambdas. Off by default unless **`/std:c++20`** or later is specified. |
39
+
|[`/Zc:noexceptTypes[-]`](zc-noexcepttypes.md)| Enforce C++17 **`noexcept`** rules. Off by default unless **`/std:c++17`** or later is specified. |
40
+
|[`/Zc:nrvo[-]`](zc-nrvo.md)| Enable optional copy and move elisions. Off by default unless**`/O2`**, **`/permissive-`**, or **`/std:c++20`** or later is specified. |
41
+
|[`/Zc:preprocessor[-]`](zc-preprocessor.md)| Use the new conforming preprocessor. Off by default unless **`/std:c11`** or later is specified. |
42
+
|[`/Zc:referenceBinding[-]`](zc-referencebinding-enforce-reference-binding-rules.md)| A UDT temporary won't bind to a nonconst lvalue reference. Off by default unless **`/permissive-`** is specified. |
43
+
|[`/Zc:rvalueCast[-]`](zc-rvaluecast-enforce-type-conversion-rules.md)| Enforce Standard C++ explicit type conversion rules. Off by default unless **`/permissive-`** is specified. |
44
+
|[`/Zc:sizedDealloc[-]`](zc-sizeddealloc-enable-global-sized-dealloc-functions.md)| Enable C++14 global sized deallocation functions. On by default. |
45
+
|[`/Zc:strictStrings[-]`](zc-strictstrings-disable-string-literal-type-conversion.md)| Disable string-literal to `char*` or `wchar_t*` conversion. Off by default unless **`/permissive-`** is specified. |
46
+
|[`/Zc:static_assert[-]`](zc-static-assert.md)| strict handling of `static_assert`. Off by default unless **`/permissive-`** is specified. |
47
+
|[`/Zc:templateScope[-]`](zc-templatescope.md)| Enforce Standard C++ template parameter shadowing rules. Off by default. |
48
+
|[`/Zc:ternary[-]`](zc-ternary.md)| Enforce conditional operator rules on operand types. Off by default unless **`/permissive-`** is specified. |
49
+
|[`/Zc:threadSafeInit[-]`](zc-threadsafeinit-thread-safe-local-static-initialization.md)| Enable thread-safe local static initialization. On by default. |
50
+
|[`/Zc:throwingNew[-]`](zc-throwingnew-assume-operator-new-throws.md)| Assume **`operator new`** throws on failure. Off by default. |
51
+
|[`/Zc:tlsGuards[-]`](zc-tlsguards.md)| Generate runtime checks for TLS variable initialization. On by default. |
52
+
|[`/Zc:trigraphs[-]`](zc-trigraphs-trigraphs-substitution.md)| Enable trigraphs (obsolete, off by default). |
53
+
|[`/Zc:twoPhase-`](zc-twophase.md)| Use nonconforming template parsing behavior (only applicable when **`/permissive-`** is specified, which defaults to conforming). |
54
+
|[`/Zc:wchar_t[-]`](zc-wchar-t-wchar-t-is-native-type.md)|**`wchar_t`** is a native type, not a typedef. On by default. |
55
+
|[`/Zc:zeroSizeArrayNew[-]`](zc-zerosizearraynew.md)| Call member `new`/`delete` for 0-size arrays of objects. On by default. |
56
56
57
57
For more information about conformance issues in MSVC, see [Nonstandard behavior](../../cpp/nonstandard-behavior.md).
0 commit comments