質問編集履歴

7

補足追記

2021/04/10 13:48

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -147,3 +147,13 @@
147
147
  .NET 5.0 が入ってない環境だと動かない気がするし…
148
148
 
149
149
  C++ で解決する方法があれば教えて下さい。
150
+
151
+
152
+
153
+ 追記
154
+
155
+ やっぱり.NET 5.0 が入ってない環境だと動きませんでした。
156
+
157
+ それと、娘の学校のパソコンで動かそうとしたら、ウイルスの脅威とか言われて動きませんでした。
158
+
159
+ どうすれば良いでしょうか?

6

ソースコード追加

2021/04/10 13:48

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -53,3 +53,97 @@
53
53
  public static string? GetEnvironmentVariable (string variable, EnvironmentVariableTarget target);
54
54
 
55
55
  ```
56
+
57
+
58
+
59
+ ```C#
60
+
61
+ using System;
62
+
63
+ using System.Diagnostics;
64
+
65
+ using System.IO;
66
+
67
+
68
+
69
+ namespace SetEnv
70
+
71
+ {
72
+
73
+ class Program
74
+
75
+ {
76
+
77
+ static void Main(string[] args)
78
+
79
+ {
80
+
81
+ string sEnvPath = System.AppDomain.CurrentDomain.BaseDirectory;
82
+
83
+ DirectoryInfo di = new DirectoryInfo(sEnvPath);
84
+
85
+ // 親のディレクトリを取得する
86
+
87
+ DirectoryInfo diParent = di.Parent;
88
+
89
+ string sDllPath = diParent.FullName + "\dll;";
90
+
91
+ string sPath = Environment.GetEnvironmentVariable("Path", EnvironmentVariableTarget.User);
92
+
93
+ if(sPath.Contains(sDllPath))
94
+
95
+ {
96
+
97
+ Console.WriteLine("環境設定済です。");
98
+
99
+ Console.WriteLine("何かキーを押して下さい…");
100
+
101
+ Console.ReadLine();
102
+
103
+ return;
104
+
105
+ }
106
+
107
+ ProcessStartInfo startInfo = new ProcessStartInfo("SETX");
108
+
109
+ startInfo.WindowStyle = ProcessWindowStyle.Normal;
110
+
111
+ if (sPath.Substring(sPath.Length - 1, 1).Equals(";"))
112
+
113
+ {
114
+
115
+ startInfo.Arguments = "Path \"" + sPath + sDllPath;
116
+
117
+ }
118
+
119
+ else
120
+
121
+ {
122
+
123
+ startInfo.Arguments = "Path \"" + sPath + ";" + sDllPath;
124
+
125
+ }
126
+
127
+ Process.Start(startInfo);
128
+
129
+ Console.WriteLine("環境設定が終了しました。");
130
+
131
+ Console.WriteLine("何かキーを押して下さい…");
132
+
133
+ Console.ReadLine();
134
+
135
+ }
136
+
137
+ }
138
+
139
+ }
140
+
141
+ ```
142
+
143
+
144
+
145
+ 一応、これで解決したけど、jsonやらなんやら余計なファイルが出来て好かん。
146
+
147
+ .NET 5.0 が入ってない環境だと動かない気がするし…
148
+
149
+ C++ で解決する方法があれば教えて下さい。

5

ソースコード追加

2021/04/10 12:41

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -43,3 +43,13 @@
43
43
  _dupenv_s だとシステム環境変数とユーザー環境変数を全部拾ってくるみたいです。
44
44
 
45
45
  ユーザー環境変数だけで良いのですがどうすれば良いでしょうか?
46
+
47
+
48
+
49
+ これ使えば良さそうだけど、、C# で SETX または SETX に相当する関数がわかりません。
50
+
51
+ ```C#
52
+
53
+ public static string? GetEnvironmentVariable (string variable, EnvironmentVariableTarget target);
54
+
55
+ ```

4

補足追記

2021/04/10 11:06

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -37,3 +37,9 @@
37
37
  >std:coutでコマンドの内容を表示しています。
38
38
 
39
39
  これ消しても関係ないですね。
40
+
41
+
42
+
43
+ _dupenv_s だとシステム環境変数とユーザー環境変数を全部拾ってくるみたいです。
44
+
45
+ ユーザー環境変数だけで良いのですがどうすれば良いでしょうか?

3

補足追記

2021/04/10 10:43

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -31,3 +31,9 @@
31
31
  std:coutでコマンドの内容を表示しています。
32
32
 
33
33
  その辺りが何か悪さしてますか?
34
+
35
+
36
+
37
+ >std:coutでコマンドの内容を表示しています。
38
+
39
+ これ消しても関係ないですね。

2

2021/04/10 09:46

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -23,3 +23,11 @@
23
23
 
24
24
 
25
25
  既存のパスが全て2つずつになります。
26
+
27
+
28
+
29
+ systemでコマンドを呼ぶ前に
30
+
31
+ std:coutでコマンドの内容を表示しています。
32
+
33
+ その辺りが何か悪さしてますか?

1

2021/04/10 02:51

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -13,3 +13,13 @@
13
13
  ↑このようにすると既存のパスが消えてしまう。
14
14
 
15
15
  なぜでしょうか?
16
+
17
+
18
+
19
+ >> 既存のパスが重複してしまう。
20
+
21
+ >どういう結果のことをそう言っていますか?
22
+
23
+
24
+
25
+ 既存のパスが全て2つずつになります。