|
А как в .Net обстоят дела с правами на объекты (реестр, файл...), сменой владельца и т.п.?
|
|||
---|---|---|---|
#18+
МСУ, >что ты тут пишешь вместо явного использования манифеста. Манифест к вопросу никакого отношения не имеет. Исходили из того что процесс де-факто запущен от имени администратора (неважно каким способом это достигнуто). Но просто "Run is Admin" недостаточно чтобы сменить владельца объекта. >Не нравится, сиди колупай свой убогий vb 6.0. При чем тут VB6? Речь идет о Win32 API. А они одинаково "колупаются" из "убогого vb6", "модного .Net", или классического C/C++ >Я не могу признать, т.к. детально не разбирался в твоем вопросе. Возможно где-то что-то упусщено. Ну, я то "детально разобрался". Сказал, чего не хватает (Process Privileges). Спросил, как эти привелегии дать при помощи .Net классов (неудачно употребил слово Security, каюсь). Даже уже понял, что с помощью .Net видимо никак. А причем тут ветряные мельницы? Был бы метод SetOwner метод нормально написан, он бы необходимые SetPrivileges автоматом делал. >Спасибо, взаимно. Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2014, 19:47 |
|
А как в .Net обстоят дела с правами на объекты (реестр, файл...), сменой владельца и т.п.?
|
|||
---|---|---|---|
#18+
Дмитрий77как эти привелегии дать при помощи .Net классов шиза косила наши ряды ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2014, 19:49 |
|
А как в .Net обстоят дела с правами на объекты (реестр, файл...), сменой владельца и т.п.?
|
|||
---|---|---|---|
#18+
Дмитрий77Манифест к вопросу никакого отношения не имеет. Ты же сам поднял этот вопрос тут 17068251 , а теперь говоришь, что никакого отношения не имеет. Странный ты. Сначала сам вбрасываешь, потом тебе люди отвечают, а после удивляешься, что тема якобы другая. Дмитрий77Исходили из того что процесс де-факто запущен от имени администратора (неважно каким способом это достигнуто). Это всё хорошо, только зачем ты приводишь ссылки на всякие processprivileges.codeplex.com. Сам начинаешь срать людям в мозг, а потом чему-то удивляешься. Дмитрий77Но просто "Run is Admin" недостаточно чтобы сменить владельца объекта. Я ответил уже по этому поводу. Нет времени (да и желания) досконально вникнуть в тему. Чисто поверхностно попробовал варианты, не получилось, забил. Дмитрий77При чем тут VB6? 1. Не .NET 2. Исходя из твоего профиля, я вижу, что твой бэкграунд это нативный VB 3. По-моему, всё логично Дмитрий77Речь идет о Win32 API. А они одинаково "колупаются" из "убогого vb6", "модного .Net", или классического C/C++ Ну так ты начал наезжать на ".Net документацию", вот я тебе и объяснил, не нравится, вали в натив. Освободи свой разум от модного .NET. Колупания в реестре на .NET всегда считалось моветоном, я даже вспомнить не могу, когда я последний раз имел дела с реестром в дотнете. Дмитрий77Ну, я то "детально разобрался" Возможно, но довериться 100% не могу, пока сам лично не проверю. А времени и желания нету, сам понимаешь. Дмитрий77Был бы метод SetOwner метод нормально написан, он бы необходимые SetPrivileges автоматом делал. Сто пудов ты где-то чего-то не учел. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2014, 20:16 |
|
А как в .Net обстоят дела с правами на объекты (реестр, файл...), сменой владельца и т.п.?
|
|||
---|---|---|---|
#18+
Всё работает. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2014, 21:13 |
|
А как в .Net обстоят дела с правами на объекты (реестр, файл...), сменой владельца и т.п.?
|
|||
---|---|---|---|
#18+
Так тоже работает. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2014, 21:16 |
|
А как в .Net обстоят дела с правами на объекты (реестр, файл...), сменой владельца и т.п.?
|
|||
---|---|---|---|
#18+
И самая главная твоя глупость, трансляция не нужна: Код: c# 1. 2.
В SetOwner можно подавать сразу готовый SecurityIdentifier, он же IdentityReference. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2014, 21:21 |
|
А как в .Net обстоят дела с правами на объекты (реестр, файл...), сменой владельца и т.п.?
|
|||
---|---|---|---|
#18+
Такая конструкция тоже на ура работает. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2014, 22:03 |
|
А как в .Net обстоят дела с правами на объекты (реестр, файл...), сменой владельца и т.п.?
|
|||
---|---|---|---|
#18+
МСУ, >Всё работает. Что Все? Понятно что твой код работает (при условии что у CurrentUser есть права на изменение правил, а в Registry.CurrentUser.OpenSubKey они надо думать есть) Но речь то шла о rs.SetOwner а не о rs.AddAccessRule >Такая конструкция тоже на ура работает. Это ближе к теме Но опять же, берешь ключ в Registry.CurrentUser.OpenSubKey к которому у тебя есть полный доступ. Перечитай: 17059827 условия задачиЕсть ветка реестра. У нее Owner=Trusted Installer. У администратора права только на чтение. Мне надо поменять Owner на Administrators. Вот мой код (запущен из под администратора): Здесь необходимые и достаточные условия. Ничего лишнего не написано. Все что написано важно. Вот примеры таких ключей (по крайней мере на Win8.1 x64): HKEY_LOCAL_MACHINE\SOFTWARE\Classes\InternetExplorer.Application HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{AA0B85DA-FDDF-4272-8D1D-FF9B966D75B0} Попробуй ручками сначала поменять из regedit чтоб убедиться что это в принципе делается. -> Разрешения -> <Дополнительно> -> (Владелец) Изменить Имя объекта : 'Администраторы' (если русская OS) Если менять назад на TrustedInstaller, то пишем полностью 'NT Service\TrustedInstaller' (без кавычек ясно дело) >И самая главная твоя глупость, трансляция не нужна: >В SetOwner можно подавать сразу готовый SecurityIdentifier, он же IdentityReference. Пофиг. Хочешь sid бери, хочешь name. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2014, 23:07 |
|
А как в .Net обстоят дела с правами на объекты (реестр, файл...), сменой владельца и т.п.?
|
|||
---|---|---|---|
#18+
Я думаю, эти грабли тянутся не из-за дотнета http://theether.net/kb/100172 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2015, 12:27 |
|
А как в .Net обстоят дела с правами на объекты (реестр, файл...), сменой владельца и т.п.?
|
|||
---|---|---|---|
#18+
МСУ, Ну так подведем итоги? условия задачиЕсть ветка реестра. У нее Owner=Trusted Installer. У администратора права только на чтение. Мне надо поменять Owner на Administrators. Вот мой код (запущен из под администратора): Решение #1. Рабочее. (утилита CMD) МСУ http://theether.net/kb/100172 Resolution http://theether.net/kb/100172 SetACL can be used to take ownership, and to grant permissions. Ensure the following commands are run from a "Run as Administrator" command prompt. Take Ownership C:\>SetACL.exe -on "HKLM\SOFTWARE\Classes\CLSID\{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}\ShellFolder" -ot reg -actn setowner -ownr "n:Administrators" INFO: Processing ACL of: <machine\SOFTWARE\Classes\CLSID\{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}\ShellFolder> SetACL finished successfully. Решение #2. Рабочее (документация Microsoft) ==то, что вы назвали моим гавнокодом http://msdn.microsoft.com/en-us/library/windows/desktop/aa379620(v=vs.85).aspx http://msdn.microsoft.com/en-us/library/windows/desktop/aa446619(v=vs.85).aspx Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169.
А здесь ГРАБЛИ!!! Решение #3. (.Net) http://msdn.microsoft.com/ru-ru/library/system.security.accesscontrol.objectsecurity.setowner(v=vs.110).aspx ObjectSecurity.SetOwner - методЗадает владельца для дескриптора безопасности, связанного с данным объектом ObjectSecurity. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
НЕ РАБОТАЕТ!!! Или будем дальше спорить? 3-й вариант сумеете реабилитировать? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2015, 17:03 |
|
|
start [/forum/topic.php?fid=20&msg=38846925&tid=1402058]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 143ms |
0 / 0 |