C# Interacting with existing executables in Windows CE using Compact Framework? - windows-ce

How would I go about interacting with an existing executable on Windows CE using the Compact Framework?
I figure I am overlooking something simple.
Here is the scenario:
I am trying to write a small app to do some common functions such as creating a user with a specified password.
The windows directory has a few executeables which I would like to use. The one I am having trouble with is "passwd.exe"
This executable is not able to be used by just passing it args. It prompts for input.
Example of use:
input> passwd.exe MyUser
output> Current Password: [wait for input]
output> New Password: [wait for input]
output> Retype Password: [wait for input]
So I have seen some similar uses of System.Diagnostics.ProcessStartInfo in non-mobile framework but this doesn't seem to be an option the Compact Framework.
Thanks in advance!

"interacting" with an existing executable is going to greatly depend on the executable.
First, let me go on record as saying I'd be highly inclined to ask the device OEM if they have a way to do all of this programmatically rather than trying to kludge together some simulated user input. In this case, the app is likely setting that info somewhere in the system, so if you can do the same and avoid their app altogetehr, it's going to be a lot cleaner.
If that isn't available, then if the app you want to interact with support command-line options, then that's going to be the easiest. You can send those in using the Process and ProcessStartInfo classes to send in command-line arguments.
If it doesn't, then you have to simulate actual user input. How that would work, again, depens on the app you're trying to interact with. From your description, you're most likely you're going to have to simulate keyboard strokes by P/Invoking PostKeyboardMessage or keydb_event (the SDF has an implementation of SendKeys that simplifies this).
Be aware that you're going to have to make sure that the target window for the input is focused before you send those key strokes.

Related

Is it possbible to use node with admin or sudo privileges within electron?

Is it possbible to use node with admin or sudo privileges within electron?
I found sudo-prompt, but from my understanding, this could only be used to execute a shell command and not to use node functions (code from within the main.js-file for example).
Is this possible? If so, could you give me any advice on that?
Any help would be really appreciated, maybe I am just looking for the wrong things.
Thanks in advance!
Yes you can, take a look at electron-sudo module: https://github.com/automation-stack/electron-sudo
Run a subprocess with administrative privileges, prompting the user
with a graphical OS dialog if necessary. Useful for background
subprocesse which run native Electron apps that need sudo.
Windows, uses elevate utility with native User Account Control (UAC) prompt (no PowerShell required)
OS X, uses bundled applet (inspired by Joran Dirk Greef)
Linux, uses system pkexec or gksudo (system or bundled).
It is not recommended to run the entire Electron app as admin administrator. As this gives the entire app blanket access to change anything on the users machine. If someone were to inject code, or if you had a bug you could do lots of bad things to a computer.
It's better to run a single function and always prompt the user to login as admin before the function is run.
You can see this approach in a popular Electron app: https://github.com/microsoft/vscode
In the package.json file they have two useful dependencies:
https://www.npmjs.com/package/native-is-elevated
https://www.npmjs.com/package/#vscode/sudo-prompt
They check to see if permissions are elevated using native-is-elevated, and if not, prompt for an admin password using sudo-prompt.
You can read the source code for the process here: https://github.com/microsoft/vscode/blob/8845f89c1e4183b54126cd629cd45c8f0f7549f2/src/vs/platform/native/electron-main/nativeHostMainService.ts#L491
I have created an example Electron app using this approach here:
https://github.com/kmturley/electron-runas-admin

installation OP5 Monitor / Nagios:

In the case of implementation of the monitoring database oracle control method requires a standard application username and password explicitly. How to bypass the need to enter in clear text password to log into the database oracle, which is visible in the screen OP5 Monitor and Nagios configuration file system.?
There are several possibilities.
Generic solution
Use the $USERnn$ macros, which are defined in resources.cfg. More information on how to use this feature: https://kb.op5.com/display/DOC/Macros#Macros-Custommacros
The USER macros are not visible in the graphical user interface, but can be read by anyone having access to the resources.cfg configuration file.
For Naemon documentation on user macros see http://www.naemon.org/documentation/usersguide/macrolist.html#user
Specific solution for the check_oracle plugin (if that is what you are using)
Specify the credentials in an auth file. From the help text for the plugin:
-f <auth-file> can be used instead of -u <username> -p <password>. If both
options are used the <auth-file> will override -u/-p. The <authfile> should
be a textfile (readable by the nrpe-user) containing two rows. File format:
username=<username>
password=<password>
Solution specific to OP5 Monitor
Use custom variables prefixed with OP5SECRET. Unfortunately, these are not very well documented, but take a look at the Standalone VMware ESXi virtualization host management pack which uses this feature.
Full disclosure: I work as Development Team Lead at OP5.

Troi plugin function not working in FileMaker WebDirect

