Init
@@ -0,0 +1,66 @@
|
||||
# CyberArk Community Code of Conduct
|
||||
|
||||
CyberArk is a leader in Privileged Access Management, thanks to its customers and community. We listen to our community and wish to provide additional relevant tools. We believe that our mission is best served in an environment that is friendly, safe, and accepting; free from intimidation or harassment.
|
||||
Towards this end, CyberArk’s developers have created this Community Code of Conduct for the CyberArk open source community. Our Code of Conduct sets the standard for how developers, and community members can work together in a respectful and collaborative manner. Those who do not abide by this Code of Conduct will not be permitted to remain part of our community.
|
||||
|
||||
|
||||
## Summary of Key Principles
|
||||
|
||||
- Be respectful to others in the community at all times.
|
||||
- Report harassing or abusive behavior that you experience or witness at ReportAbuse@cyberark.com
|
||||
- The CyberArk community will not tolerate abusive or disrespectful behavior towards its members; anyone engaging in such behavior will be suspended from the CyberArk community.
|
||||
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies to all members of the CyberArk community, including paid and unpaid agents, administrators, users, and customers of CyberArk. It applies in all CyberArk community venues, online and in person, including CyberArk Open Source project communities (such as public GitHub repositories, chat channels, social media, mailing lists, and public events) and in one-on-one communications pertaining to CyberArk affairs.
|
||||
This policy covers the usage of CyberArk hosted services, as well as the CyberArk website, CyberArk related events, and any other services offered by or on behalf of CyberArk (collectively, the "Service").
|
||||
This Code of Conduct is in addition to, and does not in any way nullify or invalidate, any other terms or conditions related to use of the Service.
|
||||
|
||||
|
||||
## Maintaining a Friendly, Harassment-Free Space
|
||||
|
||||
We are committed to providing a friendly, safe and welcoming environment for all, regardless of gender identity, sexual orientation, ability, ethnicity, religion, age, physical appearance, body size, race, or similar personal characteristics.
|
||||
We ask that you please respect that people have differences of opinion regarding technical choices, and that every design or implementation choice carries a trade-off and numerous costs. There is seldom a single right answer. A difference of technology preferences is not a license to be rude.
|
||||
Harassing other users of the Service for any reason is never tolerated, whether via public or private media. Any spamming, trolling, flaming, baiting, or other attention-stealing behavior is not welcome, and will not be tolerated.
|
||||
Even if your intent is not to harass or offend others, be mindful of how your comments might be perceived by others in the community.
|
||||
|
||||
|
||||
## Unacceptable Behavior
|
||||
|
||||
The following behaviors are considered harassment under this Code of Conduct and are unacceptable within our community:
|
||||
- Violence, threats of violence, or violent language directed against another person or group of people.
|
||||
- Sexist, racist, homophobic, transphobic, ableist, or otherwise discriminatory jokes and language.
|
||||
- Posting or displaying sexually explicit or violent material.
|
||||
- Posting or threatening to post other people’s personally identifying information ("doxing").
|
||||
- Personal insults, particularly those related to related to gender identity, sexual orientation, ability, ethnicity, religion, age, physical appearance, body size, race, or similar personal characteristics.
|
||||
- Using offensive or harassing nicknames or other identifiers.
|
||||
- Inappropriate photography or recording.
|
||||
- Inappropriate physical contact. You should have someone’s consent before touching them.
|
||||
- Unwelcome sexual attention. This includes: sexualized comments or jokes; inappropriate touching, groping, and unwelcome sexual advances.
|
||||
- Deliberate intimidation, stalking, or following (online or in person).
|
||||
- Sustained disruption of community events, including talks and presentations.
|
||||
- Advocating for, or encouraging, any of the above behavior.
|
||||
|
||||
## Reporting Violations
|
||||
|
||||
If you witness or experience unacceptable behavior in the CyberArk community, please promptly report it to our team at ReportAbuse@cyberark.com. If this is the initial report of a problem, please include as much detail as possible. It is easiest for us to address issues when we have more context.
|
||||
The CyberArk Community Team will look into any reported issues in a confidential manner and take any necessary actions to address and resolve the problem.
|
||||
We will not tolerate any form of retaliation towards users who report these issues to us.
|
||||
If you feel that you have been falsely or unfairly accused of violating this Code of Conduct by others in the community, you should notify the ReportAbuse@cyberark.com team so that we can address and resolve the accusation.
|
||||
As always, if you have an urgent security issue, contact product_security@cyberark.com and if you have concerns about a potential copyright violation, contact legal@cyberark.com.
|
||||
|
||||
## Consequences
|
||||
|
||||
All content published to the Service, including user account credentials, is hosted at the sole discretion of the CyberArk administrators. If a community member engages in unacceptable behavior, the CyberArk administrators may take any action they deem appropriate, up to and including a temporary ban or permanent expulsion from the community without warning. In general, we will choose the course of action that we judge as being most in the interest of fostering a safe and friendly community.
|
||||
|
||||
## Contact Info
|
||||
Please contact ReportAbuse@cyberark.com if you need to report a problem or address a grievance related to an abuse report.
|
||||
You are also encouraged to contact us if you have questions about what constitutes appropriate and inappropriate content. We are happy to provide guidance to help you be a successful part of our community. Our technical community is available [here](https://cyberark-customers.force.com/s/).
|
||||
|
||||
## Credit and License
|
||||
|
||||
This Code of Conduct borrows from the [npm Code of Conduct](https://www.npmjs.com/policies/conduct), Stumptown Syndicate [Citizen's Code of Conduct](http://citizencodeofconduct.org/), and the [Rust Project Code of Conduct](https://www.rust-lang.org/conduct.html).
|
||||
This document may be reused under a [Creative Commons Attribution-ShareAlike License](https://creativecommons.org/licenses/by-sa/4.0/).
|
||||
|
||||
|
||||
@@ -0,0 +1,201 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright (c) 2022 CyberArk Software Ltd. All rights reserved.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
@@ -0,0 +1,211 @@
|
||||
RPCMon is using the following open source components:
|
||||
|
||||
NtApiDotNet (https://github.com/googleprojectzero/sandbox-attacksurface-analysis-tools) : Apache License 2.0
|
||||
(c) Google LLC. 2015 - 2021
|
||||
Developed by James Forshaw
|
||||
|
||||
Apache License 2.0
|
||||
======================
|
||||
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
@@ -0,0 +1,58 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<None Condition="Exists('$(MSBuildThisFileDirectory)..\lib\native\x86\KernelTraceControl.dll')" Include="$(MSBuildThisFileDirectory)..\lib\native\x86\KernelTraceControl.dll">
|
||||
<Link>x86\KernelTraceControl.dll</Link>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
<Visible>False</Visible>
|
||||
</None>
|
||||
<None Condition="Exists('$(MSBuildThisFileDirectory)..\lib\native\x86\KernelTraceControl.Win61.dll')" Include="$(MSBuildThisFileDirectory)..\lib\native\x86\KernelTraceControl.Win61.dll">
|
||||
<Link>x86\KernelTraceControl.Win61.dll</Link>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
<Visible>False</Visible>
|
||||
</None>
|
||||
<None Condition="Exists('$(MSBuildThisFileDirectory)..\lib\native\x86\msdia140.dll')" Include="$(MSBuildThisFileDirectory)..\lib\native\x86\msdia140.dll">
|
||||
<Link>x86\msdia140.dll</Link>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
<Visible>False</Visible>
|
||||
</None>
|
||||
<None Condition="Exists('$(MSBuildThisFileDirectory)..\lib\native\amd64\KernelTraceControl.dll')" Include="$(MSBuildThisFileDirectory)..\lib\native\amd64\KernelTraceControl.dll">
|
||||
<Link>amd64\KernelTraceControl.dll</Link>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
<Visible>False</Visible>
|
||||
</None>
|
||||
<None Condition="Exists('$(MSBuildThisFileDirectory)..\lib\native\amd64\msdia140.dll')" Include="$(MSBuildThisFileDirectory)..\lib\native\amd64\msdia140.dll">
|
||||
<Link>amd64\msdia140.dll</Link>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
<Visible>False</Visible>
|
||||
</None>
|
||||
|
||||
<!-- There are no static references to these so I need to copy them explicitly.
|
||||
The first two COM interop assemblies so they are the same for all targets, I pick netstandard1.6 pretty arbitraily
|
||||
OSExtensions is also the same for all targets. It needs to be copied for the dev-time case since in that case it runs the DLLs from the .nuget cache
|
||||
by default, and OSExtensions needs to be in the right relative location with respect to the native DLLs (since it loads them via relative path).
|
||||
-->
|
||||
<None Condition="Exists('$(MSBuildThisFileDirectory)..\lib\netstandard1.6\TraceReloggerLib.dll')" Include="$(MSBuildThisFileDirectory)..\lib\netstandard1.6\TraceReloggerLib.dll">
|
||||
<Link>TraceReloggerLib.dll</Link>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
<Visible>False</Visible>
|
||||
</None>
|
||||
<None Condition="Exists('$(MSBuildThisFileDirectory)..\lib\netstandard1.6\Dia2Lib.dll')" Include="$(MSBuildThisFileDirectory)..\lib\netstandard1.6\Dia2Lib.dll">
|
||||
<Link>Dia2Lib.dll</Link>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
<Visible>False</Visible>
|
||||
</None>
|
||||
|
||||
<!-- you have to pick the right version of this DLL because it depends on things besides System.Runtime.dll -->
|
||||
<None Condition="'$(TargetFrameworkIdentifier)' != '.NETFramework' AND Exists('$(MSBuildThisFileDirectory)..\lib\netstandard1.6\OSExtensions.dll')" Include="$(MSBuildThisFileDirectory)..\lib\netstandard1.6\OSExtensions.dll">
|
||||
<Link>OSExtensions.dll</Link>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
<Visible>False</Visible>
|
||||
</None>
|
||||
<None Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' AND Exists('$(MSBuildThisFileDirectory)..\lib\net45\OSExtensions.dll')" Include="$(MSBuildThisFileDirectory)..\lib\net45\OSExtensions.dll">
|
||||
<Link>OSExtensions.dll</Link>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
<Visible>False</Visible>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,20 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2007 James Newton-King
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
After Width: | Height: | Size: 8.7 KiB |
@@ -0,0 +1,42 @@
|
||||
[![GitHub release][release-img]][release]
|
||||
[![License][license-img]][license]
|
||||
|
||||
<img src="https://github.com/cyberark/RPCMon/blob/assets/RPCMonLogo.png" width="260">
|
||||
A GUI tool for scanning RPC communication through Event Tracing for Windows (ETW).
|
||||
The tool was published as part of a research on RPC communication between the host and a Windows container.
|
||||
|
||||
## Overview
|
||||
RPCMon can help researchers to get a high level view over an RPC communication between processes. It was built like Procmon for easy usage, and uses James Forshaw .NET library for RPC. RPCMon can show you the RPC functions being called, the process who called them, and other relevant information.
|
||||
RPCMon uses a hardcoded RPC dictionary for fast RPC information processing which contains information about RPC modules. It also have an option to build an RPC database so it will be updated from your computer in case some details are missing in the hardcoded RPC dictionary.
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
Double click the EXE binary and you will get the GUI Windows.
|
||||
RPCMon needs a DB to be able to get the details on the RPC functions, without a DB you will have missing information.
|
||||
To load the DB, press on `DB -> Load DB...` and choose your DB. You can a DB we added to this project: `/DB/RPC_UUID_Map_Windows10_1909_18363.1977.rpcdb.json`.
|
||||
|
||||
## Features
|
||||
* A detailed overview of RPC functions activity.
|
||||
* Build an RPC database to parse RPC modules or use hardcoded database.
|
||||
* Filter\highlight rows based on cells.
|
||||
* Bold specific rows.
|
||||
|
||||
## Demo
|
||||
|
||||
https://user-images.githubusercontent.com/11998736/165285471-e143eebd-bfbf-49a2-8e70-107f083c60fc.mp4
|
||||
|
||||
|
||||
## License
|
||||
Copyright (c) 2022 CyberArk Software Ltd. All rights reserved
|
||||
This repository is licensed under Apache-2.0 License - see [`LICENSE`](LICENSE) for more details.
|
||||
|
||||
|
||||
## References:
|
||||
For more comments, suggestions or questions, you can contact Eviatar Gerzi ([@g3rzi](https://twitter.com/g3rzi)) and CyberArk Labs.
|
||||
|
||||
[release-img]: https://img.shields.io/github/release/cyberark/RPCMon.svg
|
||||
[release]: https://github.com/cyberark/RPCMon/releases
|
||||
|
||||
[license-img]: https://img.shields.io/github/license/cyberark/RPCMon.svg
|
||||
[license]: https://github.com/cyberark/RPCMon/blob/master/LICENSE
|
||||
@@ -0,0 +1,25 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.28307.1259
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RPCMon", "RPCMon\RPCMon.csproj", "{9DE6BB01-5955-4EE7-BD74-B47AEC15EFBB}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{9DE6BB01-5955-4EE7-BD74-B47AEC15EFBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9DE6BB01-5955-4EE7-BD74-B47AEC15EFBB}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9DE6BB01-5955-4EE7-BD74-B47AEC15EFBB}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{9DE6BB01-5955-4EE7-BD74-B47AEC15EFBB}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {3E5F2A9C-F3C4-44CA-BA75-CD69F673F609}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
|
||||
</startup>
|
||||
</configuration>
|
||||
@@ -0,0 +1,268 @@
|
||||
namespace RPCMon
|
||||
{
|
||||
partial class ColumnFilter
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.comboBoxSearchByColumn = new System.Windows.Forms.ComboBox();
|
||||
this.comboBoxRelation = new System.Windows.Forms.ComboBox();
|
||||
this.comboBoxValue = new System.Windows.Forms.ComboBox();
|
||||
this.listViewColumnFilters = new System.Windows.Forms.ListView();
|
||||
this.columnHeaderColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.columnHeaderRelation = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.columnHeaderValue = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.columnHeaderAction = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.comboBoxAction = new System.Windows.Forms.ComboBox();
|
||||
this.buttonOK = new System.Windows.Forms.Button();
|
||||
this.buttonCancel = new System.Windows.Forms.Button();
|
||||
this.buttonAdd = new System.Windows.Forms.Button();
|
||||
this.buttonRemove = new System.Windows.Forms.Button();
|
||||
this.labelThen = new System.Windows.Forms.Label();
|
||||
this.buttonReset = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(12, 9);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(205, 13);
|
||||
this.label1.TabIndex = 0;
|
||||
this.label1.Text = "Display entried matching these conditions:";
|
||||
//
|
||||
// comboBoxSearchByColumn
|
||||
//
|
||||
this.comboBoxSearchByColumn.BackColor = System.Drawing.SystemColors.Window;
|
||||
this.comboBoxSearchByColumn.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comboBoxSearchByColumn.FormattingEnabled = true;
|
||||
this.comboBoxSearchByColumn.Items.AddRange(new object[] {
|
||||
"PID",
|
||||
"TID",
|
||||
"ProcessName",
|
||||
"UUID",
|
||||
"Module",
|
||||
"ModulePath",
|
||||
"ProceduresCount",
|
||||
"Service",
|
||||
"Function",
|
||||
"NetworkAddress",
|
||||
"Protocol",
|
||||
"Endpoint",
|
||||
"Options",
|
||||
"AuthenticationLevel",
|
||||
"AuthenticationService",
|
||||
"ImpersonationLevel"});
|
||||
this.comboBoxSearchByColumn.Location = new System.Drawing.Point(12, 25);
|
||||
this.comboBoxSearchByColumn.Name = "comboBoxSearchByColumn";
|
||||
this.comboBoxSearchByColumn.Size = new System.Drawing.Size(121, 21);
|
||||
this.comboBoxSearchByColumn.TabIndex = 1;
|
||||
//
|
||||
// comboBoxRelation
|
||||
//
|
||||
this.comboBoxRelation.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comboBoxRelation.FormattingEnabled = true;
|
||||
this.comboBoxRelation.Items.AddRange(new object[] {
|
||||
"contains",
|
||||
"is",
|
||||
"begins with",
|
||||
"ends with"});
|
||||
this.comboBoxRelation.Location = new System.Drawing.Point(140, 26);
|
||||
this.comboBoxRelation.Name = "comboBoxRelation";
|
||||
this.comboBoxRelation.Size = new System.Drawing.Size(87, 21);
|
||||
this.comboBoxRelation.TabIndex = 2;
|
||||
//
|
||||
// comboBoxValue
|
||||
//
|
||||
this.comboBoxValue.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.comboBoxValue.FormattingEnabled = true;
|
||||
this.comboBoxValue.Location = new System.Drawing.Point(244, 25);
|
||||
this.comboBoxValue.Name = "comboBoxValue";
|
||||
this.comboBoxValue.Size = new System.Drawing.Size(412, 21);
|
||||
this.comboBoxValue.TabIndex = 3;
|
||||
//
|
||||
// listViewColumnFilters
|
||||
//
|
||||
this.listViewColumnFilters.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.listViewColumnFilters.CheckBoxes = true;
|
||||
this.listViewColumnFilters.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.columnHeaderColumn,
|
||||
this.columnHeaderRelation,
|
||||
this.columnHeaderValue,
|
||||
this.columnHeaderAction});
|
||||
this.listViewColumnFilters.HideSelection = false;
|
||||
this.listViewColumnFilters.Location = new System.Drawing.Point(15, 85);
|
||||
this.listViewColumnFilters.Name = "listViewColumnFilters";
|
||||
this.listViewColumnFilters.Size = new System.Drawing.Size(776, 312);
|
||||
this.listViewColumnFilters.TabIndex = 4;
|
||||
this.listViewColumnFilters.UseCompatibleStateImageBehavior = false;
|
||||
this.listViewColumnFilters.View = System.Windows.Forms.View.Details;
|
||||
this.listViewColumnFilters.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.listViewColumnFilters_MouseDoubleClick);
|
||||
//
|
||||
// columnHeaderColumn
|
||||
//
|
||||
this.columnHeaderColumn.Text = "Column";
|
||||
this.columnHeaderColumn.Width = 92;
|
||||
//
|
||||
// columnHeaderRelation
|
||||
//
|
||||
this.columnHeaderRelation.Text = "Relation";
|
||||
//
|
||||
// columnHeaderValue
|
||||
//
|
||||
this.columnHeaderValue.Text = "Value";
|
||||
//
|
||||
// columnHeaderAction
|
||||
//
|
||||
this.columnHeaderAction.Text = "Action";
|
||||
//
|
||||
// comboBoxAction
|
||||
//
|
||||
this.comboBoxAction.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.comboBoxAction.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comboBoxAction.FormattingEnabled = true;
|
||||
this.comboBoxAction.Items.AddRange(new object[] {
|
||||
"Include",
|
||||
"Exclude"});
|
||||
this.comboBoxAction.Location = new System.Drawing.Point(704, 25);
|
||||
this.comboBoxAction.Name = "comboBoxAction";
|
||||
this.comboBoxAction.Size = new System.Drawing.Size(84, 21);
|
||||
this.comboBoxAction.TabIndex = 5;
|
||||
//
|
||||
// buttonOK
|
||||
//
|
||||
this.buttonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonOK.Location = new System.Drawing.Point(623, 415);
|
||||
this.buttonOK.Name = "buttonOK";
|
||||
this.buttonOK.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonOK.TabIndex = 6;
|
||||
this.buttonOK.Text = "OK";
|
||||
this.buttonOK.UseVisualStyleBackColor = true;
|
||||
this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
|
||||
//
|
||||
// buttonCancel
|
||||
//
|
||||
this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonCancel.Location = new System.Drawing.Point(713, 415);
|
||||
this.buttonCancel.Name = "buttonCancel";
|
||||
this.buttonCancel.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonCancel.TabIndex = 7;
|
||||
this.buttonCancel.Text = "Cancel";
|
||||
this.buttonCancel.UseVisualStyleBackColor = true;
|
||||
this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
|
||||
//
|
||||
// buttonAdd
|
||||
//
|
||||
this.buttonAdd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonAdd.Location = new System.Drawing.Point(623, 56);
|
||||
this.buttonAdd.Name = "buttonAdd";
|
||||
this.buttonAdd.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonAdd.TabIndex = 8;
|
||||
this.buttonAdd.Text = "Add";
|
||||
this.buttonAdd.UseVisualStyleBackColor = true;
|
||||
this.buttonAdd.Click += new System.EventHandler(this.buttonAdd_Click);
|
||||
//
|
||||
// buttonRemove
|
||||
//
|
||||
this.buttonRemove.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonRemove.Location = new System.Drawing.Point(713, 56);
|
||||
this.buttonRemove.Name = "buttonRemove";
|
||||
this.buttonRemove.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonRemove.TabIndex = 9;
|
||||
this.buttonRemove.Text = "Remove";
|
||||
this.buttonRemove.UseVisualStyleBackColor = true;
|
||||
this.buttonRemove.Click += new System.EventHandler(this.buttonRemove_Click);
|
||||
//
|
||||
// labelThen
|
||||
//
|
||||
this.labelThen.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.labelThen.AutoSize = true;
|
||||
this.labelThen.Location = new System.Drawing.Point(662, 28);
|
||||
this.labelThen.Name = "labelThen";
|
||||
this.labelThen.Size = new System.Drawing.Size(28, 13);
|
||||
this.labelThen.TabIndex = 10;
|
||||
this.labelThen.Text = "then";
|
||||
//
|
||||
// buttonReset
|
||||
//
|
||||
this.buttonReset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonReset.Location = new System.Drawing.Point(15, 56);
|
||||
this.buttonReset.Name = "buttonReset";
|
||||
this.buttonReset.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonReset.TabIndex = 11;
|
||||
this.buttonReset.Text = "Reset";
|
||||
this.buttonReset.UseVisualStyleBackColor = true;
|
||||
this.buttonReset.Click += new System.EventHandler(this.buttonReset_Click);
|
||||
//
|
||||
// ColumnFilter
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(800, 450);
|
||||
this.Controls.Add(this.buttonReset);
|
||||
this.Controls.Add(this.labelThen);
|
||||
this.Controls.Add(this.buttonRemove);
|
||||
this.Controls.Add(this.buttonAdd);
|
||||
this.Controls.Add(this.buttonCancel);
|
||||
this.Controls.Add(this.buttonOK);
|
||||
this.Controls.Add(this.comboBoxAction);
|
||||
this.Controls.Add(this.listViewColumnFilters);
|
||||
this.Controls.Add(this.comboBoxValue);
|
||||
this.Controls.Add(this.comboBoxRelation);
|
||||
this.Controls.Add(this.comboBoxSearchByColumn);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Name = "ColumnFilter";
|
||||
this.ShowIcon = false;
|
||||
this.Text = "RPCMon Filter";
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.ComboBox comboBoxSearchByColumn;
|
||||
private System.Windows.Forms.ComboBox comboBoxRelation;
|
||||
private System.Windows.Forms.ComboBox comboBoxValue;
|
||||
private System.Windows.Forms.ListView listViewColumnFilters;
|
||||
private System.Windows.Forms.ColumnHeader columnHeaderColumn;
|
||||
private System.Windows.Forms.ColumnHeader columnHeaderRelation;
|
||||
private System.Windows.Forms.ColumnHeader columnHeaderValue;
|
||||
private System.Windows.Forms.ColumnHeader columnHeaderAction;
|
||||
private System.Windows.Forms.ComboBox comboBoxAction;
|
||||
private System.Windows.Forms.Button buttonOK;
|
||||
private System.Windows.Forms.Button buttonCancel;
|
||||
private System.Windows.Forms.Button buttonAdd;
|
||||
private System.Windows.Forms.Button buttonRemove;
|
||||
private System.Windows.Forms.Label labelThen;
|
||||
private System.Windows.Forms.Button buttonReset;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,128 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using static System.Windows.Forms.ListViewItem;
|
||||
|
||||
namespace RPCMon
|
||||
{
|
||||
public delegate void FilterOKEventHandler(ListView i_listViewColumnFilter);
|
||||
|
||||
public partial class ColumnFilter : Form
|
||||
{
|
||||
private DataGridView m_DataGridView;
|
||||
public event FilterOKEventHandler FilterOKUpdate;
|
||||
public ColumnFilter(ref ListView i_ListViewColumnFilter)
|
||||
{
|
||||
InitializeComponentWrapper();
|
||||
|
||||
foreach (ListViewItem item in i_ListViewColumnFilter.Items)
|
||||
{
|
||||
ListViewItem clonedItem = (ListViewItem)item.Clone();
|
||||
this.listViewColumnFilters.Items.Add(clonedItem);
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void OnFilterOKUpdate(ListView i_listViewColumnFilter)
|
||||
{
|
||||
if (FilterOKUpdate != null)
|
||||
{
|
||||
FilterOKUpdate.Invoke(i_listViewColumnFilter);
|
||||
}
|
||||
}
|
||||
|
||||
private void InitializeComponentWrapper()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.comboBoxSearchByColumn.SelectedIndex = 0;
|
||||
this.comboBoxRelation.SelectedIndex = 0;
|
||||
this.comboBoxAction.SelectedIndex = 0;
|
||||
this.listViewColumnFilters.FullRowSelect = true;
|
||||
}
|
||||
|
||||
public ColumnFilter(ref DataGridView i_DataGridView)
|
||||
{
|
||||
m_DataGridView = i_DataGridView;
|
||||
InitializeComponentWrapper();
|
||||
}
|
||||
|
||||
private void buttonOK_Click(object sender, EventArgs e)
|
||||
{
|
||||
OnFilterOKUpdate(this.listViewColumnFilters);
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void buttonCancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
// DUPLICATED function in FormHighlighting
|
||||
// Maybe create a shared function in Utils but it threw an exception for "type initializer"
|
||||
private bool isRowExist(string i_Column, string i_Relation, string i_Value, string i_Action)
|
||||
{
|
||||
bool isExist = false;
|
||||
string newRow = i_Column + i_Relation + i_Value + i_Action;
|
||||
foreach (ListViewItem item in listViewColumnFilters.Items)
|
||||
{
|
||||
string rawRow = "";
|
||||
foreach (ListViewSubItem subItem in item.SubItems)
|
||||
{
|
||||
rawRow += subItem.Text;
|
||||
}
|
||||
|
||||
if (newRow == rawRow)
|
||||
{
|
||||
isExist = true;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return isExist;
|
||||
}
|
||||
|
||||
private void buttonAdd_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!isRowExist(comboBoxSearchByColumn.Text, comboBoxRelation.Text, comboBoxValue.Text, comboBoxAction.Text))
|
||||
{
|
||||
ListViewItem item = new ListViewItem(comboBoxSearchByColumn.Text);
|
||||
item.SubItems.Add(comboBoxRelation.Text);
|
||||
item.SubItems.Add(comboBoxValue.Text);
|
||||
item.SubItems.Add(comboBoxAction.Text);
|
||||
item.Checked = true;
|
||||
this.listViewColumnFilters.Items.Add(item);
|
||||
}
|
||||
}
|
||||
|
||||
private void buttonRemove_Click(object sender, EventArgs e)
|
||||
{
|
||||
foreach (ListViewItem item in this.listViewColumnFilters.SelectedItems)
|
||||
{
|
||||
item.Remove();
|
||||
}
|
||||
}
|
||||
|
||||
private void listViewColumnFilters_MouseDoubleClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
foreach (ListViewItem item in ((ListView)sender).SelectedItems)
|
||||
{
|
||||
this.comboBoxSearchByColumn.Text = item.SubItems[0].Text;
|
||||
this.comboBoxRelation.Text = item.SubItems[1].Text;
|
||||
this.comboBoxValue.Text = item.SubItems[2].Text;
|
||||
this.comboBoxAction.Text = item.SubItems[3].Text;
|
||||
item.Remove();
|
||||
}
|
||||
}
|
||||
|
||||
private void buttonReset_Click(object sender, EventArgs e)
|
||||
{
|
||||
listViewColumnFilters.Items.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -0,0 +1,362 @@
|
||||
namespace RPCMon
|
||||
{
|
||||
partial class ColumnSelection
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.groupBoxProcessManagement = new System.Windows.Forms.GroupBox();
|
||||
this.checkBoxProcessName = new System.Windows.Forms.CheckBox();
|
||||
this.checkBoxTID = new System.Windows.Forms.CheckBox();
|
||||
this.checkBoxPID = new System.Windows.Forms.CheckBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.groupBoxRPC = new System.Windows.Forms.GroupBox();
|
||||
this.checkBoxImpersonationLevel = new System.Windows.Forms.CheckBox();
|
||||
this.checkBoxAuthenticationLevel = new System.Windows.Forms.CheckBox();
|
||||
this.checkBoxAuthenticationService = new System.Windows.Forms.CheckBox();
|
||||
this.checkBoxOptions = new System.Windows.Forms.CheckBox();
|
||||
this.checkBoxEndpoint = new System.Windows.Forms.CheckBox();
|
||||
this.checkBoxProtocol = new System.Windows.Forms.CheckBox();
|
||||
this.checkBoxNetworkAddress = new System.Windows.Forms.CheckBox();
|
||||
this.checkBoxService = new System.Windows.Forms.CheckBox();
|
||||
this.checkBoxUUID = new System.Windows.Forms.CheckBox();
|
||||
this.buttonOK = new System.Windows.Forms.Button();
|
||||
this.buttonCancel = new System.Windows.Forms.Button();
|
||||
this.groupBoxRPCServer = new System.Windows.Forms.GroupBox();
|
||||
this.checkBoxModulePath = new System.Windows.Forms.CheckBox();
|
||||
this.checkBoxModule = new System.Windows.Forms.CheckBox();
|
||||
this.checkBoxProceduresCount = new System.Windows.Forms.CheckBox();
|
||||
this.checkBoxFunction = new System.Windows.Forms.CheckBox();
|
||||
this.groupBoxProcessManagement.SuspendLayout();
|
||||
this.groupBoxRPC.SuspendLayout();
|
||||
this.groupBoxRPCServer.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// groupBoxProcessManagement
|
||||
//
|
||||
this.groupBoxProcessManagement.Controls.Add(this.checkBoxProcessName);
|
||||
this.groupBoxProcessManagement.Controls.Add(this.checkBoxTID);
|
||||
this.groupBoxProcessManagement.Controls.Add(this.checkBoxPID);
|
||||
this.groupBoxProcessManagement.Location = new System.Drawing.Point(12, 47);
|
||||
this.groupBoxProcessManagement.Name = "groupBoxProcessManagement";
|
||||
this.groupBoxProcessManagement.Size = new System.Drawing.Size(272, 77);
|
||||
this.groupBoxProcessManagement.TabIndex = 0;
|
||||
this.groupBoxProcessManagement.TabStop = false;
|
||||
this.groupBoxProcessManagement.Text = "RPC Client";
|
||||
//
|
||||
// checkBoxProcessName
|
||||
//
|
||||
this.checkBoxProcessName.AutoSize = true;
|
||||
this.checkBoxProcessName.Checked = true;
|
||||
this.checkBoxProcessName.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.checkBoxProcessName.Location = new System.Drawing.Point(6, 53);
|
||||
this.checkBoxProcessName.Name = "checkBoxProcessName";
|
||||
this.checkBoxProcessName.Size = new System.Drawing.Size(92, 17);
|
||||
this.checkBoxProcessName.TabIndex = 2;
|
||||
this.checkBoxProcessName.Text = "ProcessName";
|
||||
this.checkBoxProcessName.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBoxTID
|
||||
//
|
||||
this.checkBoxTID.AutoSize = true;
|
||||
this.checkBoxTID.Checked = true;
|
||||
this.checkBoxTID.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.checkBoxTID.Location = new System.Drawing.Point(132, 30);
|
||||
this.checkBoxTID.Name = "checkBoxTID";
|
||||
this.checkBoxTID.Size = new System.Drawing.Size(44, 17);
|
||||
this.checkBoxTID.TabIndex = 1;
|
||||
this.checkBoxTID.Text = "TID";
|
||||
this.checkBoxTID.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBoxPID
|
||||
//
|
||||
this.checkBoxPID.AutoSize = true;
|
||||
this.checkBoxPID.Checked = true;
|
||||
this.checkBoxPID.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.checkBoxPID.Location = new System.Drawing.Point(7, 30);
|
||||
this.checkBoxPID.Name = "checkBoxPID";
|
||||
this.checkBoxPID.Size = new System.Drawing.Size(44, 17);
|
||||
this.checkBoxPID.TabIndex = 0;
|
||||
this.checkBoxPID.Text = "PID";
|
||||
this.checkBoxPID.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(12, 19);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(243, 13);
|
||||
this.label1.TabIndex = 1;
|
||||
this.label1.Text = "Select columns to appear in the Procnoid window:";
|
||||
//
|
||||
// groupBoxRPC
|
||||
//
|
||||
this.groupBoxRPC.Controls.Add(this.checkBoxImpersonationLevel);
|
||||
this.groupBoxRPC.Controls.Add(this.checkBoxAuthenticationLevel);
|
||||
this.groupBoxRPC.Controls.Add(this.checkBoxAuthenticationService);
|
||||
this.groupBoxRPC.Controls.Add(this.checkBoxOptions);
|
||||
this.groupBoxRPC.Controls.Add(this.checkBoxEndpoint);
|
||||
this.groupBoxRPC.Controls.Add(this.checkBoxProtocol);
|
||||
this.groupBoxRPC.Controls.Add(this.checkBoxNetworkAddress);
|
||||
this.groupBoxRPC.Location = new System.Drawing.Point(12, 253);
|
||||
this.groupBoxRPC.Name = "groupBoxRPC";
|
||||
this.groupBoxRPC.Size = new System.Drawing.Size(272, 122);
|
||||
this.groupBoxRPC.TabIndex = 3;
|
||||
this.groupBoxRPC.TabStop = false;
|
||||
this.groupBoxRPC.Text = "RPC Misc";
|
||||
//
|
||||
// checkBoxImpersonationLevel
|
||||
//
|
||||
this.checkBoxImpersonationLevel.AutoSize = true;
|
||||
this.checkBoxImpersonationLevel.Checked = true;
|
||||
this.checkBoxImpersonationLevel.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.checkBoxImpersonationLevel.Location = new System.Drawing.Point(8, 97);
|
||||
this.checkBoxImpersonationLevel.Name = "checkBoxImpersonationLevel";
|
||||
this.checkBoxImpersonationLevel.Size = new System.Drawing.Size(118, 17);
|
||||
this.checkBoxImpersonationLevel.TabIndex = 8;
|
||||
this.checkBoxImpersonationLevel.Text = "ImpersonationLevel";
|
||||
this.checkBoxImpersonationLevel.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBoxAuthenticationLevel
|
||||
//
|
||||
this.checkBoxAuthenticationLevel.AutoSize = true;
|
||||
this.checkBoxAuthenticationLevel.Location = new System.Drawing.Point(7, 74);
|
||||
this.checkBoxAuthenticationLevel.Name = "checkBoxAuthenticationLevel";
|
||||
this.checkBoxAuthenticationLevel.Size = new System.Drawing.Size(120, 17);
|
||||
this.checkBoxAuthenticationLevel.TabIndex = 7;
|
||||
this.checkBoxAuthenticationLevel.Text = "AuthenticationLevel";
|
||||
this.checkBoxAuthenticationLevel.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBoxAuthenticationService
|
||||
//
|
||||
this.checkBoxAuthenticationService.AutoSize = true;
|
||||
this.checkBoxAuthenticationService.Location = new System.Drawing.Point(133, 74);
|
||||
this.checkBoxAuthenticationService.Name = "checkBoxAuthenticationService";
|
||||
this.checkBoxAuthenticationService.Size = new System.Drawing.Size(130, 17);
|
||||
this.checkBoxAuthenticationService.TabIndex = 6;
|
||||
this.checkBoxAuthenticationService.Text = "AuthenticationService";
|
||||
this.checkBoxAuthenticationService.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBoxOptions
|
||||
//
|
||||
this.checkBoxOptions.AutoSize = true;
|
||||
this.checkBoxOptions.Location = new System.Drawing.Point(133, 51);
|
||||
this.checkBoxOptions.Name = "checkBoxOptions";
|
||||
this.checkBoxOptions.Size = new System.Drawing.Size(62, 17);
|
||||
this.checkBoxOptions.TabIndex = 5;
|
||||
this.checkBoxOptions.Text = "Options";
|
||||
this.checkBoxOptions.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBoxEndpoint
|
||||
//
|
||||
this.checkBoxEndpoint.AutoSize = true;
|
||||
this.checkBoxEndpoint.Checked = true;
|
||||
this.checkBoxEndpoint.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.checkBoxEndpoint.Location = new System.Drawing.Point(7, 51);
|
||||
this.checkBoxEndpoint.Name = "checkBoxEndpoint";
|
||||
this.checkBoxEndpoint.Size = new System.Drawing.Size(68, 17);
|
||||
this.checkBoxEndpoint.TabIndex = 4;
|
||||
this.checkBoxEndpoint.Text = "Endpoint";
|
||||
this.checkBoxEndpoint.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBoxProtocol
|
||||
//
|
||||
this.checkBoxProtocol.AutoSize = true;
|
||||
this.checkBoxProtocol.Checked = true;
|
||||
this.checkBoxProtocol.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.checkBoxProtocol.Location = new System.Drawing.Point(133, 28);
|
||||
this.checkBoxProtocol.Name = "checkBoxProtocol";
|
||||
this.checkBoxProtocol.Size = new System.Drawing.Size(65, 17);
|
||||
this.checkBoxProtocol.TabIndex = 3;
|
||||
this.checkBoxProtocol.Text = "Protocol";
|
||||
this.checkBoxProtocol.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBoxNetworkAddress
|
||||
//
|
||||
this.checkBoxNetworkAddress.AutoSize = true;
|
||||
this.checkBoxNetworkAddress.Location = new System.Drawing.Point(7, 28);
|
||||
this.checkBoxNetworkAddress.Name = "checkBoxNetworkAddress";
|
||||
this.checkBoxNetworkAddress.Size = new System.Drawing.Size(104, 17);
|
||||
this.checkBoxNetworkAddress.TabIndex = 2;
|
||||
this.checkBoxNetworkAddress.Text = "NetworkAddress";
|
||||
this.checkBoxNetworkAddress.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBoxService
|
||||
//
|
||||
this.checkBoxService.AutoSize = true;
|
||||
this.checkBoxService.Checked = true;
|
||||
this.checkBoxService.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.checkBoxService.Location = new System.Drawing.Point(132, 76);
|
||||
this.checkBoxService.Name = "checkBoxService";
|
||||
this.checkBoxService.Size = new System.Drawing.Size(62, 17);
|
||||
this.checkBoxService.TabIndex = 1;
|
||||
this.checkBoxService.Text = "Service";
|
||||
this.checkBoxService.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBoxUUID
|
||||
//
|
||||
this.checkBoxUUID.AutoSize = true;
|
||||
this.checkBoxUUID.Checked = true;
|
||||
this.checkBoxUUID.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.checkBoxUUID.Location = new System.Drawing.Point(6, 30);
|
||||
this.checkBoxUUID.Name = "checkBoxUUID";
|
||||
this.checkBoxUUID.Size = new System.Drawing.Size(53, 17);
|
||||
this.checkBoxUUID.TabIndex = 0;
|
||||
this.checkBoxUUID.Text = "UUID";
|
||||
this.checkBoxUUID.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// buttonOK
|
||||
//
|
||||
this.buttonOK.Location = new System.Drawing.Point(113, 391);
|
||||
this.buttonOK.Name = "buttonOK";
|
||||
this.buttonOK.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonOK.TabIndex = 4;
|
||||
this.buttonOK.Text = "OK";
|
||||
this.buttonOK.UseVisualStyleBackColor = true;
|
||||
this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
|
||||
//
|
||||
// buttonCancel
|
||||
//
|
||||
this.buttonCancel.Location = new System.Drawing.Point(209, 391);
|
||||
this.buttonCancel.Name = "buttonCancel";
|
||||
this.buttonCancel.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonCancel.TabIndex = 5;
|
||||
this.buttonCancel.Text = "Cancel";
|
||||
this.buttonCancel.UseVisualStyleBackColor = true;
|
||||
this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
|
||||
//
|
||||
// groupBoxRPCServer
|
||||
//
|
||||
this.groupBoxRPCServer.Controls.Add(this.checkBoxFunction);
|
||||
this.groupBoxRPCServer.Controls.Add(this.checkBoxModulePath);
|
||||
this.groupBoxRPCServer.Controls.Add(this.checkBoxModule);
|
||||
this.groupBoxRPCServer.Controls.Add(this.checkBoxProceduresCount);
|
||||
this.groupBoxRPCServer.Controls.Add(this.checkBoxUUID);
|
||||
this.groupBoxRPCServer.Controls.Add(this.checkBoxService);
|
||||
this.groupBoxRPCServer.Location = new System.Drawing.Point(12, 139);
|
||||
this.groupBoxRPCServer.Name = "groupBoxRPCServer";
|
||||
this.groupBoxRPCServer.Size = new System.Drawing.Size(272, 108);
|
||||
this.groupBoxRPCServer.TabIndex = 3;
|
||||
this.groupBoxRPCServer.TabStop = false;
|
||||
this.groupBoxRPCServer.Text = "RPC Server";
|
||||
//
|
||||
// checkBoxModulePath
|
||||
//
|
||||
this.checkBoxModulePath.AutoSize = true;
|
||||
this.checkBoxModulePath.Location = new System.Drawing.Point(6, 53);
|
||||
this.checkBoxModulePath.Name = "checkBoxModulePath";
|
||||
this.checkBoxModulePath.Size = new System.Drawing.Size(83, 17);
|
||||
this.checkBoxModulePath.TabIndex = 2;
|
||||
this.checkBoxModulePath.Text = "ModulePath";
|
||||
this.checkBoxModulePath.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBoxModule
|
||||
//
|
||||
this.checkBoxModule.AutoSize = true;
|
||||
this.checkBoxModule.Checked = true;
|
||||
this.checkBoxModule.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.checkBoxModule.Location = new System.Drawing.Point(132, 30);
|
||||
this.checkBoxModule.Name = "checkBoxModule";
|
||||
this.checkBoxModule.Size = new System.Drawing.Size(61, 17);
|
||||
this.checkBoxModule.TabIndex = 1;
|
||||
this.checkBoxModule.Text = "Module";
|
||||
this.checkBoxModule.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBoxProceduresCount
|
||||
//
|
||||
this.checkBoxProceduresCount.AutoSize = true;
|
||||
this.checkBoxProceduresCount.Location = new System.Drawing.Point(132, 53);
|
||||
this.checkBoxProceduresCount.Name = "checkBoxProceduresCount";
|
||||
this.checkBoxProceduresCount.Size = new System.Drawing.Size(108, 17);
|
||||
this.checkBoxProceduresCount.TabIndex = 0;
|
||||
this.checkBoxProceduresCount.Text = "ProceduresCount";
|
||||
this.checkBoxProceduresCount.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBoxFunction
|
||||
//
|
||||
this.checkBoxFunction.AutoSize = true;
|
||||
this.checkBoxFunction.Checked = true;
|
||||
this.checkBoxFunction.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.checkBoxFunction.Location = new System.Drawing.Point(7, 76);
|
||||
this.checkBoxFunction.Name = "checkBoxFunction";
|
||||
this.checkBoxFunction.Size = new System.Drawing.Size(67, 17);
|
||||
this.checkBoxFunction.TabIndex = 3;
|
||||
this.checkBoxFunction.Text = "Function";
|
||||
this.checkBoxFunction.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// ColumnSelection
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(292, 425);
|
||||
this.Controls.Add(this.groupBoxRPCServer);
|
||||
this.Controls.Add(this.buttonCancel);
|
||||
this.Controls.Add(this.buttonOK);
|
||||
this.Controls.Add(this.groupBoxRPC);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.groupBoxProcessManagement);
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "ColumnSelection";
|
||||
this.ShowIcon = false;
|
||||
this.Text = "RPC Monitor Column Selection";
|
||||
this.groupBoxProcessManagement.ResumeLayout(false);
|
||||
this.groupBoxProcessManagement.PerformLayout();
|
||||
this.groupBoxRPC.ResumeLayout(false);
|
||||
this.groupBoxRPC.PerformLayout();
|
||||
this.groupBoxRPCServer.ResumeLayout(false);
|
||||
this.groupBoxRPCServer.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.GroupBox groupBoxProcessManagement;
|
||||
private System.Windows.Forms.CheckBox checkBoxProcessName;
|
||||
private System.Windows.Forms.CheckBox checkBoxTID;
|
||||
private System.Windows.Forms.CheckBox checkBoxPID;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.GroupBox groupBoxRPC;
|
||||
private System.Windows.Forms.CheckBox checkBoxImpersonationLevel;
|
||||
private System.Windows.Forms.CheckBox checkBoxAuthenticationLevel;
|
||||
private System.Windows.Forms.CheckBox checkBoxAuthenticationService;
|
||||
private System.Windows.Forms.CheckBox checkBoxOptions;
|
||||
private System.Windows.Forms.CheckBox checkBoxEndpoint;
|
||||
private System.Windows.Forms.CheckBox checkBoxProtocol;
|
||||
private System.Windows.Forms.CheckBox checkBoxNetworkAddress;
|
||||
private System.Windows.Forms.CheckBox checkBoxService;
|
||||
private System.Windows.Forms.CheckBox checkBoxUUID;
|
||||
private System.Windows.Forms.Button buttonOK;
|
||||
private System.Windows.Forms.Button buttonCancel;
|
||||
private System.Windows.Forms.GroupBox groupBoxRPCServer;
|
||||
private System.Windows.Forms.CheckBox checkBoxFunction;
|
||||
private System.Windows.Forms.CheckBox checkBoxModulePath;
|
||||
private System.Windows.Forms.CheckBox checkBoxModule;
|
||||
private System.Windows.Forms.CheckBox checkBoxProceduresCount;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace RPCMon
|
||||
{
|
||||
public delegate void selectColumnsEventHandler(GroupBox i_RPCClient, GroupBox i_RPCServer, GroupBox i_RPCMisc);
|
||||
public partial class ColumnSelection : Form
|
||||
{
|
||||
public event selectColumnsEventHandler selectColumnsUpdate;
|
||||
public ColumnSelection()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public virtual void OnselectColumnsUpdate(GroupBox i_RPCClient, GroupBox i_RPCServer, GroupBox i_RPCMisc)
|
||||
{
|
||||
if (selectColumnsUpdate != null)
|
||||
{
|
||||
selectColumnsUpdate.Invoke(i_RPCClient, i_RPCServer, i_RPCMisc);
|
||||
}
|
||||
}
|
||||
|
||||
private void buttonCancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void buttonOK_Click(object sender, EventArgs e)
|
||||
{
|
||||
OnselectColumnsUpdate(groupBoxProcessManagement, groupBoxRPCServer, groupBoxRPC);
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -0,0 +1,311 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace RPCMon.Control
|
||||
{
|
||||
public delegate void BuildRPCDBEventHandler(string i_File, string i_FileStatus, int i_NumOfFilesWithRPC, int i_TotalNumberOfFiles);
|
||||
public delegate void DoneRPCSearchEventHandler(List<IEnumerable<NtApiDotNet.Win32.RpcServer>> i_RPCServers);
|
||||
static class Engine
|
||||
{
|
||||
public static event BuildRPCDBEventHandler BuildRPCDBStatusUpdate;
|
||||
public static event DoneRPCSearchEventHandler DoneRPCSearchUpdate;
|
||||
private const string m_SymbolsPath = @"srv*c:\symbols*http://msdl.microsoft.com/download/symbols";
|
||||
private static List<IEnumerable<NtApiDotNet.Win32.RpcServer>> m_RPCServersDB;
|
||||
private static string m_DbgHelp = @"C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\dbghelp.dll";
|
||||
private static int m_TotalNumberOfFiles, m_NumOfFilesWithRPC;
|
||||
private const string c_FolderToSearch = @"C:\Windows\";
|
||||
private static bool m_IsDoneRPCSearch = false;
|
||||
private static Dictionary<string, bool> m_ExcludedFoldersMap = new Dictionary<string, bool>();
|
||||
public static void StopRPCSearch()
|
||||
{
|
||||
m_IsDoneRPCSearch = true;
|
||||
}
|
||||
|
||||
public static string DbgHelpFilePath
|
||||
{
|
||||
get { return m_DbgHelp; }
|
||||
set { m_DbgHelp = value; }
|
||||
}
|
||||
|
||||
public static void BuildRPCDataBase(string i_FolderToSearch, string i_SavedFilePath, bool i_Recursive, string[] i_ExcludedFolders, params string[] i_Extensions)
|
||||
{
|
||||
m_TotalNumberOfFiles = 0;
|
||||
m_NumOfFilesWithRPC = 0;
|
||||
m_IsDoneRPCSearch = false;
|
||||
m_RPCServersDB = new List<IEnumerable<NtApiDotNet.Win32.RpcServer>>();
|
||||
if (i_FolderToSearch == "")
|
||||
{
|
||||
i_FolderToSearch = c_FolderToSearch;
|
||||
}
|
||||
|
||||
m_ExcludedFoldersMap.Clear();
|
||||
foreach (string folder in i_ExcludedFolders)
|
||||
{
|
||||
m_ExcludedFoldersMap.Add(folder.ToLower(), true);
|
||||
}
|
||||
|
||||
buildRPCServersList(i_FolderToSearch, i_Recursive, i_Extensions);
|
||||
|
||||
OnDoneRPCSearchUpdate(m_RPCServersDB);
|
||||
saveDBAsJson(m_RPCServersDB, i_SavedFilePath);
|
||||
|
||||
// var a = NtApiDotNet.Win32.RpcAlpcServer.GetAlpcServers();
|
||||
}
|
||||
|
||||
private static void saveDBAsJson(List<IEnumerable<NtApiDotNet.Win32.RpcServer>> i_RPCList, string i_FileName)
|
||||
{
|
||||
int i = 0;
|
||||
Dictionary<string, RPCServerInfo> rpcDB = new Dictionary<string, RPCServerInfo>();
|
||||
foreach (IEnumerable<NtApiDotNet.Win32.RpcServer> rpcServerEnumerator in i_RPCList)
|
||||
{
|
||||
foreach (NtApiDotNet.Win32.RpcServer rpcServer in rpcServerEnumerator)
|
||||
{
|
||||
// Maybe it is not enough to check only by UUID and add version to the check.
|
||||
// But it will require to change the key.
|
||||
if (rpcDB.ContainsKey(rpcServer.InterfaceId.ToString()))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
i = 0;
|
||||
List<string> functions = new List<string>();
|
||||
foreach (var function in rpcServer.Procedures)
|
||||
{
|
||||
functions.Add(function.Name);
|
||||
// We are assuming the functions are already in order, but are they?
|
||||
// It is better to check with ProcNum of each function
|
||||
//if (i != function.ProcNum)
|
||||
//{
|
||||
// int b = 2;
|
||||
//}
|
||||
i += 1;
|
||||
}
|
||||
|
||||
RPCServerInfo serverInfo = new RPCServerInfo(
|
||||
rpcServer.Name,
|
||||
rpcServer.FilePath,
|
||||
rpcServer.InterfaceId.ToString(),
|
||||
rpcServer.Offset,
|
||||
rpcServer.ProcedureCount,
|
||||
functions,
|
||||
rpcServer.ServiceName,
|
||||
rpcServer.IsServiceRunning
|
||||
);
|
||||
|
||||
rpcDB.Add(rpcServer.InterfaceId.ToString(), serverInfo);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
string json = JsonConvert.SerializeObject(rpcDB);
|
||||
|
||||
File.WriteAllText(i_FileName, json);
|
||||
|
||||
}
|
||||
|
||||
public static void OnDoneRPCSearchUpdate(List<IEnumerable<NtApiDotNet.Win32.RpcServer>> i_RPCServers)
|
||||
{
|
||||
if (DoneRPCSearchUpdate != null)
|
||||
{
|
||||
DoneRPCSearchUpdate.Invoke(i_RPCServers);
|
||||
}
|
||||
}
|
||||
|
||||
public static void OnBuildRPCDBStatusUpdate(string i_File, string i_FileStatus, int i_NumOfFilesWithRPC, int i_TotalNumberOfFiles)
|
||||
{
|
||||
if (BuildRPCDBStatusUpdate != null)
|
||||
{
|
||||
BuildRPCDBStatusUpdate.Invoke(i_File, i_FileStatus, i_NumOfFilesWithRPC, i_TotalNumberOfFiles);
|
||||
}
|
||||
}
|
||||
|
||||
public static IEnumerable<FileInfo> GetFilesByExtensions(this DirectoryInfo dir, params string[] extensions)
|
||||
{
|
||||
if (extensions == null)
|
||||
throw new ArgumentNullException("extensions");
|
||||
IEnumerable<FileInfo> files = dir.EnumerateFiles();
|
||||
return files.Where(f => extensions.Contains(f.Extension));
|
||||
}
|
||||
|
||||
private static bool isBinaryMZFile(string i_FileName)
|
||||
{
|
||||
bool isBinary = false;
|
||||
int numBytesToRead = 2;
|
||||
int numBytesRead = 0;
|
||||
byte[] bytes = new byte[2];
|
||||
int n;
|
||||
using (FileStream fsSource = new FileStream(i_FileName, FileMode.Open, FileAccess.Read))
|
||||
{
|
||||
n = fsSource.Read(bytes, numBytesRead, numBytesToRead);
|
||||
}
|
||||
|
||||
//const Int32 BufferSize = 4;
|
||||
//using (var fileStream = File.OpenRead(name))
|
||||
//{
|
||||
// using (var streamReader = new StreamReader(fileStream, Encoding.UTF8, true, BufferSize))
|
||||
// {
|
||||
// String line;
|
||||
// line = streamReader.ReadLine();
|
||||
// int a = line.Length;
|
||||
// }
|
||||
//}
|
||||
|
||||
// 77 = 'M', 90 = 'Z'
|
||||
if (n > 0 && bytes[0] == 77 && bytes[1] == 90)
|
||||
{
|
||||
isBinary = true;
|
||||
}
|
||||
|
||||
return isBinary;
|
||||
}
|
||||
|
||||
// Original: https://stackoverflow.com/questions/172544/ignore-folders-files-when-directory-getfiles-is-denied-access
|
||||
// https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/file-system/how-to-iterate-through-a-directory-tree
|
||||
private static void buildRPCServersList(string root, bool isRecursive, params string[] extensions)
|
||||
{
|
||||
// Data structure to hold names of subfolders to be
|
||||
// examined for files.
|
||||
Stack<string> dirs = new Stack<string>(10);
|
||||
IEnumerable<NtApiDotNet.Win32.RpcServer> rpcServer = Enumerable.Empty<NtApiDotNet.Win32.RpcServer>();
|
||||
if (!System.IO.Directory.Exists(root))
|
||||
{
|
||||
throw new ArgumentException();
|
||||
}
|
||||
dirs.Push(root);
|
||||
|
||||
while (dirs.Count > 0)
|
||||
{
|
||||
if (m_IsDoneRPCSearch)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
string currentDir = dirs.Pop();
|
||||
if (m_ExcludedFoldersMap.ContainsKey(currentDir.ToLower()))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
//updateStatusToolStrip(currentDir);
|
||||
string[] subDirs;
|
||||
try
|
||||
{
|
||||
subDirs = System.IO.Directory.GetDirectories(currentDir);
|
||||
}
|
||||
// An UnauthorizedAccessException exception will be thrown if we do not have
|
||||
// discovery permission on a folder or file. It may or may not be acceptable
|
||||
// to ignore the exception and continue enumerating the remaining files and
|
||||
// folders. It is also possible (but unlikely) that a DirectoryNotFound exception
|
||||
// will be raised. This will happen if currentDir has been deleted by
|
||||
// another application or thread after our call to Directory.Exists. The
|
||||
// choice of which exceptions to catch depends entirely on the specific task
|
||||
// you are intending to perform and also on how much you know with certainty
|
||||
// about the systems on which this code will run.
|
||||
catch (UnauthorizedAccessException e)
|
||||
{
|
||||
//Console.WriteLine(e.Message);
|
||||
continue;
|
||||
}
|
||||
catch (System.IO.DirectoryNotFoundException e)
|
||||
{
|
||||
//Console.WriteLine(e.Message);
|
||||
continue;
|
||||
}
|
||||
|
||||
//string[] files = null;
|
||||
IEnumerable<FileInfo> files;
|
||||
try
|
||||
{
|
||||
//files = System.IO.Directory.GetFiles(currentDir, extension);
|
||||
DirectoryInfo dInfo = new DirectoryInfo(currentDir);
|
||||
files = dInfo.GetFilesByExtensions(extensions);
|
||||
m_TotalNumberOfFiles += files.Count();
|
||||
}
|
||||
|
||||
catch (UnauthorizedAccessException e)
|
||||
{
|
||||
|
||||
//Console.WriteLine(e.Message);
|
||||
continue;
|
||||
}
|
||||
|
||||
catch (System.IO.DirectoryNotFoundException e)
|
||||
{
|
||||
//Console.WriteLine(e.Message);
|
||||
continue;
|
||||
}
|
||||
// Perform the required action on each file here.
|
||||
// Modify this block to perform your required task.
|
||||
foreach (FileInfo file in files)
|
||||
{
|
||||
if (m_IsDoneRPCSearch)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
// Eviatar: Error when trying to load this file. There are more.
|
||||
// string name = @"C:\Windows\winsxs\x86_wcf-system.identitymodel_b03f5f7f11d50a3a_10.0.19041.1_none_e690fdc7d17e3f70\System.IdentityModel.dll";
|
||||
// We are doing this check to avoid the uncatchable exception of Bad Image
|
||||
// It won't help against the file C:\Windows\winsxs\x86_microsoft-windows-n..nd-syswow64-payload_31bf3856ad364e35_1.0.19041.1_none_beac3411b23832d5\compobj.dll
|
||||
// which have "MZ" in the beginning but Bad Image. I add work around to execlude some folders.
|
||||
// The "MZ" is not enough because there are files like
|
||||
// C:\Windows\winsxs\x86_microsoft-windows-n..nd-syswow64-payload_31bf3856ad364e35_1.0.19041.1_none_beac3411b23832d5\compobj.dll
|
||||
// Which have bad image and starts with "MZ". The workaround might be by trying to load it as data file first and if succeed call the ParsePe function.
|
||||
|
||||
//if (isBinaryMZFile(file.FullName))
|
||||
if (Win32NativeMethods.isSucceedLoadLibrary(file.FullName, LoadLibraryFlags.LoadLibraryAsDataFile))
|
||||
{
|
||||
rpcServer = NtApiDotNet.Win32.RpcServer.ParsePeFile(file.FullName, m_DbgHelp, m_SymbolsPath, NtApiDotNet.Win32.RpcServerParserFlags.None);
|
||||
}
|
||||
|
||||
if (rpcServer.Count() > 0)
|
||||
{
|
||||
m_RPCServersDB.Add(rpcServer);
|
||||
m_NumOfFilesWithRPC += 1;
|
||||
OnBuildRPCDBStatusUpdate(file.FullName, "Yes", m_NumOfFilesWithRPC, m_TotalNumberOfFiles);
|
||||
} else
|
||||
{
|
||||
OnBuildRPCDBStatusUpdate(file.FullName, "No", m_NumOfFilesWithRPC, m_TotalNumberOfFiles);
|
||||
}
|
||||
//ManifestInfo info = Engine.GetManifestInfo(file);
|
||||
/*if (info != null && (String.Empty != info.Level + info.uiAccess + info.autoElevate + info.dpiAware))
|
||||
{
|
||||
if (UserMatchesFilters(info))
|
||||
{
|
||||
//if(isFilteredByCheckboxes(info)){
|
||||
updateTable(info, file);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
catch (System.IO.FileNotFoundException e)
|
||||
{
|
||||
// If file was deleted by a separate application
|
||||
// or thread since the call to TraverseTree()
|
||||
// then just continue.
|
||||
//Console.WriteLine(e.Message);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (!isRecursive)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
// Push the subdirectories onto the stack for traversal.
|
||||
// This could also be done before handing the files.
|
||||
foreach (string str in subDirs)
|
||||
dirs.Push(str);
|
||||
}
|
||||
|
||||
//this.toolStripStatusLabel1.Text = "Done";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,138 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace RPCMon.Control
|
||||
{
|
||||
class RPCServerInfo
|
||||
{
|
||||
private string m_Module;
|
||||
private string m_ModulePath;
|
||||
private string m_InterfaceId;
|
||||
private long m_InterfaceStructOffset;
|
||||
private int m_ProceduresCount;
|
||||
private List<string> m_Procedures;
|
||||
private string m_Service;
|
||||
private bool m_IsServiceRunning;
|
||||
|
||||
public RPCServerInfo(string i_Module, string i_ModulePath, string i_InterfaceId,
|
||||
long i_InterfaceStructOffset, int i_ProceduresCount, List<string> i_Procedures, string i_Service, bool
|
||||
i_IsServiceRunning)
|
||||
{
|
||||
m_Module = i_Module;
|
||||
m_ModulePath = i_ModulePath;
|
||||
m_InterfaceId = i_InterfaceId;
|
||||
m_InterfaceStructOffset = i_InterfaceStructOffset;
|
||||
m_ProceduresCount = i_ProceduresCount;
|
||||
m_Procedures = i_Procedures;
|
||||
m_Service = i_Service;
|
||||
m_IsServiceRunning = i_IsServiceRunning;
|
||||
}
|
||||
|
||||
public string Module
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_Module;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
m_Module = value;
|
||||
}
|
||||
}
|
||||
|
||||
public string ModulePath
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_ModulePath;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
m_ModulePath = value;
|
||||
}
|
||||
}
|
||||
|
||||
public string InterfaceId
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_InterfaceId;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
m_InterfaceId = value;
|
||||
}
|
||||
}
|
||||
|
||||
public long InterfaceStructOffset
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_InterfaceStructOffset;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
m_InterfaceStructOffset = value;
|
||||
}
|
||||
}
|
||||
|
||||
public int ProceduresCount
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_ProceduresCount;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
m_ProceduresCount = value;
|
||||
}
|
||||
}
|
||||
|
||||
public List<string> Procedures
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_Procedures;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
m_Procedures = value;
|
||||
}
|
||||
}
|
||||
|
||||
public string Service
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_Service;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
m_Service = value;
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsServiceRunning
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_IsServiceRunning;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
m_IsServiceRunning = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using NtApiDotNet.Win32;
|
||||
|
||||
namespace RPCMon.Control
|
||||
{
|
||||
|
||||
public static class Win32NativeMethods
|
||||
{
|
||||
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
|
||||
internal static extern SafeLoadLibraryHandle LoadLibraryEx(string name, IntPtr reserved, LoadLibraryFlags flags);
|
||||
public static bool isSucceedLoadLibrary(string i_Name, LoadLibraryFlags flags)
|
||||
{
|
||||
bool isSuceed = false;
|
||||
SafeLoadLibraryHandle ret = LoadLibraryEx(i_Name, IntPtr.Zero, flags);
|
||||
if (!ret.IsInvalid)
|
||||
{
|
||||
isSuceed = true;
|
||||
}
|
||||
|
||||
return isSuceed;
|
||||
}
|
||||
}
|
||||
|
||||
public enum LoadLibraryFlags
|
||||
{
|
||||
/// <summary>
|
||||
/// None.
|
||||
/// </summary>
|
||||
None = 0,
|
||||
/// <summary>
|
||||
/// Don't resolve DLL references
|
||||
/// </summary>
|
||||
DontResolveDllReferences = 0x00000001,
|
||||
/// <summary>
|
||||
/// Load library as a data file.
|
||||
/// </summary>
|
||||
LoadLibraryAsDataFile = 0x00000002,
|
||||
/// <summary>
|
||||
/// Load with an altered search path.
|
||||
/// </summary>
|
||||
LoadWithAlteredSearchPath = 0x00000008,
|
||||
/// <summary>
|
||||
/// Ignore code authz level.
|
||||
/// </summary>
|
||||
LoadIgnoreCodeAuthzLevel = 0x00000010,
|
||||
/// <summary>
|
||||
/// Load library as an image resource.
|
||||
/// </summary>
|
||||
LoadLibraryAsImageResource = 0x00000020,
|
||||
/// <summary>
|
||||
/// Load library as a data file exclusively.
|
||||
/// </summary>
|
||||
LoadLibraryAsDataFileExclusive = 0x00000040,
|
||||
/// <summary>
|
||||
/// Add the DLL's directory temporarily to the search list.
|
||||
/// </summary>
|
||||
LoadLibrarySearchDllLoadDir = 0x00000100,
|
||||
/// <summary>
|
||||
/// Search application directory for the DLL.
|
||||
/// </summary>
|
||||
LoadLibrarySearchApplicationDir = 0x00000200,
|
||||
/// <summary>
|
||||
/// Search the user's directories for the DLL.
|
||||
/// </summary>
|
||||
LoadLibrarySearchUserDirs = 0x00000400,
|
||||
/// <summary>
|
||||
/// Search system32 for the DLL.
|
||||
/// </summary>
|
||||
LoadLibrarySearchSystem32 = 0x00000800,
|
||||
/// <summary>
|
||||
/// Search the default directories for the DLL.
|
||||
/// </summary>
|
||||
LoadLibrarySearchDefaultDirs = 0x00001000,
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,509 @@
|
||||
namespace RPCMon
|
||||
{
|
||||
partial class Form1
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
|
||||
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
|
||||
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.dBToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.loadDBToolStripMenuItemLoadDB = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.buildDBToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.setDbgHelpFilePathToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.toolStripButtonStart = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripButtonClear = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripButtonFilter = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripButtonFind = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripButtonHighlight = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripButtonGrid = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripButtonRemoveDuplicate = new System.Windows.Forms.ToolStripButton();
|
||||
this.dataGridView1 = new System.Windows.Forms.DataGridView();
|
||||
this.ColumnPID = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ColumnTID = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ColumnProcessName = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ColumnUUID = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ColumnModule = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ColumnModulePath = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ColumnProceduresCount = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ColumnService = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ColumnFunction = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ColumnNetworkAddress = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ColumnProtocol = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ColumnEndpoint = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ColumnOptions = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ColumnAuthenticationLevel = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ColumnAuthenticationService = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ColumnImpersonationLevel = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
|
||||
this.toolStripStatusLabelTotalEvents = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.toolStripStatusLabelDBPath = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.toolTipDBPath = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.contextMenuStripRightClickGridView = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.copyRowToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.copyCellToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.menuStrip1.SuspendLayout();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
|
||||
this.statusStrip1.SuspendLayout();
|
||||
this.contextMenuStripRightClickGridView.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// menuStrip1
|
||||
//
|
||||
this.menuStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
|
||||
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.fileToolStripMenuItem,
|
||||
this.dBToolStripMenuItem,
|
||||
this.optionsToolStripMenuItem,
|
||||
this.helpToolStripMenuItem});
|
||||
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.menuStrip1.Name = "menuStrip1";
|
||||
this.menuStrip1.Size = new System.Drawing.Size(828, 24);
|
||||
this.menuStrip1.TabIndex = 0;
|
||||
this.menuStrip1.Text = "menuStrip1";
|
||||
//
|
||||
// fileToolStripMenuItem
|
||||
//
|
||||
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.saveToolStripMenuItem});
|
||||
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
|
||||
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
|
||||
this.fileToolStripMenuItem.Text = "File";
|
||||
//
|
||||
// saveToolStripMenuItem
|
||||
//
|
||||
this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
|
||||
this.saveToolStripMenuItem.Size = new System.Drawing.Size(107, 22);
|
||||
this.saveToolStripMenuItem.Text = "Save...";
|
||||
this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click);
|
||||
//
|
||||
// dBToolStripMenuItem
|
||||
//
|
||||
this.dBToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.loadDBToolStripMenuItemLoadDB,
|
||||
this.buildDBToolStripMenuItem});
|
||||
this.dBToolStripMenuItem.Name = "dBToolStripMenuItem";
|
||||
this.dBToolStripMenuItem.Size = new System.Drawing.Size(34, 20);
|
||||
this.dBToolStripMenuItem.Text = "DB";
|
||||
//
|
||||
// loadDBToolStripMenuItemLoadDB
|
||||
//
|
||||
this.loadDBToolStripMenuItemLoadDB.Name = "loadDBToolStripMenuItemLoadDB";
|
||||
this.loadDBToolStripMenuItemLoadDB.Size = new System.Drawing.Size(128, 22);
|
||||
this.loadDBToolStripMenuItemLoadDB.Text = "Load DB...";
|
||||
this.loadDBToolStripMenuItemLoadDB.Click += new System.EventHandler(this.loadDBToolStripMenuItemLoadDB_Click);
|
||||
//
|
||||
// buildDBToolStripMenuItem
|
||||
//
|
||||
this.buildDBToolStripMenuItem.Name = "buildDBToolStripMenuItem";
|
||||
this.buildDBToolStripMenuItem.Size = new System.Drawing.Size(128, 22);
|
||||
this.buildDBToolStripMenuItem.Text = "Build DB...";
|
||||
this.buildDBToolStripMenuItem.Click += new System.EventHandler(this.buildDBToolStripMenuItem_Click);
|
||||
//
|
||||
// optionsToolStripMenuItem
|
||||
//
|
||||
this.optionsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.setDbgHelpFilePathToolStripMenuItem});
|
||||
this.optionsToolStripMenuItem.Name = "optionsToolStripMenuItem";
|
||||
this.optionsToolStripMenuItem.Size = new System.Drawing.Size(61, 20);
|
||||
this.optionsToolStripMenuItem.Text = "Options";
|
||||
//
|
||||
// setDbgHelpFilePathToolStripMenuItem
|
||||
//
|
||||
this.setDbgHelpFilePathToolStripMenuItem.Name = "setDbgHelpFilePathToolStripMenuItem";
|
||||
this.setDbgHelpFilePathToolStripMenuItem.Size = new System.Drawing.Size(197, 22);
|
||||
this.setDbgHelpFilePathToolStripMenuItem.Text = "Set DbgHelp File Path...";
|
||||
this.setDbgHelpFilePathToolStripMenuItem.Click += new System.EventHandler(this.setDbgHelpFilePathToolStripMenuItem_Click);
|
||||
//
|
||||
// helpToolStripMenuItem
|
||||
//
|
||||
this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.aboutToolStripMenuItem});
|
||||
this.helpToolStripMenuItem.Name = "helpToolStripMenuItem";
|
||||
this.helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
|
||||
this.helpToolStripMenuItem.Text = "Help";
|
||||
//
|
||||
// aboutToolStripMenuItem
|
||||
//
|
||||
this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
|
||||
this.aboutToolStripMenuItem.Size = new System.Drawing.Size(116, 22);
|
||||
this.aboutToolStripMenuItem.Text = "About...";
|
||||
this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStrip1
|
||||
//
|
||||
this.toolStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
|
||||
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolStripButtonStart,
|
||||
this.toolStripButtonClear,
|
||||
this.toolStripButtonFilter,
|
||||
this.toolStripButtonFind,
|
||||
this.toolStripButtonHighlight,
|
||||
this.toolStripButtonGrid,
|
||||
this.toolStripButtonRemoveDuplicate});
|
||||
this.toolStrip1.Location = new System.Drawing.Point(0, 24);
|
||||
this.toolStrip1.Name = "toolStrip1";
|
||||
this.toolStrip1.Size = new System.Drawing.Size(828, 27);
|
||||
this.toolStrip1.TabIndex = 1;
|
||||
this.toolStrip1.Text = "toolStrip1";
|
||||
//
|
||||
// toolStripButtonStart
|
||||
//
|
||||
this.toolStripButtonStart.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.toolStripButtonStart.Image = global::RPCMon.Properties.Resources.startIcon;
|
||||
this.toolStripButtonStart.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButtonStart.Name = "toolStripButtonStart";
|
||||
this.toolStripButtonStart.Size = new System.Drawing.Size(24, 24);
|
||||
this.toolStripButtonStart.Text = "Capture";
|
||||
this.toolStripButtonStart.ToolTipText = "Capture";
|
||||
this.toolStripButtonStart.Click += new System.EventHandler(this.toolStripButtonStart_Click);
|
||||
//
|
||||
// toolStripButtonClear
|
||||
//
|
||||
this.toolStripButtonClear.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.toolStripButtonClear.Image = global::RPCMon.Properties.Resources.eraser;
|
||||
this.toolStripButtonClear.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButtonClear.Name = "toolStripButtonClear";
|
||||
this.toolStripButtonClear.Size = new System.Drawing.Size(24, 24);
|
||||
this.toolStripButtonClear.Text = "Clear (Ctrl+X)";
|
||||
this.toolStripButtonClear.Click += new System.EventHandler(this.toolStripButtonClear_Click);
|
||||
//
|
||||
// toolStripButtonFilter
|
||||
//
|
||||
this.toolStripButtonFilter.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.toolStripButtonFilter.Image = global::RPCMon.Properties.Resources.filter;
|
||||
this.toolStripButtonFilter.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButtonFilter.Name = "toolStripButtonFilter";
|
||||
this.toolStripButtonFilter.Size = new System.Drawing.Size(24, 24);
|
||||
this.toolStripButtonFilter.Text = "Filter (Ctrl+L)";
|
||||
this.toolStripButtonFilter.ToolTipText = "Filter (Ctrl+L)";
|
||||
this.toolStripButtonFilter.Click += new System.EventHandler(this.toolStripButtonFilter_Click);
|
||||
//
|
||||
// toolStripButtonFind
|
||||
//
|
||||
this.toolStripButtonFind.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.toolStripButtonFind.Image = global::RPCMon.Properties.Resources.find;
|
||||
this.toolStripButtonFind.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButtonFind.Name = "toolStripButtonFind";
|
||||
this.toolStripButtonFind.Size = new System.Drawing.Size(24, 24);
|
||||
this.toolStripButtonFind.Text = "Find (Ctrl+F)";
|
||||
this.toolStripButtonFind.Click += new System.EventHandler(this.toolStripButtonFind_Click);
|
||||
//
|
||||
// toolStripButtonHighlight
|
||||
//
|
||||
this.toolStripButtonHighlight.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.toolStripButtonHighlight.Image = global::RPCMon.Properties.Resources.highlighter;
|
||||
this.toolStripButtonHighlight.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButtonHighlight.Name = "toolStripButtonHighlight";
|
||||
this.toolStripButtonHighlight.Size = new System.Drawing.Size(24, 24);
|
||||
this.toolStripButtonHighlight.Text = "HighLight (Ctrl+H)";
|
||||
this.toolStripButtonHighlight.Click += new System.EventHandler(this.toolStripButtonHighlight_Click);
|
||||
//
|
||||
// toolStripButtonGrid
|
||||
//
|
||||
this.toolStripButtonGrid.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.toolStripButtonGrid.Image = global::RPCMon.Properties.Resources.grid_disable;
|
||||
this.toolStripButtonGrid.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButtonGrid.Name = "toolStripButtonGrid";
|
||||
this.toolStripButtonGrid.Size = new System.Drawing.Size(24, 24);
|
||||
this.toolStripButtonGrid.Text = "Show Grid";
|
||||
this.toolStripButtonGrid.Click += new System.EventHandler(this.toolStripButtonGrid_Click);
|
||||
//
|
||||
// toolStripButtonRemoveDuplicate
|
||||
//
|
||||
this.toolStripButtonRemoveDuplicate.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.toolStripButtonRemoveDuplicate.Image = global::RPCMon.Properties.Resources.duplicate_disable;
|
||||
this.toolStripButtonRemoveDuplicate.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButtonRemoveDuplicate.Name = "toolStripButtonRemoveDuplicate";
|
||||
this.toolStripButtonRemoveDuplicate.Size = new System.Drawing.Size(24, 24);
|
||||
this.toolStripButtonRemoveDuplicate.Text = "Remove Duplicate Rows";
|
||||
this.toolStripButtonRemoveDuplicate.Click += new System.EventHandler(this.toolStripButtonRemoveDuplicate_Click);
|
||||
//
|
||||
// dataGridView1
|
||||
//
|
||||
this.dataGridView1.AllowUserToAddRows = false;
|
||||
this.dataGridView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
|
||||
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.ColumnPID,
|
||||
this.ColumnTID,
|
||||
this.ColumnProcessName,
|
||||
this.ColumnUUID,
|
||||
this.ColumnModule,
|
||||
this.ColumnModulePath,
|
||||
this.ColumnProceduresCount,
|
||||
this.ColumnService,
|
||||
this.ColumnFunction,
|
||||
this.ColumnNetworkAddress,
|
||||
this.ColumnProtocol,
|
||||
this.ColumnEndpoint,
|
||||
this.ColumnOptions,
|
||||
this.ColumnAuthenticationLevel,
|
||||
this.ColumnAuthenticationService,
|
||||
this.ColumnImpersonationLevel});
|
||||
this.dataGridView1.Location = new System.Drawing.Point(0, 51);
|
||||
this.dataGridView1.Name = "dataGridView1";
|
||||
this.dataGridView1.ReadOnly = true;
|
||||
this.dataGridView1.Size = new System.Drawing.Size(828, 486);
|
||||
this.dataGridView1.TabIndex = 3;
|
||||
this.dataGridView1.CellMouseClick += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.dataGridView1_CellMouseClick);
|
||||
this.dataGridView1.ColumnHeaderMouseClick += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.dataGridView1_ColumnHeaderMouseClick);
|
||||
//
|
||||
// ColumnPID
|
||||
//
|
||||
this.ColumnPID.HeaderText = "PID";
|
||||
this.ColumnPID.Name = "ColumnPID";
|
||||
this.ColumnPID.ReadOnly = true;
|
||||
//
|
||||
// ColumnTID
|
||||
//
|
||||
this.ColumnTID.HeaderText = "TID";
|
||||
this.ColumnTID.Name = "ColumnTID";
|
||||
this.ColumnTID.ReadOnly = true;
|
||||
//
|
||||
// ColumnProcessName
|
||||
//
|
||||
this.ColumnProcessName.HeaderText = "ProcessName";
|
||||
this.ColumnProcessName.Name = "ColumnProcessName";
|
||||
this.ColumnProcessName.ReadOnly = true;
|
||||
//
|
||||
// ColumnUUID
|
||||
//
|
||||
this.ColumnUUID.HeaderText = "UUID";
|
||||
this.ColumnUUID.Name = "ColumnUUID";
|
||||
this.ColumnUUID.ReadOnly = true;
|
||||
//
|
||||
// ColumnModule
|
||||
//
|
||||
this.ColumnModule.HeaderText = "Module";
|
||||
this.ColumnModule.Name = "ColumnModule";
|
||||
this.ColumnModule.ReadOnly = true;
|
||||
//
|
||||
// ColumnModulePath
|
||||
//
|
||||
this.ColumnModulePath.HeaderText = "ModulePath";
|
||||
this.ColumnModulePath.Name = "ColumnModulePath";
|
||||
this.ColumnModulePath.ReadOnly = true;
|
||||
this.ColumnModulePath.Visible = false;
|
||||
//
|
||||
// ColumnProceduresCount
|
||||
//
|
||||
this.ColumnProceduresCount.HeaderText = "ProceduresCount";
|
||||
this.ColumnProceduresCount.Name = "ColumnProceduresCount";
|
||||
this.ColumnProceduresCount.ReadOnly = true;
|
||||
this.ColumnProceduresCount.Visible = false;
|
||||
//
|
||||
// ColumnService
|
||||
//
|
||||
this.ColumnService.HeaderText = "Service";
|
||||
this.ColumnService.Name = "ColumnService";
|
||||
this.ColumnService.ReadOnly = true;
|
||||
//
|
||||
// ColumnFunction
|
||||
//
|
||||
this.ColumnFunction.HeaderText = "Function";
|
||||
this.ColumnFunction.Name = "ColumnFunction";
|
||||
this.ColumnFunction.ReadOnly = true;
|
||||
//
|
||||
// ColumnNetworkAddress
|
||||
//
|
||||
this.ColumnNetworkAddress.HeaderText = "NetworkAddress";
|
||||
this.ColumnNetworkAddress.Name = "ColumnNetworkAddress";
|
||||
this.ColumnNetworkAddress.ReadOnly = true;
|
||||
this.ColumnNetworkAddress.Visible = false;
|
||||
//
|
||||
// ColumnProtocol
|
||||
//
|
||||
this.ColumnProtocol.HeaderText = "Protocol";
|
||||
this.ColumnProtocol.Name = "ColumnProtocol";
|
||||
this.ColumnProtocol.ReadOnly = true;
|
||||
//
|
||||
// ColumnEndpoint
|
||||
//
|
||||
this.ColumnEndpoint.HeaderText = "Endpoint";
|
||||
this.ColumnEndpoint.Name = "ColumnEndpoint";
|
||||
this.ColumnEndpoint.ReadOnly = true;
|
||||
//
|
||||
// ColumnOptions
|
||||
//
|
||||
this.ColumnOptions.HeaderText = "Options";
|
||||
this.ColumnOptions.Name = "ColumnOptions";
|
||||
this.ColumnOptions.ReadOnly = true;
|
||||
this.ColumnOptions.Visible = false;
|
||||
//
|
||||
// ColumnAuthenticationLevel
|
||||
//
|
||||
this.ColumnAuthenticationLevel.HeaderText = "AuthenticationLevel";
|
||||
this.ColumnAuthenticationLevel.Name = "ColumnAuthenticationLevel";
|
||||
this.ColumnAuthenticationLevel.ReadOnly = true;
|
||||
this.ColumnAuthenticationLevel.Visible = false;
|
||||
//
|
||||
// ColumnAuthenticationService
|
||||
//
|
||||
this.ColumnAuthenticationService.HeaderText = "AuthenticationService";
|
||||
this.ColumnAuthenticationService.Name = "ColumnAuthenticationService";
|
||||
this.ColumnAuthenticationService.ReadOnly = true;
|
||||
this.ColumnAuthenticationService.Visible = false;
|
||||
//
|
||||
// ColumnImpersonationLevel
|
||||
//
|
||||
this.ColumnImpersonationLevel.HeaderText = "ImpersonationLevel";
|
||||
this.ColumnImpersonationLevel.Name = "ColumnImpersonationLevel";
|
||||
this.ColumnImpersonationLevel.ReadOnly = true;
|
||||
//
|
||||
// statusStrip1
|
||||
//
|
||||
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolStripStatusLabelTotalEvents,
|
||||
this.toolStripStatusLabelDBPath});
|
||||
this.statusStrip1.Location = new System.Drawing.Point(0, 538);
|
||||
this.statusStrip1.Name = "statusStrip1";
|
||||
this.statusStrip1.Size = new System.Drawing.Size(828, 24);
|
||||
this.statusStrip1.TabIndex = 4;
|
||||
this.statusStrip1.Text = "statusStrip1";
|
||||
//
|
||||
// toolStripStatusLabelTotalEvents
|
||||
//
|
||||
this.toolStripStatusLabelTotalEvents.BorderSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Right;
|
||||
this.toolStripStatusLabelTotalEvents.Name = "toolStripStatusLabelTotalEvents";
|
||||
this.toolStripStatusLabelTotalEvents.Size = new System.Drawing.Size(85, 19);
|
||||
this.toolStripStatusLabelTotalEvents.Text = "Total events: 0";
|
||||
//
|
||||
// toolStripStatusLabelDBPath
|
||||
//
|
||||
this.toolStripStatusLabelDBPath.Name = "toolStripStatusLabelDBPath";
|
||||
this.toolStripStatusLabelDBPath.Size = new System.Drawing.Size(49, 19);
|
||||
this.toolStripStatusLabelDBPath.Text = "DB File: ";
|
||||
this.toolStripStatusLabelDBPath.MouseLeave += new System.EventHandler(this.toolStripStatusLabelDBPath_MouseLeave);
|
||||
this.toolStripStatusLabelDBPath.MouseHover += new System.EventHandler(this.toolStripStatusLabelDBPath_MouseHover);
|
||||
//
|
||||
// contextMenuStripRightClickGridView
|
||||
//
|
||||
this.contextMenuStripRightClickGridView.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.copyRowToolStripMenuItem,
|
||||
this.copyCellToolStripMenuItem});
|
||||
this.contextMenuStripRightClickGridView.Name = "contextMenuStripRightClickGridView";
|
||||
this.contextMenuStripRightClickGridView.Size = new System.Drawing.Size(129, 48);
|
||||
//
|
||||
// copyRowToolStripMenuItem
|
||||
//
|
||||
this.copyRowToolStripMenuItem.Name = "copyRowToolStripMenuItem";
|
||||
this.copyRowToolStripMenuItem.Size = new System.Drawing.Size(128, 22);
|
||||
this.copyRowToolStripMenuItem.Text = "Copy Row";
|
||||
this.copyRowToolStripMenuItem.Click += new System.EventHandler(this.copyRowToolStripMenuItem_Click);
|
||||
//
|
||||
// copyCellToolStripMenuItem
|
||||
//
|
||||
this.copyCellToolStripMenuItem.Name = "copyCellToolStripMenuItem";
|
||||
this.copyCellToolStripMenuItem.Size = new System.Drawing.Size(128, 22);
|
||||
this.copyCellToolStripMenuItem.Text = "Copy Cell";
|
||||
this.copyCellToolStripMenuItem.Click += new System.EventHandler(this.copyCellToolStripMenuItem_Click);
|
||||
//
|
||||
// Form1
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(828, 562);
|
||||
this.Controls.Add(this.statusStrip1);
|
||||
this.Controls.Add(this.dataGridView1);
|
||||
this.Controls.Add(this.toolStrip1);
|
||||
this.Controls.Add(this.menuStrip1);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MainMenuStrip = this.menuStrip1;
|
||||
this.Name = "Form1";
|
||||
this.Text = "RPCMon - RPC Monitor Based Windows Events";
|
||||
this.Shown += new System.EventHandler(this.Form1_Shown);
|
||||
this.menuStrip1.ResumeLayout(false);
|
||||
this.menuStrip1.PerformLayout();
|
||||
this.toolStrip1.ResumeLayout(false);
|
||||
this.toolStrip1.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
|
||||
this.statusStrip1.ResumeLayout(false);
|
||||
this.statusStrip1.PerformLayout();
|
||||
this.contextMenuStripRightClickGridView.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.MenuStrip menuStrip1;
|
||||
private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem helpToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStrip toolStrip1;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButtonStart;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButtonFilter;
|
||||
private System.Windows.Forms.DataGridView dataGridView1;
|
||||
private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButtonClear;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButtonFind;
|
||||
private System.Windows.Forms.StatusStrip statusStrip1;
|
||||
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelTotalEvents;
|
||||
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelDBPath;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButtonHighlight;
|
||||
private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolTip toolTipDBPath;
|
||||
private System.Windows.Forms.ToolStripMenuItem dBToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem loadDBToolStripMenuItemLoadDB;
|
||||
private System.Windows.Forms.ContextMenuStrip contextMenuStripRightClickGridView;
|
||||
private System.Windows.Forms.ToolStripMenuItem copyRowToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem copyCellToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem buildDBToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButtonGrid;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButtonRemoveDuplicate;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnPID;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnTID;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnProcessName;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnUUID;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnModule;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnModulePath;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnProceduresCount;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnService;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnFunction;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnNetworkAddress;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnProtocol;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnEndpoint;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnOptions;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnAuthenticationLevel;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnAuthenticationService;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnImpersonationLevel;
|
||||
private System.Windows.Forms.ToolStripMenuItem optionsToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem setDbgHelpFilePathToolStripMenuItem;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,287 @@
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace RPCMon
|
||||
{
|
||||
partial class FormBuildDB
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormBuildDB));
|
||||
this.buttonBuild = new System.Windows.Forms.Button();
|
||||
this.labelRPCFolder = new System.Windows.Forms.Label();
|
||||
this.textBoxFolderForRPC = new System.Windows.Forms.TextBox();
|
||||
this.checkBoxRecursive = new System.Windows.Forms.CheckBox();
|
||||
this.comboBox1 = new System.Windows.Forms.ComboBox();
|
||||
this.listViewRPCFiles = new System.Windows.Forms.ListView();
|
||||
this.columnHeaderFileName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.columnHeaderHasRpc = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.buttonStop = new System.Windows.Forms.Button();
|
||||
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
|
||||
this.toolStripStatusLabelTotalFiles = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.toolStripStatusLabelRPCFiles = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.textBoxSaveFile = new System.Windows.Forms.TextBox();
|
||||
this.buttonJumpFolder = new System.Windows.Forms.Button();
|
||||
this.toolTipJumpButton = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.buttonClear = new System.Windows.Forms.Button();
|
||||
this.textBoxExcludedFolders = new System.Windows.Forms.TextBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.statusStrip1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// buttonBuild
|
||||
//
|
||||
this.buttonBuild.Location = new System.Drawing.Point(12, 100);
|
||||
this.buttonBuild.Name = "buttonBuild";
|
||||
this.buttonBuild.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonBuild.TabIndex = 0;
|
||||
this.buttonBuild.Text = "Build";
|
||||
this.buttonBuild.UseVisualStyleBackColor = true;
|
||||
this.buttonBuild.Click += new System.EventHandler(this.buttonBuild_Click);
|
||||
//
|
||||
// labelRPCFolder
|
||||
//
|
||||
this.labelRPCFolder.AutoSize = true;
|
||||
this.labelRPCFolder.Location = new System.Drawing.Point(12, 23);
|
||||
this.labelRPCFolder.Name = "labelRPCFolder";
|
||||
this.labelRPCFolder.Size = new System.Drawing.Size(82, 13);
|
||||
this.labelRPCFolder.TabIndex = 1;
|
||||
this.labelRPCFolder.Text = "Folder for RPC: ";
|
||||
//
|
||||
// textBoxFolderForRPC
|
||||
//
|
||||
this.textBoxFolderForRPC.Location = new System.Drawing.Point(100, 20);
|
||||
this.textBoxFolderForRPC.Name = "textBoxFolderForRPC";
|
||||
this.textBoxFolderForRPC.Size = new System.Drawing.Size(244, 20);
|
||||
this.textBoxFolderForRPC.TabIndex = 2;
|
||||
this.textBoxFolderForRPC.Text = "C:\\Windows";
|
||||
//
|
||||
// checkBoxRecursive
|
||||
//
|
||||
this.checkBoxRecursive.AutoSize = true;
|
||||
this.checkBoxRecursive.Location = new System.Drawing.Point(100, 46);
|
||||
this.checkBoxRecursive.Name = "checkBoxRecursive";
|
||||
this.checkBoxRecursive.Size = new System.Drawing.Size(74, 17);
|
||||
this.checkBoxRecursive.TabIndex = 3;
|
||||
this.checkBoxRecursive.Text = "Recursive";
|
||||
this.checkBoxRecursive.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// comboBox1
|
||||
//
|
||||
this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comboBox1.FormattingEnabled = true;
|
||||
this.comboBox1.Items.AddRange(new object[] {
|
||||
"All",
|
||||
"*.exe",
|
||||
"*.dll",
|
||||
"*.com"});
|
||||
this.comboBox1.Location = new System.Drawing.Point(359, 19);
|
||||
this.comboBox1.Name = "comboBox1";
|
||||
this.comboBox1.Size = new System.Drawing.Size(121, 21);
|
||||
this.comboBox1.TabIndex = 5;
|
||||
//
|
||||
// listViewRPCFiles
|
||||
//
|
||||
this.listViewRPCFiles.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.listViewRPCFiles.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.columnHeaderFileName,
|
||||
this.columnHeaderHasRpc});
|
||||
this.listViewRPCFiles.HideSelection = false;
|
||||
this.listViewRPCFiles.Location = new System.Drawing.Point(2, 178);
|
||||
this.listViewRPCFiles.Name = "listViewRPCFiles";
|
||||
this.listViewRPCFiles.Size = new System.Drawing.Size(555, 314);
|
||||
this.listViewRPCFiles.TabIndex = 8;
|
||||
this.listViewRPCFiles.UseCompatibleStateImageBehavior = false;
|
||||
this.listViewRPCFiles.View = System.Windows.Forms.View.Details;
|
||||
this.listViewRPCFiles.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listViewRPCFiles_ColumnClick);
|
||||
//
|
||||
// columnHeaderFileName
|
||||
//
|
||||
this.columnHeaderFileName.Text = "File Name";
|
||||
this.columnHeaderFileName.Width = 125;
|
||||
//
|
||||
// columnHeaderHasRpc
|
||||
//
|
||||
this.columnHeaderHasRpc.Text = "Has RPC?";
|
||||
this.columnHeaderHasRpc.Width = 83;
|
||||
//
|
||||
// buttonStop
|
||||
//
|
||||
this.buttonStop.Location = new System.Drawing.Point(100, 100);
|
||||
this.buttonStop.Name = "buttonStop";
|
||||
this.buttonStop.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonStop.TabIndex = 9;
|
||||
this.buttonStop.Text = "Stop";
|
||||
this.buttonStop.UseVisualStyleBackColor = true;
|
||||
this.buttonStop.Click += new System.EventHandler(this.buttonStop_Click);
|
||||
//
|
||||
// statusStrip1
|
||||
//
|
||||
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolStripStatusLabelTotalFiles,
|
||||
this.toolStripStatusLabelRPCFiles});
|
||||
this.statusStrip1.Location = new System.Drawing.Point(0, 498);
|
||||
this.statusStrip1.Name = "statusStrip1";
|
||||
this.statusStrip1.Size = new System.Drawing.Size(555, 24);
|
||||
this.statusStrip1.TabIndex = 10;
|
||||
this.statusStrip1.Text = "statusStrip1";
|
||||
//
|
||||
// toolStripStatusLabelTotalFiles
|
||||
//
|
||||
this.toolStripStatusLabelTotalFiles.BorderSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Right;
|
||||
this.toolStripStatusLabelTotalFiles.Name = "toolStripStatusLabelTotalFiles";
|
||||
this.toolStripStatusLabelTotalFiles.Size = new System.Drawing.Size(125, 19);
|
||||
this.toolStripStatusLabelTotalFiles.Text = "Total Searched Files: 0";
|
||||
//
|
||||
// toolStripStatusLabelRPCFiles
|
||||
//
|
||||
this.toolStripStatusLabelRPCFiles.Name = "toolStripStatusLabelRPCFiles";
|
||||
this.toolStripStatusLabelRPCFiles.Size = new System.Drawing.Size(67, 19);
|
||||
this.toolStripStatusLabelRPCFiles.Text = "RPC Files: 0";
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(12, 141);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(88, 13);
|
||||
this.label1.TabIndex = 11;
|
||||
this.label1.Text = "Saved File Path: ";
|
||||
//
|
||||
// textBoxSaveFile
|
||||
//
|
||||
this.textBoxSaveFile.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.textBoxSaveFile.Location = new System.Drawing.Point(100, 138);
|
||||
this.textBoxSaveFile.Name = "textBoxSaveFile";
|
||||
this.textBoxSaveFile.Size = new System.Drawing.Size(400, 20);
|
||||
this.textBoxSaveFile.TabIndex = 12;
|
||||
//
|
||||
// buttonJumpFolder
|
||||
//
|
||||
this.buttonJumpFolder.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonJumpFolder.BackColor = System.Drawing.Color.Transparent;
|
||||
this.buttonJumpFolder.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
|
||||
this.buttonJumpFolder.FlatAppearance.BorderSize = 0;
|
||||
this.buttonJumpFolder.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.buttonJumpFolder.Image = ((System.Drawing.Image)(resources.GetObject("buttonJumpFolder.Image")));
|
||||
this.buttonJumpFolder.Location = new System.Drawing.Point(506, 136);
|
||||
this.buttonJumpFolder.Name = "buttonJumpFolder";
|
||||
this.buttonJumpFolder.Size = new System.Drawing.Size(25, 22);
|
||||
this.buttonJumpFolder.TabIndex = 13;
|
||||
this.buttonJumpFolder.TabStop = false;
|
||||
this.buttonJumpFolder.UseVisualStyleBackColor = false;
|
||||
this.buttonJumpFolder.Click += new System.EventHandler(this.button1_Click);
|
||||
this.buttonJumpFolder.MouseLeave += new System.EventHandler(this.buttonJumpFolder_MouseLeave);
|
||||
this.buttonJumpFolder.MouseHover += new System.EventHandler(this.buttonJumpFolder_MouseHover);
|
||||
//
|
||||
// buttonClear
|
||||
//
|
||||
this.buttonClear.Location = new System.Drawing.Point(191, 100);
|
||||
this.buttonClear.Name = "buttonClear";
|
||||
this.buttonClear.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonClear.TabIndex = 14;
|
||||
this.buttonClear.Text = "Clear";
|
||||
this.buttonClear.UseVisualStyleBackColor = true;
|
||||
this.buttonClear.Click += new System.EventHandler(this.buttonClear_Click);
|
||||
//
|
||||
// textBoxExcludedFolders
|
||||
//
|
||||
this.textBoxExcludedFolders.Location = new System.Drawing.Point(100, 69);
|
||||
this.textBoxExcludedFolders.Name = "textBoxExcludedFolders";
|
||||
this.textBoxExcludedFolders.Size = new System.Drawing.Size(244, 20);
|
||||
this.textBoxExcludedFolders.TabIndex = 16;
|
||||
this.textBoxExcludedFolders.Text = "C:\\Windows\\WinSxS";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(12, 72);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(88, 13);
|
||||
this.label2.TabIndex = 15;
|
||||
this.label2.Text = "Exclude Folders: ";
|
||||
//
|
||||
// FormBuildDB
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(555, 522);
|
||||
this.Controls.Add(this.textBoxExcludedFolders);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.buttonClear);
|
||||
this.Controls.Add(this.buttonJumpFolder);
|
||||
this.Controls.Add(this.textBoxSaveFile);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.statusStrip1);
|
||||
this.Controls.Add(this.buttonStop);
|
||||
this.Controls.Add(this.listViewRPCFiles);
|
||||
this.Controls.Add(this.comboBox1);
|
||||
this.Controls.Add(this.checkBoxRecursive);
|
||||
this.Controls.Add(this.textBoxFolderForRPC);
|
||||
this.Controls.Add(this.labelRPCFolder);
|
||||
this.Controls.Add(this.buttonBuild);
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "FormBuildDB";
|
||||
this.ShowIcon = false;
|
||||
this.Text = "Build DB";
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormBuildDB_FormClosing);
|
||||
this.statusStrip1.ResumeLayout(false);
|
||||
this.statusStrip1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button buttonBuild;
|
||||
private System.Windows.Forms.Label labelRPCFolder;
|
||||
private System.Windows.Forms.TextBox textBoxFolderForRPC;
|
||||
private System.Windows.Forms.CheckBox checkBoxRecursive;
|
||||
private System.Windows.Forms.ComboBox comboBox1;
|
||||
private System.Windows.Forms.ListView listViewRPCFiles;
|
||||
private System.Windows.Forms.ColumnHeader columnHeaderFileName;
|
||||
private System.Windows.Forms.ColumnHeader columnHeaderHasRpc;
|
||||
private System.Windows.Forms.Button buttonStop;
|
||||
private System.Windows.Forms.StatusStrip statusStrip1;
|
||||
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelTotalFiles;
|
||||
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelRPCFiles;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.TextBox textBoxSaveFile;
|
||||
private System.Windows.Forms.Button buttonJumpFolder;
|
||||
private ToolTip toolTipJumpButton;
|
||||
private Button buttonClear;
|
||||
private TextBox textBoxExcludedFolders;
|
||||
private Label label2;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,233 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Text;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using RPCMon.Control;
|
||||
|
||||
namespace RPCMon
|
||||
{
|
||||
public partial class FormBuildDB : Form
|
||||
{
|
||||
private ListViewColumnSorter m_LvwColumnSorter;
|
||||
private const string c_DBDefaultName = "RPC_DB";
|
||||
public FormBuildDB()
|
||||
{
|
||||
InitializeComponent();
|
||||
m_LvwColumnSorter = new ListViewColumnSorter();
|
||||
this.listViewRPCFiles.ListViewItemSorter = m_LvwColumnSorter;
|
||||
|
||||
this.textBoxSaveFile.Text = generateDBName();
|
||||
this.comboBox1.SelectedIndex = 0;
|
||||
this.buttonJumpFolder.Image = (Image)(new Bitmap(global::RPCMon.Properties.Resources.share, new Size(15, 15)));
|
||||
this.buttonJumpFolder.TabStop = false;
|
||||
this.buttonJumpFolder.FlatStyle = FlatStyle.Flat;
|
||||
this.buttonJumpFolder.FlatAppearance.BorderSize = 0;
|
||||
}
|
||||
|
||||
private string generateDBName()
|
||||
{
|
||||
string newPathNoExtension = Path.Combine(Directory.GetCurrentDirectory(), c_DBDefaultName);
|
||||
int num = 0;
|
||||
bool isExist = false;
|
||||
while (!isExist)
|
||||
{
|
||||
if (File.Exists(newPathNoExtension + num.ToString() + ".rpcdb.json"))
|
||||
{
|
||||
num += 1;
|
||||
} else
|
||||
{
|
||||
isExist = true;
|
||||
newPathNoExtension = newPathNoExtension + num.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
return newPathNoExtension + ".rpcdb.json";
|
||||
}
|
||||
|
||||
//public Thread m_SearchingRPCThread;
|
||||
//CancellationTokenSource cts = new CancellationTokenSource();
|
||||
private void buttonBuild_Click(object sender, EventArgs e)
|
||||
{
|
||||
Engine.BuildRPCDBStatusUpdate -= Engine_BuildRPCDBStatusUpdate;
|
||||
Engine.DoneRPCSearchUpdate -= Engine_DoneRPCSearchUpdate;
|
||||
Engine.BuildRPCDBStatusUpdate += Engine_BuildRPCDBStatusUpdate;
|
||||
Engine.DoneRPCSearchUpdate += Engine_DoneRPCSearchUpdate;
|
||||
//string[] extensions = {".exe", ".dll", ".com" };
|
||||
string[] extensions = new string[1];
|
||||
switch (comboBox1.Text)
|
||||
{
|
||||
case (".exe"):
|
||||
extensions[0] = ".exe";
|
||||
break;
|
||||
case (".dll"):
|
||||
extensions[0] = ".exe";
|
||||
break;
|
||||
case (".com"):
|
||||
extensions[0] = ".com";
|
||||
break;
|
||||
default:
|
||||
extensions = new string[3]{ ".exe", ".dll", ".com" };
|
||||
break;
|
||||
}
|
||||
|
||||
string[] excludedFolders = textBoxExcludedFolders.Text.Split(';');
|
||||
|
||||
ThreadPool.QueueUserWorkItem(o => Engine.BuildRPCDataBase(textBoxFolderForRPC.Text, textBoxSaveFile.Text, checkBoxRecursive.Checked, excludedFolders, extensions));
|
||||
|
||||
//ThreadPool.QueueUserWorkItem(o =>
|
||||
//{ CancellationToken token = (CancellationToken)o;
|
||||
|
||||
// while (!token.IsCancellationRequested)
|
||||
// {
|
||||
// Engine.BuildRPCDataBase(textBoxFolderForRPC.Text);
|
||||
// }
|
||||
|
||||
//ThreadPool.QueueUserWorkItem(s =>
|
||||
//{
|
||||
// CancellationToken token = (CancellationToken)s;
|
||||
// if (token.IsCancellationRequested)
|
||||
// return;
|
||||
// Engine.BuildRPCDataBase(textBoxFolderForRPC.Text);
|
||||
// token.WaitHandle.WaitOne(1000);
|
||||
//}, cts.Token);
|
||||
|
||||
//}, cts.Token);
|
||||
//List<IEnumerable<NtApiDotNet.Win32.RpcServer>> rpcList = Engine.BuildRPCDataBase(textBoxFolderForRPC.Text);
|
||||
//var rpcList = Engine.BuildRPCDataBase(textBoxFolderForRPC.Text);
|
||||
|
||||
//MessageBox.Show("Done!", "Creating DB", MessageBoxButtons.OK);
|
||||
// progressBar1.Refre
|
||||
}
|
||||
|
||||
private void Engine_DoneRPCSearchUpdate(List<IEnumerable<NtApiDotNet.Win32.RpcServer>> i_RPCServers)
|
||||
{
|
||||
MessageBox.Show("Done!", "Creating DB", MessageBoxButtons.OK);
|
||||
//progressBar1.Value = progressBar1.Maximum;
|
||||
}
|
||||
|
||||
//private void Engine_BuildRPCDBStatusUpdate(string i_File, string i_FileStatus, int i_NumOfFilesWithRPC, int i_TotalNumberOfFiles)
|
||||
//{
|
||||
// //textBoxLogs.Text += "\n" + i_FileStatus;
|
||||
// ListViewItem item = new ListViewItem(i_File);
|
||||
// item.SubItems.Add(i_FileStatus);
|
||||
// listViewRPCFiles.Items.Add(item);
|
||||
// progressBar1.Value += (int)((i_NumOfFilesWithRPC / i_TotalNumberOfFiles)*100);
|
||||
//}
|
||||
|
||||
|
||||
private delegate void buildRPCDBStatusUpdateCallBack(string i_File, string i_FileStatus, int i_NumOfFilesWithRPC, int i_TotalNumberOfFiles);
|
||||
private void Engine_BuildRPCDBStatusUpdate(string i_File, string i_FileStatus, int i_NumOfFilesWithRPC, int i_TotalNumberOfFiles)
|
||||
{
|
||||
|
||||
if (this.InvokeRequired)
|
||||
{
|
||||
buildRPCDBStatusUpdateCallBack s = new buildRPCDBStatusUpdateCallBack(Engine_BuildRPCDBStatusUpdate);
|
||||
this.Invoke(s, i_File, i_FileStatus, i_NumOfFilesWithRPC, i_TotalNumberOfFiles);
|
||||
}
|
||||
else
|
||||
{
|
||||
ListViewItem item = new ListViewItem(i_File);
|
||||
item.SubItems.Add(i_FileStatus);
|
||||
listViewRPCFiles.Items.Add(item);
|
||||
if (i_FileStatus == "Yes")
|
||||
{
|
||||
item.BackColor = Color.Cyan;
|
||||
}
|
||||
|
||||
toolStripStatusLabelRPCFiles.Text = "RPC Files: " + i_NumOfFilesWithRPC.ToString();
|
||||
toolStripStatusLabelTotalFiles.Text = "Total Searched Files: " + i_TotalNumberOfFiles.ToString();
|
||||
// progressBar1.Value += (int)(((double)i_NumOfFilesWithRPC / (double)i_TotalNumberOfFiles) * 100);
|
||||
//progressBar1.Maximum += progressBar1.Value;
|
||||
}
|
||||
}
|
||||
|
||||
private void buttonStop_Click(object sender, EventArgs e)
|
||||
{
|
||||
Engine.StopRPCSearch();
|
||||
// cts.Cancel();
|
||||
//if (m_SearchingRPCThread != null)
|
||||
//{
|
||||
// m_SearchingRPCThread.Abort();
|
||||
//}
|
||||
}
|
||||
|
||||
// https://docs.microsoft.com/en-us/troubleshoot/developer/visualstudio/csharp/general/sort-listview-by-column
|
||||
private void listViewRPCFiles_ColumnClick(object sender, ColumnClickEventArgs e)
|
||||
{
|
||||
// Determine if clicked column is already the column that is being sorted.
|
||||
if (e.Column == m_LvwColumnSorter.SortColumn)
|
||||
{
|
||||
// Reverse the current sort direction for this column.
|
||||
if (m_LvwColumnSorter.Order == SortOrder.Ascending)
|
||||
{
|
||||
m_LvwColumnSorter.Order = SortOrder.Descending;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_LvwColumnSorter.Order = SortOrder.Ascending;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Set the column number that is to be sorted; default to ascending.
|
||||
m_LvwColumnSorter.SortColumn = e.Column;
|
||||
m_LvwColumnSorter.Order = SortOrder.Ascending;
|
||||
}
|
||||
|
||||
this.listViewRPCFiles.Sort();
|
||||
}
|
||||
|
||||
private void FormBuildDB_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
Engine.StopRPCSearch();
|
||||
}
|
||||
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
string directory = Path.GetDirectoryName(textBoxSaveFile.Text);
|
||||
if (Directory.Exists(directory))
|
||||
{
|
||||
ProcessStartInfo startInfo = new ProcessStartInfo
|
||||
{
|
||||
Arguments = directory,
|
||||
FileName = "explorer.exe"
|
||||
};
|
||||
|
||||
Process.Start(startInfo);
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show(string.Format("{0} Directory does not exist!", directory));
|
||||
}
|
||||
}
|
||||
|
||||
private void buttonJumpFolder_MouseHover(object sender, EventArgs e)
|
||||
{
|
||||
toolTipJumpButton.Show("Jump to Saved Folder", buttonJumpFolder);
|
||||
}
|
||||
|
||||
private void buttonJumpFolder_MouseLeave(object sender, EventArgs e)
|
||||
{
|
||||
toolTipJumpButton.Hide(buttonJumpFolder);
|
||||
}
|
||||
|
||||
private void buttonClear_Click(object sender, EventArgs e)
|
||||
{
|
||||
listViewRPCFiles.Items.Clear();
|
||||
Engine.BuildRPCDBStatusUpdate -= Engine_BuildRPCDBStatusUpdate;
|
||||
Engine.DoneRPCSearchUpdate -= Engine_DoneRPCSearchUpdate;
|
||||
|
||||
toolStripStatusLabelRPCFiles.Text = "RPC Files: ";
|
||||
toolStripStatusLabelTotalFiles.Text = "Total Searched Files: 0";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="buttonJumpFolder.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
wwAADsMBx2+oZAAAATJJREFUOE9joAvwP3PX1ufcvf76+nomqBDxwPfsfQ/f8w/+e59/0Fv//z/EABvd
|
||||
AGMrnYAYZGys5iMClgSC0CsvJfwuPIzzOXtvCUgzCPude9DPADIAqPivpU7gHSB9BIYttQNNQRr9Lj4o
|
||||
hWlAxz7nH0wDag78b6ETkAG2Bgn4nH0QDFT0F10TMsap2ff8/dfYNMCw96WHxlg1+1x84AxT5HP+/pvg
|
||||
S3f1gAEWBBPzO/vQBKwQm2bfc/eLwRrPPZgPFQKHNtCgP76XH1hDhXBoPns3B6j5OjxKgMDnzF057yuP
|
||||
zKBcCMCmub7+P1P8/fscUC5ugCvAcAEb7QAfS52AjWAOqZqttAMyrbQDr0M4QM1AgcdA0y4Qg0FqgXqu
|
||||
QTSr+0lZ6wS6koJttf1lGRgYGACEyfG98X+pIQAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="toolTipJumpButton.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>133, 17</value>
|
||||
</metadata>
|
||||
</root>
|
||||
@@ -0,0 +1,269 @@
|
||||
namespace RPCMon
|
||||
{
|
||||
partial class FormHighlighting
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.labelHighlight = new System.Windows.Forms.Label();
|
||||
this.comboBoxColumn = new System.Windows.Forms.ComboBox();
|
||||
this.comboBoxRelation = new System.Windows.Forms.ComboBox();
|
||||
this.comboBoxValue = new System.Windows.Forms.ComboBox();
|
||||
this.labelThen = new System.Windows.Forms.Label();
|
||||
this.comboBoxAction = new System.Windows.Forms.ComboBox();
|
||||
this.listViewHighlights = new System.Windows.Forms.ListView();
|
||||
this.columnHeaderColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.columnHeaderRelation = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.columnHeaderValue = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.columnHeaderAction = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.buttonOK = new System.Windows.Forms.Button();
|
||||
this.buttonCancel = new System.Windows.Forms.Button();
|
||||
this.buttonAdd = new System.Windows.Forms.Button();
|
||||
this.buttonRemove = new System.Windows.Forms.Button();
|
||||
this.buttonReset = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// labelHighlight
|
||||
//
|
||||
this.labelHighlight.AutoSize = true;
|
||||
this.labelHighlight.Location = new System.Drawing.Point(12, 9);
|
||||
this.labelHighlight.Name = "labelHighlight";
|
||||
this.labelHighlight.Size = new System.Drawing.Size(211, 13);
|
||||
this.labelHighlight.TabIndex = 0;
|
||||
this.labelHighlight.Text = "Highlight entries matching these conditions:";
|
||||
//
|
||||
// comboBoxColumn
|
||||
//
|
||||
this.comboBoxColumn.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comboBoxColumn.FormattingEnabled = true;
|
||||
this.comboBoxColumn.Items.AddRange(new object[] {
|
||||
"PID",
|
||||
"TID",
|
||||
"ProcessName",
|
||||
"UUID",
|
||||
"Module",
|
||||
"ModulePath",
|
||||
"ProceduresCount",
|
||||
"Service",
|
||||
"Function",
|
||||
"NetworkAddress",
|
||||
"Protocol",
|
||||
"Endpoint",
|
||||
"Options",
|
||||
"AuthenticationLevel",
|
||||
"AuthenticationService",
|
||||
"ImpersonationLevel"});
|
||||
this.comboBoxColumn.Location = new System.Drawing.Point(12, 25);
|
||||
this.comboBoxColumn.Name = "comboBoxColumn";
|
||||
this.comboBoxColumn.Size = new System.Drawing.Size(121, 21);
|
||||
this.comboBoxColumn.TabIndex = 1;
|
||||
//
|
||||
// comboBoxRelation
|
||||
//
|
||||
this.comboBoxRelation.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comboBoxRelation.FormattingEnabled = true;
|
||||
this.comboBoxRelation.Items.AddRange(new object[] {
|
||||
"contains",
|
||||
"is",
|
||||
"begins with",
|
||||
"ends with"});
|
||||
this.comboBoxRelation.Location = new System.Drawing.Point(139, 25);
|
||||
this.comboBoxRelation.Name = "comboBoxRelation";
|
||||
this.comboBoxRelation.Size = new System.Drawing.Size(71, 21);
|
||||
this.comboBoxRelation.TabIndex = 2;
|
||||
//
|
||||
// comboBoxValue
|
||||
//
|
||||
this.comboBoxValue.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.comboBoxValue.FormattingEnabled = true;
|
||||
this.comboBoxValue.Location = new System.Drawing.Point(216, 25);
|
||||
this.comboBoxValue.Name = "comboBoxValue";
|
||||
this.comboBoxValue.Size = new System.Drawing.Size(297, 21);
|
||||
this.comboBoxValue.TabIndex = 3;
|
||||
//
|
||||
// labelThen
|
||||
//
|
||||
this.labelThen.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.labelThen.AutoSize = true;
|
||||
this.labelThen.Location = new System.Drawing.Point(519, 25);
|
||||
this.labelThen.Name = "labelThen";
|
||||
this.labelThen.Size = new System.Drawing.Size(28, 13);
|
||||
this.labelThen.TabIndex = 4;
|
||||
this.labelThen.Text = "then";
|
||||
//
|
||||
// comboBoxAction
|
||||
//
|
||||
this.comboBoxAction.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.comboBoxAction.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comboBoxAction.FormattingEnabled = true;
|
||||
this.comboBoxAction.Items.AddRange(new object[] {
|
||||
"Include",
|
||||
"Exclude"});
|
||||
this.comboBoxAction.Location = new System.Drawing.Point(557, 22);
|
||||
this.comboBoxAction.Name = "comboBoxAction";
|
||||
this.comboBoxAction.Size = new System.Drawing.Size(71, 21);
|
||||
this.comboBoxAction.TabIndex = 5;
|
||||
//
|
||||
// listViewHighlights
|
||||
//
|
||||
this.listViewHighlights.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.listViewHighlights.CheckBoxes = true;
|
||||
this.listViewHighlights.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.columnHeaderColumn,
|
||||
this.columnHeaderRelation,
|
||||
this.columnHeaderValue,
|
||||
this.columnHeaderAction});
|
||||
this.listViewHighlights.HideSelection = false;
|
||||
this.listViewHighlights.Location = new System.Drawing.Point(12, 85);
|
||||
this.listViewHighlights.Name = "listViewHighlights";
|
||||
this.listViewHighlights.Size = new System.Drawing.Size(619, 267);
|
||||
this.listViewHighlights.TabIndex = 6;
|
||||
this.listViewHighlights.UseCompatibleStateImageBehavior = false;
|
||||
this.listViewHighlights.View = System.Windows.Forms.View.Details;
|
||||
this.listViewHighlights.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.listViewHighlights_MouseDoubleClick);
|
||||
//
|
||||
// columnHeaderColumn
|
||||
//
|
||||
this.columnHeaderColumn.Text = "Column";
|
||||
//
|
||||
// columnHeaderRelation
|
||||
//
|
||||
this.columnHeaderRelation.Text = "Relation";
|
||||
//
|
||||
// columnHeaderValue
|
||||
//
|
||||
this.columnHeaderValue.Text = "Value";
|
||||
//
|
||||
// columnHeaderAction
|
||||
//
|
||||
this.columnHeaderAction.Text = "Action";
|
||||
//
|
||||
// buttonOK
|
||||
//
|
||||
this.buttonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonOK.Location = new System.Drawing.Point(472, 358);
|
||||
this.buttonOK.Name = "buttonOK";
|
||||
this.buttonOK.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonOK.TabIndex = 7;
|
||||
this.buttonOK.Text = "OK";
|
||||
this.buttonOK.UseVisualStyleBackColor = true;
|
||||
this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
|
||||
//
|
||||
// buttonCancel
|
||||
//
|
||||
this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonCancel.Location = new System.Drawing.Point(553, 358);
|
||||
this.buttonCancel.Name = "buttonCancel";
|
||||
this.buttonCancel.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonCancel.TabIndex = 8;
|
||||
this.buttonCancel.Text = "Cancel";
|
||||
this.buttonCancel.UseVisualStyleBackColor = true;
|
||||
this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
|
||||
//
|
||||
// buttonAdd
|
||||
//
|
||||
this.buttonAdd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonAdd.Location = new System.Drawing.Point(472, 56);
|
||||
this.buttonAdd.Name = "buttonAdd";
|
||||
this.buttonAdd.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonAdd.TabIndex = 9;
|
||||
this.buttonAdd.Text = "Add";
|
||||
this.buttonAdd.UseVisualStyleBackColor = true;
|
||||
this.buttonAdd.Click += new System.EventHandler(this.buttonAdd_Click);
|
||||
//
|
||||
// buttonRemove
|
||||
//
|
||||
this.buttonRemove.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonRemove.Location = new System.Drawing.Point(553, 56);
|
||||
this.buttonRemove.Name = "buttonRemove";
|
||||
this.buttonRemove.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonRemove.TabIndex = 10;
|
||||
this.buttonRemove.Text = "Remove";
|
||||
this.buttonRemove.UseVisualStyleBackColor = true;
|
||||
this.buttonRemove.Click += new System.EventHandler(this.buttonRemove_Click);
|
||||
//
|
||||
// buttonReset
|
||||
//
|
||||
this.buttonReset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonReset.Location = new System.Drawing.Point(12, 56);
|
||||
this.buttonReset.Name = "buttonReset";
|
||||
this.buttonReset.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonReset.TabIndex = 11;
|
||||
this.buttonReset.Text = "Reset";
|
||||
this.buttonReset.UseVisualStyleBackColor = true;
|
||||
this.buttonReset.Click += new System.EventHandler(this.buttonReset_Click);
|
||||
//
|
||||
// FormHighlighting
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(643, 393);
|
||||
this.Controls.Add(this.buttonReset);
|
||||
this.Controls.Add(this.buttonRemove);
|
||||
this.Controls.Add(this.buttonAdd);
|
||||
this.Controls.Add(this.buttonCancel);
|
||||
this.Controls.Add(this.buttonOK);
|
||||
this.Controls.Add(this.listViewHighlights);
|
||||
this.Controls.Add(this.comboBoxAction);
|
||||
this.Controls.Add(this.labelThen);
|
||||
this.Controls.Add(this.comboBoxValue);
|
||||
this.Controls.Add(this.comboBoxRelation);
|
||||
this.Controls.Add(this.comboBoxColumn);
|
||||
this.Controls.Add(this.labelHighlight);
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "FormHighlighting";
|
||||
this.ShowIcon = false;
|
||||
this.Text = "RPC Monitor Highlighting";
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label labelHighlight;
|
||||
private System.Windows.Forms.ComboBox comboBoxColumn;
|
||||
private System.Windows.Forms.ComboBox comboBoxRelation;
|
||||
private System.Windows.Forms.ComboBox comboBoxValue;
|
||||
private System.Windows.Forms.Label labelThen;
|
||||
private System.Windows.Forms.ComboBox comboBoxAction;
|
||||
private System.Windows.Forms.ListView listViewHighlights;
|
||||
private System.Windows.Forms.Button buttonOK;
|
||||
private System.Windows.Forms.Button buttonCancel;
|
||||
private System.Windows.Forms.Button buttonAdd;
|
||||
private System.Windows.Forms.Button buttonRemove;
|
||||
private System.Windows.Forms.ColumnHeader columnHeaderColumn;
|
||||
private System.Windows.Forms.ColumnHeader columnHeaderRelation;
|
||||
private System.Windows.Forms.ColumnHeader columnHeaderValue;
|
||||
private System.Windows.Forms.ColumnHeader columnHeaderAction;
|
||||
private System.Windows.Forms.Button buttonReset;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,122 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using static System.Windows.Forms.ListViewItem;
|
||||
|
||||
namespace RPCMon
|
||||
{
|
||||
public delegate void highlightRowsEventHandler(ListView i_ListView);
|
||||
public partial class FormHighlighting : Form
|
||||
{
|
||||
public event highlightRowsEventHandler hightlightRowsUpdate;
|
||||
|
||||
public FormHighlighting(ref ListView i_ListViewHighlighFilter)
|
||||
{
|
||||
InitializeComponentWrapper();
|
||||
|
||||
foreach (ListViewItem item in i_ListViewHighlighFilter.Items)
|
||||
{
|
||||
ListViewItem clonedItem = (ListViewItem)item.Clone();
|
||||
this.listViewHighlights.Items.Add(clonedItem);
|
||||
}
|
||||
}
|
||||
|
||||
private void InitializeComponentWrapper()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.comboBoxColumn.SelectedIndex = 0;
|
||||
this.comboBoxRelation.SelectedIndex = 0;
|
||||
this.comboBoxAction.SelectedIndex = 0;
|
||||
this.listViewHighlights.FullRowSelect = true;
|
||||
}
|
||||
|
||||
|
||||
// DUPLICATED function in ColumnFilter
|
||||
// Maybe create a shared function in Utils but it threw an exception for "type initializer"
|
||||
private bool isRowExist(string i_Column, string i_Relation, string i_Value, string i_Action)
|
||||
{
|
||||
bool isExist = false;
|
||||
string newRow = i_Column + i_Relation + i_Value + i_Action;
|
||||
foreach (ListViewItem item in listViewHighlights.Items)
|
||||
{
|
||||
string rawRow = "";
|
||||
foreach (ListViewSubItem subItem in item.SubItems)
|
||||
{
|
||||
rawRow += subItem.Text;
|
||||
}
|
||||
|
||||
if (newRow == rawRow)
|
||||
{
|
||||
isExist = true;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return isExist;
|
||||
}
|
||||
|
||||
private void buttonAdd_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!isRowExist(comboBoxColumn.Text, comboBoxRelation.Text, comboBoxValue.Text, comboBoxAction.Text))
|
||||
{
|
||||
ListViewItem item = new ListViewItem(comboBoxColumn.Text);
|
||||
item.SubItems.Add(comboBoxRelation.Text);
|
||||
item.SubItems.Add(comboBoxValue.Text);
|
||||
item.SubItems.Add(comboBoxAction.Text);
|
||||
item.Checked = true;
|
||||
this.listViewHighlights.Items.Add(item);
|
||||
}
|
||||
}
|
||||
|
||||
private void buttonCancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void buttonRemove_Click(object sender, EventArgs e)
|
||||
{
|
||||
foreach (ListViewItem item in this.listViewHighlights.SelectedItems)
|
||||
{
|
||||
item.Remove();
|
||||
}
|
||||
}
|
||||
|
||||
private void listViewHighlights_MouseDoubleClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
foreach (ListViewItem item in ((ListView)sender).SelectedItems)
|
||||
{
|
||||
this.comboBoxColumn.Text = item.SubItems[0].Text;
|
||||
this.comboBoxRelation.Text = item.SubItems[1].Text;
|
||||
this.comboBoxValue.Text = item.SubItems[2].Text;
|
||||
this.comboBoxAction.Text = item.SubItems[3].Text;
|
||||
item.Remove();
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void OnHighlightRowsUpdate(ListView i_ListView)
|
||||
{
|
||||
if (hightlightRowsUpdate != null)
|
||||
{
|
||||
hightlightRowsUpdate.Invoke(i_ListView);
|
||||
}
|
||||
}
|
||||
|
||||
private void buttonOK_Click(object sender, EventArgs e)
|
||||
{
|
||||
OnHighlightRowsUpdate(listViewHighlights);
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void buttonReset_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.listViewHighlights.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -0,0 +1,143 @@
|
||||
namespace RPCMon
|
||||
{
|
||||
partial class FormSearch
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.comboBox1 = new System.Windows.Forms.ComboBox();
|
||||
this.buttonFind = new System.Windows.Forms.Button();
|
||||
this.buttonCancel = new System.Windows.Forms.Button();
|
||||
this.groupBoxDirection = new System.Windows.Forms.GroupBox();
|
||||
this.radioButtonUp = new System.Windows.Forms.RadioButton();
|
||||
this.radioButtonDown = new System.Windows.Forms.RadioButton();
|
||||
this.groupBoxDirection.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(13, 13);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(56, 13);
|
||||
this.label1.TabIndex = 0;
|
||||
this.label1.Text = "Find what:";
|
||||
//
|
||||
// comboBox1
|
||||
//
|
||||
this.comboBox1.FormattingEnabled = true;
|
||||
this.comboBox1.Location = new System.Drawing.Point(76, 13);
|
||||
this.comboBox1.Name = "comboBox1";
|
||||
this.comboBox1.Size = new System.Drawing.Size(215, 21);
|
||||
this.comboBox1.TabIndex = 1;
|
||||
//
|
||||
// buttonFind
|
||||
//
|
||||
this.buttonFind.Location = new System.Drawing.Point(314, 11);
|
||||
this.buttonFind.Name = "buttonFind";
|
||||
this.buttonFind.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonFind.TabIndex = 2;
|
||||
this.buttonFind.Text = "Find Next";
|
||||
this.buttonFind.UseVisualStyleBackColor = true;
|
||||
this.buttonFind.Click += new System.EventHandler(this.buttonFind_Click);
|
||||
//
|
||||
// buttonCancel
|
||||
//
|
||||
this.buttonCancel.Location = new System.Drawing.Point(314, 53);
|
||||
this.buttonCancel.Name = "buttonCancel";
|
||||
this.buttonCancel.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonCancel.TabIndex = 3;
|
||||
this.buttonCancel.Text = "Cancel";
|
||||
this.buttonCancel.UseVisualStyleBackColor = true;
|
||||
this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
|
||||
//
|
||||
// groupBoxDirection
|
||||
//
|
||||
this.groupBoxDirection.Controls.Add(this.radioButtonDown);
|
||||
this.groupBoxDirection.Controls.Add(this.radioButtonUp);
|
||||
this.groupBoxDirection.Location = new System.Drawing.Point(178, 53);
|
||||
this.groupBoxDirection.Name = "groupBoxDirection";
|
||||
this.groupBoxDirection.Size = new System.Drawing.Size(113, 63);
|
||||
this.groupBoxDirection.TabIndex = 4;
|
||||
this.groupBoxDirection.TabStop = false;
|
||||
this.groupBoxDirection.Text = "Direction";
|
||||
//
|
||||
// radioButtonUp
|
||||
//
|
||||
this.radioButtonUp.AutoSize = true;
|
||||
this.radioButtonUp.Location = new System.Drawing.Point(7, 29);
|
||||
this.radioButtonUp.Name = "radioButtonUp";
|
||||
this.radioButtonUp.Size = new System.Drawing.Size(39, 17);
|
||||
this.radioButtonUp.TabIndex = 0;
|
||||
this.radioButtonUp.Text = "Up";
|
||||
this.radioButtonUp.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// radioButtonDown
|
||||
//
|
||||
this.radioButtonDown.AutoSize = true;
|
||||
this.radioButtonDown.Checked = true;
|
||||
this.radioButtonDown.Location = new System.Drawing.Point(52, 29);
|
||||
this.radioButtonDown.Name = "radioButtonDown";
|
||||
this.radioButtonDown.Size = new System.Drawing.Size(53, 17);
|
||||
this.radioButtonDown.TabIndex = 1;
|
||||
this.radioButtonDown.TabStop = true;
|
||||
this.radioButtonDown.Text = "Down";
|
||||
this.radioButtonDown.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// FormSearch
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(415, 144);
|
||||
this.Controls.Add(this.groupBoxDirection);
|
||||
this.Controls.Add(this.buttonCancel);
|
||||
this.Controls.Add(this.buttonFind);
|
||||
this.Controls.Add(this.comboBox1);
|
||||
this.Controls.Add(this.label1);
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "FormSearch";
|
||||
this.ShowIcon = false;
|
||||
this.Text = "Find";
|
||||
this.groupBoxDirection.ResumeLayout(false);
|
||||
this.groupBoxDirection.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.ComboBox comboBox1;
|
||||
private System.Windows.Forms.Button buttonFind;
|
||||
private System.Windows.Forms.Button buttonCancel;
|
||||
private System.Windows.Forms.GroupBox groupBoxDirection;
|
||||
private System.Windows.Forms.RadioButton radioButtonDown;
|
||||
private System.Windows.Forms.RadioButton radioButtonUp;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace RPCMon
|
||||
{
|
||||
public delegate void searchEventHandler(string i_SearchString, bool i_SearchDown, bool i_MatchWholeWord, bool i_MatchSensitive);
|
||||
public partial class FormSearch : Form
|
||||
{
|
||||
//internal searchEventHandler searchForMatch;
|
||||
|
||||
public event searchEventHandler searchForMatch;
|
||||
|
||||
public FormSearch()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void buttonCancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
public virtual void OnSearchForMatch(string i_SearchString, bool i_SearchDown, bool i_MatchWholeWord, bool i_MatchSensitive)
|
||||
{
|
||||
if (searchForMatch != null)
|
||||
{
|
||||
searchForMatch.Invoke(i_SearchString, i_SearchDown, i_MatchWholeWord, i_MatchSensitive);
|
||||
}
|
||||
}
|
||||
|
||||
private void buttonFind_Click(object sender, EventArgs e)
|
||||
{
|
||||
OnSearchForMatch(comboBox1.Text, radioButtonDown.Checked, false, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -0,0 +1,105 @@
|
||||
using System.Collections;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace RPCMon
|
||||
{
|
||||
// https://stackoverflow.com/a/25761349/2153777
|
||||
public class ListViewColumnSorter : IComparer
|
||||
{
|
||||
/// <summary>
|
||||
/// Specifies the column to be sorted
|
||||
/// </summary>
|
||||
private int ColumnToSort;
|
||||
|
||||
/// <summary>
|
||||
/// Specifies the order in which to sort (i.e. 'Ascending').
|
||||
/// </summary>
|
||||
private SortOrder OrderOfSort;
|
||||
|
||||
/// <summary>
|
||||
/// Case insensitive comparer object
|
||||
/// </summary>
|
||||
private CaseInsensitiveComparer ObjectCompare;
|
||||
|
||||
/// <summary>
|
||||
/// Class constructor. Initializes various elements
|
||||
/// </summary>
|
||||
public ListViewColumnSorter()
|
||||
{
|
||||
// Initialize the column to '0'
|
||||
ColumnToSort = 0;
|
||||
|
||||
// Initialize the sort order to 'none'
|
||||
OrderOfSort = SortOrder.None;
|
||||
|
||||
// Initialize the CaseInsensitiveComparer object
|
||||
ObjectCompare = new CaseInsensitiveComparer();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This method is inherited from the IComparer interface. It compares the two objects passed using a case insensitive comparison.
|
||||
/// </summary>
|
||||
/// <param name="x">First object to be compared</param>
|
||||
/// <param name="y">Second object to be compared</param>
|
||||
/// <returns>The result of the comparison. "0" if equal, negative if 'x' is less than 'y' and positive if 'x' is greater than 'y'</returns>
|
||||
public int Compare(object x, object y)
|
||||
{
|
||||
int compareResult;
|
||||
ListViewItem listviewX, listviewY;
|
||||
|
||||
// Cast the objects to be compared to ListViewItem objects
|
||||
listviewX = (ListViewItem)x;
|
||||
listviewY = (ListViewItem)y;
|
||||
|
||||
// Compare the two items
|
||||
compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text, listviewY.SubItems[ColumnToSort].Text);
|
||||
|
||||
// Calculate correct return value based on object comparison
|
||||
if (OrderOfSort == SortOrder.Ascending)
|
||||
{
|
||||
// Ascending sort is selected, return normal result of compare operation
|
||||
return compareResult;
|
||||
}
|
||||
else if (OrderOfSort == SortOrder.Descending)
|
||||
{
|
||||
// Descending sort is selected, return negative result of compare operation
|
||||
return (-compareResult);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Return '0' to indicate they are equal
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the number of the column to which to apply the sorting operation (Defaults to '0').
|
||||
/// </summary>
|
||||
public int SortColumn
|
||||
{
|
||||
set
|
||||
{
|
||||
ColumnToSort = value;
|
||||
}
|
||||
get
|
||||
{
|
||||
return ColumnToSort;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the order of sorting to apply (for example, 'Ascending' or 'Descending').
|
||||
/// </summary>
|
||||
public SortOrder Order
|
||||
{
|
||||
set
|
||||
{
|
||||
OrderOfSort = value;
|
||||
}
|
||||
get
|
||||
{
|
||||
return OrderOfSort;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace RPCMon
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new Form1());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("RPCMon")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("RPCMon")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2022")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("9de6bb01-5955-4ee7-bd74-b47aec15efbb")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@@ -0,0 +1,183 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace RPCMon.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("RPCMon.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap duplicate {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("duplicate", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap duplicate_disable {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("duplicate-disable", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap eraser {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("eraser", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap filter {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("filter", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap find {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("find", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap grid {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("grid", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap grid_disable {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("grid-disable", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap highlighter {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("highlighter", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap pause_button {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("pause-button", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap share {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("share", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap startIcon {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("startIcon", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap stopIcon {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("stopIcon", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,157 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="grid" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\grid.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="filter" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\filter.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="grid-disable" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\grid-disable.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="highlighter" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\highlighter.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="find" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\find.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="stopIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\stopIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="pause-button" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\pause-button.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="share" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\share.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="startIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\startIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="eraser" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\eraser.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="duplicate" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\duplicate.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="duplicate-disable" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\duplicate-disable.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -0,0 +1,30 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace RPCMon.Properties
|
||||
{
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
|
||||
{
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default
|
||||
{
|
||||
get
|
||||
{
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
||||
@@ -0,0 +1,185 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{9DE6BB01-5955-4EE7-BD74-B47AEC15EFBB}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>RPCMon</RootNamespace>
|
||||
<AssemblyName>RPCMon</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
<Deterministic>true</Deterministic>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>true</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.Diagnostics.Tracing.TraceEvent">
|
||||
<HintPath>..\Packages\Microsoft.Diagnostics.Tracing.TraceEvent.2.0.42\lib\net45\Microsoft.Diagnostics.Tracing.TraceEvent.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json">
|
||||
<HintPath>..\Packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NtApiDotNet, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NtApiDotNet.1.1.33\lib\net461\NtApiDotNet.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.DirectoryServices" />
|
||||
<Reference Include="System.Security" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="ColumnFilter.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ColumnFilter.Designer.cs">
|
||||
<DependentUpon>ColumnFilter.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ColumnSelection.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ColumnSelection.Designer.cs">
|
||||
<DependentUpon>ColumnSelection.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Control\Engine.cs" />
|
||||
<Compile Include="Control\Microsoft-Windows-RPC.cs" />
|
||||
<Compile Include="Control\RPCServerInfo.cs" />
|
||||
<Compile Include="Control\Win32NativeMethods.cs" />
|
||||
<Compile Include="Form1.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Form1.Designer.cs">
|
||||
<DependentUpon>Form1.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FormBuildDB.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FormBuildDB.Designer.cs">
|
||||
<DependentUpon>FormBuildDB.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FormHighlighting.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FormHighlighting.Designer.cs">
|
||||
<DependentUpon>FormHighlighting.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FormSearch.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FormSearch.Designer.cs">
|
||||
<DependentUpon>FormSearch.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ListViewColumnSorter.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Utils.cs" />
|
||||
<EmbeddedResource Include="ColumnFilter.resx">
|
||||
<DependentUpon>ColumnFilter.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ColumnSelection.resx">
|
||||
<DependentUpon>ColumnSelection.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Form1.resx">
|
||||
<DependentUpon>Form1.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="FormBuildDB.resx">
|
||||
<DependentUpon>FormBuildDB.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="FormHighlighting.resx">
|
||||
<DependentUpon>FormHighlighting.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="FormSearch.resx">
|
||||
<DependentUpon>FormSearch.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="README.md" />
|
||||
<None Include="Resources\startIcon.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\stopIcon.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\filter.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\eraser.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\pause-button.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\find.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\highlighter.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\share.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\grid.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\grid-disable.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\duplicate.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\duplicate-disable.png" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
|
After Width: | Height: | Size: 789 B |
|
After Width: | Height: | Size: 633 B |
|
After Width: | Height: | Size: 915 B |
|
After Width: | Height: | Size: 727 B |
|
After Width: | Height: | Size: 747 B |
|
After Width: | Height: | Size: 919 B |
|
After Width: | Height: | Size: 805 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 975 B |
|
After Width: | Height: | Size: 838 B |