質問編集履歴

8

題名変更

2019/03/08 18:49

投稿

mercurian-teto
mercurian-teto

スコア75

test CHANGED
@@ -1 +1 @@
1
- (Web or Local)PC上で常駐アプリが得たデータをシリアライズし、シリアライズした内容を常駐アプリが毎秒読み取
1
+ (Web or Local)PC上で常駐アプリが得たデータをシリアライズし、シリアライズした内容を管理者権限のないユーザーに編集させないようにす方法
test CHANGED
File without changes

7

追加

2019/03/08 18:49

投稿

mercurian-teto
mercurian-teto

スコア75

test CHANGED
@@ -1 +1 @@
1
- webサーバー上もしくはローカルにPC上で常駐アプリが得たデータをシリアライズし、シリアライズした内容を常駐アプリが毎秒読み取る
1
+ (Web or Local)PC上で常駐アプリが得たデータをシリアライズし、シリアライズした内容を常駐アプリが毎秒読み取る
test CHANGED
File without changes

6

追加

2019/02/25 07:04

投稿

mercurian-teto
mercurian-teto

スコア75

test CHANGED
File without changes
test CHANGED
@@ -107,3 +107,107 @@
107
107
  動作している常駐アプリのみにしたいですが、ローカルではできそうでないと思い、webサーバーに保存するという考えに至り質問しました。
108
108
 
109
109
  また、本質問の追記修正で回答してくださっている方がシステムユーザー権限でwindowsサービスをすればいいとあったのですが、たとえば、標準ユーザーアカウントでprogramfilesに存在するxmlファイルに書き込みができるのであれば、ローカルでwindowsサービスを検討しようと思っています。
110
+
111
+ #追記3 実現したコード
112
+
113
+
114
+
115
+ ```
116
+
117
+ protected override void OnStart(string[] args)
118
+
119
+ {
120
+
121
+
122
+
123
+
124
+
125
+ string filename = "C:\Program Files\LsXmlWriter\writetoPGF.xml";
126
+
127
+ // writetoPGF = write to ProgramFiles
128
+
129
+
130
+
131
+ eventlog.WriteEntry("service has started");
132
+
133
+
134
+
135
+
136
+
137
+
138
+
139
+ XmlTextWriter writer = null;
140
+
141
+
142
+
143
+ try
144
+
145
+ {
146
+
147
+ if (!Directory.Exists("C:\Program Files\LsXmlWriter"))
148
+
149
+ {
150
+
151
+ Directory.CreateDirectory("C:\Program Files\LsXmlWriter");
152
+
153
+ }
154
+
155
+ writer = new XmlTextWriter(filename, null);
156
+
157
+ writer.Formatting = Formatting.Indented;
158
+
159
+ writer.WriteStartDocument(true);
160
+
161
+ writer.WriteComment
162
+
163
+ ("Asset hardware Inventory for " + System.Environment.MachineName);
164
+
165
+ writer.WriteStartElement("property");
166
+
167
+ writer.WriteElementString("hour", "9");
168
+
169
+ writer.WriteElementString("minute", "0");
170
+
171
+ writer.WriteEndElement();
172
+
173
+ writer.WriteEndDocument();
174
+
175
+ }
176
+
177
+ catch (Exception error2)
178
+
179
+ {
180
+
181
+
182
+
183
+ eventlog.WriteEntry(error2.Message);
184
+
185
+ eventlog.WriteEntry("Can't write to xml files in ProgramFiles");
186
+
187
+
188
+
189
+ }
190
+
191
+ finally
192
+
193
+ {
194
+
195
+ if (writer != null)
196
+
197
+ {
198
+
199
+ writer.Close();
200
+
201
+
202
+
203
+ }
204
+
205
+ }
206
+
207
+
208
+
209
+
210
+
211
+ }
212
+
213
+ ```

5

題名修正

2019/02/25 07:02

投稿

mercurian-teto
mercurian-teto

スコア75

test CHANGED
@@ -1 +1 @@
1
- webサーバー上にPC上で常駐アプリが得たデータをシリアライズし、シリアライズした内容を常駐アプリが毎秒読み取る
1
+ webサーバー上もしくはローカルにPC上で常駐アプリが得たデータをシリアライズし、シリアライズした内容を常駐アプリが毎秒読み取る
test CHANGED
File without changes

4

追記2

2019/02/24 12:44

投稿

mercurian-teto
mercurian-teto

スコア75

