Révision | b4704f27a47610dc23de164a3193686bbccccd91 (tree) |
---|---|
l'heure | 2020-12-08 20:26:02 |
Auteur | tfuruka1 <tfuruka1 at nifty dot com> |
Commiter | tfuruka1 |
エラーメッセージを多少詳しくしました。
@@ -6,6 +6,37 @@ | ||
6 | 6 | #include <windows.h> |
7 | 7 | #include <getopt.h> |
8 | 8 | |
9 | +/*-------------------------------------------------------------------- | |
10 | + * dwErr で指定されたエラーコードに対応するエラーメッセージを関数にシ | |
11 | + * ステムメッセージテーブルリソースから検索して一時的な文字列へのポイ | |
12 | + * ンタを返却する。dwErr は GetLastError から得た値を指定する事。lpsz | |
13 | + * はエラーメッセージへ追加する文字列を指定する。API 名等を指定する。 | |
14 | + * *-------------------------------------------------------------------*/ | |
15 | +static LPCSTR WINAPI | |
16 | +GetLastErrorMessage(LPCSTR lpsz, DWORD dwErr) | |
17 | +{ | |
18 | + static char sz[1024]; | |
19 | + char szTmp[256]; | |
20 | + DWORD i; | |
21 | + | |
22 | + if (!(i = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | | |
23 | + FORMAT_MESSAGE_IGNORE_INSERTS, | |
24 | + NULL, dwErr, 0, szTmp, sizeof(szTmp), NULL))) { | |
25 | + strcpy(szTmp, "---"); | |
26 | + } else { | |
27 | + szTmp[i] = '\0'; | |
28 | + for (i--; 0 <= (int) i; i--) { | |
29 | + if ('\n' == szTmp[i] || '\r' == szTmp[i]) { | |
30 | + szTmp[i] = '\0'; | |
31 | + } | |
32 | + } | |
33 | + } | |
34 | + wsprintf(sz, "[WIN32] %s: Error Code = %d(%#02x): %s", | |
35 | + lpsz, dwErr, dwErr, szTmp); | |
36 | + return (LPCTSTR)sz; | |
37 | +} | |
38 | + | |
39 | + | |
9 | 40 | static void |
10 | 41 | easyEncript(char *str) |
11 | 42 | { |
@@ -44,9 +75,11 @@ main(int argc, char *argv[]) | ||
44 | 75 | // SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp |
45 | 76 | char szSubKey[128] = "TZTUFN" |
46 | 77 | "]DvssfouDpouspmTfu]Dpouspm]Ufsnjobm!Tfswfs]XjoTubujpot]SEQ.Udq"; |
47 | - char szValueNames[3][80] = {"gEjtbcmfDen", // "fDisableCdm" | |
48 | - "gEjtbcmfDmjq", //"fDisableClip" | |
49 | - "\0"}; | |
78 | + char szValueNames[][80] = { | |
79 | + "gEjtbcmfDen", // "fDisableCdm" | |
80 | + "gEjtbcmfDmjq", // "fDisableClip" | |
81 | + "\0" | |
82 | + }; | |
50 | 83 | int i; |
51 | 84 | int c; |
52 | 85 |
@@ -90,8 +123,12 @@ main(int argc, char *argv[]) | ||
90 | 123 | if (ERROR_SUCCESS != dwResult) { |
91 | 124 | // エラー |
92 | 125 | hResult = HRESULT_FROM_WIN32(dwResult); |
93 | - fprintf(stderr, "Registory Open error: %lx\n", hResult); | |
94 | - MessageBox(NULL, TEXT("エラーが発生しました。"), TEXT("エラー"), | |
126 | + fprintf(stderr, "%s %lx\n", | |
127 | + GetLastErrorMessage("Registory Open", dwResult), hResult); | |
128 | + MessageBox(NULL, TEXT("エラーが発生しました。" | |
129 | + "詳細はコンソールの" | |
130 | + "メッセージを確認して下さい。"), | |
131 | + TEXT("エラー"), | |
95 | 132 | MB_ICONERROR); |
96 | 133 | return 1; |
97 | 134 | } |
@@ -109,7 +146,10 @@ main(int argc, char *argv[]) | ||
109 | 146 | if (ERROR_SUCCESS != dwResult) { |
110 | 147 | // エラー |
111 | 148 | hResult = HRESULT_FROM_WIN32(dwResult); |
112 | - fprintf(stderr, "Registory Set value error: %lx\n", hResult); | |
149 | + fprintf(stderr, "%s %lx\n", | |
150 | + GetLastErrorMessage("Registory set value", | |
151 | + dwResult), hResult); | |
152 | + RegCloseKey(hKey); | |
113 | 153 | return 1; |
114 | 154 | } |
115 | 155 | } |