質問編集履歴

1

コード一部修正

2017/03/22 07:52

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -6,24 +6,32 @@
6
6
 
7
7
  ```ここに言語を入力
8
8
 
9
- var searchResults = new ManagementObjectSearcher(string.Format("SELECT * FROM Win32_Printer WHERE Name LIKE \"{0}\"", プリンター名)).Get();
9
+ var searchResults = new ManagementObjectSearcher(string.Format("SELECT * FROM Win32_Printer WHERE Name LIKE \"{0}\"", プリンター名)).Get();
10
10
 
11
- foreach (ManagementObject printer in searchResults)
11
+ foreach (ManagementObject printer in searchResults)
12
12
 
13
- {
13
+ {
14
14
 
15
- ManagementBaseObject outParamsMthd =
15
+ ManagementBaseObject outParamsMthd = printer.InvokeMethod("GetSecurityDescriptor", null, null);
16
16
 
17
- printer.InvokeMethod("GetSecurityDescriptor", null, null);
17
+ var descriptor = (ManagementBaseObject)outParamsMthd["Descriptor"];
18
18
 
19
- ManagementBaseObject descriptor =
19
+ // descriptor これがnullになってしまう
20
20
 
21
- outParamsMthd["Descriptor"]
22
-
23
- }
21
+ }
24
22
 
25
23
  ```
26
24
 
27
25
  上記のように組んだのちに管理者権限で実行するとdescriptorを取得できるのですが、管理者権限がない場合はnullとなってしまいます
28
26
 
29
27
  書き込みの権限は必要なく、管理者権限を必要としないまま参照のみを行いたいのですが、どのようにすればよろしいでしょうか?
28
+
29
+
30
+
31
+ 追記
32
+
33
+ コードが一部違っていたので修正したしました。
34
+
35
+ またコードでいうと「descriptor」が権限のないままビルドするとnull、ある場合正しく取得できる
36
+
37
+ 権限のないまま取得したいです。