test CHANGED
File without changes
test CHANGED
@@ -95,3 +95,15 @@
95
95
  書き込んで常駐アプリケーションの挙動を不正に変更されるのを防ぎたいです。
96
96
 
97
97
  上の例だと、常駐アプリケーションがfirefoxの使用時間が残り2分となっているのに50分とかに不正に書き換えて、常駐アプリの強制終了を免れたりされるのを防ぎたいです。
98
+
99
+
100
+
101
+ #追記2 ローカルではなくwebサーバーに保存しようと思った理由
102
+
103
+ 回答ありがとうございます。ローカルで実現しようとすると、
104
+
105
+ シリアライズした情報への書き込み権限を標準ユーザーアカウントで
106
+
107
+ 動作している常駐アプリのみにしたいですが、ローカルではできそうでないと思い、webサーバーに保存するという考えに至り質問しました。
108
+
109
+ また、本質問の追記修正で回答してくださっている方がシステムユーザー権限でwindowsサービスをすればいいとあったのですが、たとえば、標準ユーザーアカウントでprogramfilesに存在するxmlファイルに書き込みができるのであれば、ローカルでwindowsサービスを検討しようと思っています。

3

追記

2019/02/24 08:24

投稿

mercurian-teto
mercurian-teto

スコア75

test CHANGED
File without changes
test CHANGED
@@ -48,9 +48,11 @@
48
48
 
49
49
 
50
50
 
51
- #作成しようとしている常駐アプリケーション
51
+ #追記1.作成しようとしている常駐アプリケーション
52
52
 
53
53
  アプリケーションの使用時間を毎秒、計測します。
54
+
55
+ 常駐アプリケーションはタスク常駐のアプリケーションです。
54
56
 
55
57
  たとえば、firefoxの使用時間を計測します。
56
58
 

2

追記

2019/02/24 01:46

投稿

mercurian-teto
mercurian-teto

スコア75

test CHANGED
File without changes
test CHANGED
@@ -45,3 +45,51 @@
45
45
  webサーバーにシリアライズするという手法をとると、シリアライズした情報を読み取ることができ、
46
46
 
47
47
  なおかつ標準ユーザーにねつ造されないかと思い、質問しました。
48
+
49
+
50
+
51
+ #作成しようとしている常駐アプリケーション
52
+
53
+ アプリケーションの使用時間を毎秒、計測します。
54
+
55
+ たとえば、firefoxの使用時間を計測します。
56
+
57
+ 具体的にはwindow名にfirefoxが含まれるウインドウが
58
+
59
+ 一つでもあれば、使用時間を計測していきます。
60
+
61
+ (windowsでfirefoxのウインドウ名を取得するとかならず
62
+
63
+ **********- Mozilla Firefox
64
+
65
+ という名前になっています。
66
+
67
+ 例:質問投稿画面|teratail(テラテイル) - Mozilla Firefox)
68
+
69
+
70
+
71
+ それをサーバー上にxml形式でシリアライズします。
72
+
73
+ サーバーはxml形式で保存されたデータを監視・常駐します。
74
+
75
+ サーバー側がfirefoxの使用時間が2時間に達したら、
76
+
77
+ それをサーバーが常駐アプリケーションに通知します。
78
+
79
+ firefoxの使用時間が0時間になれば、
80
+
81
+ 常駐アプリケーションは
82
+
83
+ ウインドウ名にfirefoxが含まれるものを監視し、
84
+
85
+ そのようなウインドウ名があれば、
86
+
87
+ そのウインドウを出しているアプリケーションを(たとえば、firefoxを)強制終了します。
88
+
89
+
90
+
91
+ 送られるデータは読み取られるのはかまわないのですが、
92
+
93
+ 書き込んで常駐アプリケーションの挙動を不正に変更されるのを防ぎたいです。
94
+
95
+ 上の例だと、常駐アプリケーションがfirefoxの使用時間が残り2分となっているのに50分とかに不正に書き換えて、常駐アプリの強制終了を免れたりされるのを防ぎたいです。

1

追加

2019/02/24 01:37

投稿

mercurian-teto
mercurian-teto

スコア75

test CHANGED
File without changes
test CHANGED
@@ -38,7 +38,7 @@
38
38
 
39
39
  隠しファイルや隠しレジストリ等は使いたくありません。
40
40
 
41
- xmlやxmlアクセス制限しようとすると
41
+ xmlやレジストリ書き込みの制限しようとすると
42
42
 
43
43
  ユーザーの権限単位でしか書き換えを禁止するしかありません。
44
44