For purposes of being able to select from multiple file from the computer or network, I am using the following script command which works great in native FileMaker 14:
Set Variable [$dosFN; value: TrFile_SelectFileDialog( " -AllowMultipleFiles" ; "Please select one or more files" ;)]
In testing to make sure this works, I am doing a custom dialog to display the value of $dosFN and an example that successfully comes back would show:
From drive as:
C:\Files\img1.jpg
C:\Files\img2.jpg
or from network as:
\\ACI-2008-01\Files\img1.jpg
\\ACI-2008-01\FIles\img2.jpg
What is not work is when I attempt the same thing in a webdirect environment which is only showing the following when I perform the same script without even a file selection dialog box:
$$-4222
So how can I possibly make this work as desired in a webdirect environment?
This is not possible. This call is supposed to display the select file dialog. The plug-in does this by calling a function from one of the system libraries. In Web Direct you work with the database via a browser. Behind the scenes FileMaker silently converts the layouts and scripts into something that can run in the browser (lots of HTML, CSS, and JavaScript). But it cannot convert all and this call is one of things it cannot convert. As a result the plug-in only runs on the FileMaker server in a completely different environment and has no way to make a system call on another computer.
You may have better luck with FileMaker's own Insert File script step. It seems to be compatible with Web Direct. It cannot select multiple files though. (Also, other plug-in functions may still work in Web Direct but keep in mind that they actually run on the server, not the computer that runs the browser.)
The latest version of Troi file seems to be webdirect compatible, but it has to be installed on the FileMaker server as a server-side plugin. In any case check their documentation first, as it is usually quite detailed and if it does not help, you might get in touch with their support.
From how I understand it, the plug-in is running server side and has no way to display an interface on the client side (web browser). I do not believe there is a way to do what you are trying to do with Troi File, but you may just need to contact Troi.

Opening a website automatically using secure code

I want to open a website(say www.google.com) automatically whenever I am logon. This can be achieved through batch script and VBA macros but it can not be implemented on organisational level due to security concerns.
Is there any secure way to open a particular website using some piece of code.
Please let me know. Thanks in advance.
Regards,
Shrikant Salunke
There are lots of ways to do this, but I'm not sure exactly when you mean by "whenever I am logon".
Basically, if you want the most portable, multilingual way to open a web page with a program you are going to be passing a shell command that looks like this (following your example)
open https://www.google.com
This will open the specified URL (I think it must be a complete URL - including scheme) on the default browser.
Now the "when I am logon" part is what could make things complicated.
If by "when I am logon" you mean whenever you open your browser, then you don't even need to do this you can just reset your browser's homepage.
If you mean whenever you logon to your proxy, you just have to make sure that the first proxy request you send contains the correct request URI. In the case of google the correct URI would be google.com:443. The URI will have the format <hostname>:<portnumber>. The default HTTPS port number is 443. The default HTTP port number is 80.
If you mean whenever you logon to your system then you just need to execute the command open https://www.google.com within a login shell script. Login scripts are system dependent but you may refer to this post if you use a Unix-like or Posix compliant OS. If you use Windows I don't know how to help you but I'm sure there's a way to do it.
If you mean whenever you log into some program you wrote then things get really easy. You just have to make a call to that open command. Almost every language has a built in method for interacting with a shell. You just have to find that method in whatever platform you're using.
I honestly don't know if this will be helpful but good luck!
Edit
How to Run a Batch Shell Script Securely
What you need to do is run the script with a different trustlevel. Since you're using Batch you can do this by executing your script using the runas command (docs). This command allows you to adjust the trustlevel under which the script is executed without changing users. By changing the privileges of the executable, you can prevent it doing anything malicious. All it needs is enough "trust" to execute the open command.
If you need this fully automated throughout your organization, you can wrap your Batch file in a second Batch file that will call the runas command. This wrapper script will not run with reduced privileges but it also won't interact with the internet so you don't have to worry about it as much. You would be able to execute the wrapper script as a login script, and then everything should work.
Honestly I'm not a Windows person but I hope this helps!

Authenticating dialog box in Linux environment using Selenium

The Base URL in my Web Driver class asks for authentication for username and password. My Scripts run perfectly on Windows environment using AutoIT for authentication using the below mentioned code line.
`System.setProperty("webdriver.chrome.driver", this.getClass().getClassLoader().getResource("data/chromedriver_win32.exe").getFile());`
But I need to run on Linux environment and I want to replace this server authentication in place of AutoIT.
I have googled it and I got the results that I can still run the scripts using wine but the results are not perfect. If anyone found solution for this kind of problem please help me.
Thanks
This may not be a secure approach, but would it help to put user name & password in the URL?
I mention it is not a secure way since it is for an automated test and you'd have to take safeguards to ensure who the viewing audience is, since you don't want security risks.
If your application typically challenges with htpassword box, you might want to see
http://community.sitepoint.com/t/sending-htpasswd-login-information-in-a-url/2586/2

Resources