リビジョン | dc2dde72baec54b06ad143f2bb6bdd589852b9d8 (tree) |
---|---|
日時 | 2020-12-08 16:07:26 |
作者 | tfuruka1 <tfuruka1 at nifty dot com> |
コミッター | tfuruka1 |
RDPでのファイル複写とクリップボートの使用を抑止するコマンドを追加。
@@ -0,0 +1,120 @@ | ||
1 | +/* $Id$ | |
2 | + * RDPでのファイルの複写とクリップボードの使用を抑止します。 | |
3 | + */ | |
4 | +#include <stdio.h> | |
5 | +#include <tchar.h> | |
6 | +#include <windows.h> | |
7 | +#include <getopt.h> | |
8 | + | |
9 | +static void | |
10 | +easyEncript(char *str) | |
11 | +{ | |
12 | + char *p = str; | |
13 | + | |
14 | + printf("["); | |
15 | + while (*p) { | |
16 | + printf("%c", ((int) *p) + 1); | |
17 | + p++; | |
18 | + } | |
19 | + printf("]\n"); | |
20 | +} | |
21 | + | |
22 | +static void | |
23 | +easyDecript(char *str) | |
24 | +{ | |
25 | + char *p = str; | |
26 | + | |
27 | + while (*p) { | |
28 | + *p = (char) (((int) *p) - 1); | |
29 | + p++; | |
30 | + } | |
31 | +} | |
32 | + | |
33 | +int | |
34 | +main(int argc, char *argv[]) | |
35 | +{ | |
36 | + HRESULT hResult = S_OK; | |
37 | + // 戻り値 | |
38 | + DWORD dwResult = 0; | |
39 | + | |
40 | + // HKEY | |
41 | + HKEY hKey = NULL; | |
42 | + DWORD dwValue = 1; | |
43 | + | |
44 | + // SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp | |
45 | + char szSubKey[128] = "TZTUFN" | |
46 | + "]DvssfouDpouspmTfu]Dpouspm]Ufsnjobm!Tfswfs]XjoTubujpot]SEQ.Udq"; | |
47 | + char szValueNames[3][80] = {"gEjtbcmfDen", // "fDisableCdm" | |
48 | + "gEjtbcmfDmjq", //"fDisableClip" | |
49 | + "\0"}; | |
50 | + int i; | |
51 | + int c; | |
52 | + | |
53 | + int option_index; | |
54 | + static struct option options[] = { | |
55 | + {"encript", required_argument, NULL, 'e'}, | |
56 | + {"help", no_argument, NULL, 'h'}, | |
57 | + {"version", no_argument, NULL, 'v'}, | |
58 | + {NULL, 0, NULL, 0} | |
59 | + }; | |
60 | + | |
61 | + while (-1 != (c = getopt_long(argc, argv, "e:hv", | |
62 | + options, &option_index))) { | |
63 | + switch (c) { | |
64 | + case 'e': | |
65 | + easyEncript(optarg); | |
66 | + return 0; | |
67 | + case 'h': | |
68 | + //showHelp(); | |
69 | + return 0; | |
70 | + case 'v': | |
71 | + //showVersion(); | |
72 | + return 0; | |
73 | + default: | |
74 | + fprintf(stderr, "想定外のgetoptからの戻り: %c\n", c); | |
75 | + return 1; | |
76 | + } | |
77 | + } | |
78 | + | |
79 | + /* | |
80 | + レジストリオープン | |
81 | + */ | |
82 | + easyDecript(szSubKey); | |
83 | + dwResult = (DWORD) RegOpenKeyEx( | |
84 | + HKEY_LOCAL_MACHINE, // レジストリキー | |
85 | + szSubKey, // レジストリサブキー | |
86 | + 0, // Reserved(0固定) | |
87 | + KEY_SET_VALUE, // アクセス権 | |
88 | + &hKey // キーハンドルの受け取り位置 | |
89 | + ); | |
90 | + if (ERROR_SUCCESS != dwResult) { | |
91 | + // エラー | |
92 | + hResult = HRESULT_FROM_WIN32(dwResult); | |
93 | + fprintf(stderr, "Registory Open error: %lx\n", hResult); | |
94 | + MessageBox(NULL, TEXT("エラーが発生しました。"), TEXT("エラー"), | |
95 | + MB_ICONERROR); | |
96 | + return 1; | |
97 | + } | |
98 | + | |
99 | + for (i = 0; szValueNames[i][0]; i++) { | |
100 | + easyDecript(szValueNames[i]); | |
101 | + dwResult = (DWORD) RegSetValueEx( | |
102 | + hKey, // キーハンドル | |
103 | + szValueNames[i], // ValueName | |
104 | + 0, // Reserved(0固定) | |
105 | + REG_DWORD, // データ型 | |
106 | + (const LPBYTE) &dwValue, // 書き込み内容 | |
107 | + sizeof(DWORD) // 書き込みサイズ(BYTE) | |
108 | + ); | |
109 | + if (ERROR_SUCCESS != dwResult) { | |
110 | + // エラー | |
111 | + hResult = HRESULT_FROM_WIN32(dwResult); | |
112 | + fprintf(stderr, "Registory Set value error: %lx\n", hResult); | |
113 | + return 1; | |
114 | + } | |
115 | + } | |
116 | + RegCloseKey(hKey); | |
117 | + MessageBox(NULL, TEXT("正常に更新しました。"), TEXT("正常終了"), | |
118 | + MB_ICONINFORMATION); | |
119 | + return 0; | |
120 | +} |
@@ -0,0 +1,12 @@ | ||
1 | +# $Id: makefile 1313 2013-03-19 00:10:02Z tfuruka1 $ | |
2 | +CC = x86_64-w64-mingw32-gcc | |
3 | +CC = i686-w64-mingw32-gcc | |
4 | +CFLAGS= -g -Wall -W -Wformat=2 -Wcast-qual -Wcast-align -Wwrite-strings \ | |
5 | + -Wconversion -Wfloat-equal -Wpointer-arith \ | |
6 | + --exec-charset=cp932 --input-charset=utf-8 | |
7 | + | |
8 | +disrdpcp.exe : main.o makefile | |
9 | + $(CC) $(CFLAGS) -o $@ main.o | |
10 | + strip $@ | |
11 | +clean : | |
12 | + -rm -f *.o *~ |
@@ -1,29 +1,26 @@ | ||
1 | 1 | # $Id: makefile,v 1.7 2011/03/03 13:38:58 tfuruka1 Exp $ |
2 | 2 | # $Name: $ |
3 | 3 | # |
4 | -# makeの親玉 | |
4 | +# make縺ョ隕ェ邇 | |
5 | 5 | # |
6 | -# $Log: makefile,v $ | |
7 | -# Revision 1.7 2011/03/03 13:38:58 tfuruka1 | |
8 | -# getoptに対応等 | |
6 | +# MinGW縺ォ縺、縺?※ | |
7 | +# * 讓ェ蜿悶j荳ク縺ォ縺、縺?※縺ッ縲∫樟蝨ィ縺ッ菫晉蕗 | |
9 | 8 | # |
10 | -# MinGWについて | |
11 | -# * 横取り丸については、現在は保留 | |
12 | -# | |
13 | -# 2019/07/03 MinGWへ変更。getopt は最早不要となりました。CPU100, | |
14 | -# TVMaker を追加。 | |
15 | -# 2011/03/01 teeコマンドを新規追加 | |
16 | -# 2007/10/04 MegaFileを追加 | |
17 | -# 2006/12/06 単純なコーディングミスを修正しました。 | |
18 | -# 2006/12/06 ydmモジュール回線低品質エミュレータを新規追加 | |
19 | -# 2006/12/06 lha32を新規追加 | |
20 | -# 2006/11/15 新規追加 | |
9 | +# 2019/07/03 MinGW縺ク螟画峩縲Hetopt 縺ッ譛?譌ゥ荳崎ヲ√→縺ェ繧翫∪縺励◆縲?PU100, | |
10 | +# TVMaker 繧定ソス蜉?縲 | |
11 | +# 2011/03/01 tee繧ウ繝槭Φ繝峨r譁ー隕剰ソス蜉? | |
12 | +# 2007/10/04 MegaFile繧定ソス蜉? | |
13 | +# 2006/12/06 蜊倡エ斐↑繧ウ繝シ繝?ぅ繝ウ繧ー繝溘せ繧剃ソョ豁」縺励∪縺励◆縲 | |
14 | +# 2006/12/06 ydm繝「繧ク繝・繝シ繝ォ蝗樒キ壻ス主刀雉ェ繧ィ繝溘Η繝ャ繝シ繧ソ繧呈眠隕剰ソス蜉? | |
15 | +# 2006/12/06 lha32繧呈眠隕剰ソス蜉? | |
16 | +# 2006/11/15 譁ー隕剰ソス蜉? | |
21 | 17 | # |
22 | 18 | |
23 | 19 | all : |
24 | 20 | cd batkey; make |
25 | 21 | cd CPU100; make |
26 | 22 | cd crlf; make |
23 | + cd dedup; make | |
27 | 24 | cd ExSleep; make |
28 | 25 | cd img2java; make |
29 | 26 | cd lha32; make |
@@ -37,6 +34,7 @@ clean : | ||
37 | 34 | cd batkey; make clean |
38 | 35 | cd CPU100; make clean |
39 | 36 | cd crlf; make clean |
37 | + cd dedup; make clean | |
40 | 38 | cd ExSleep; make clean |
41 | 39 | cd img2java; make clean |
42 | 40 | cd lha32; make clean |