HoloLens OS files access and Calibration data - hololens

I would like to know if can get access to the internal OS files in HoloLens and the data that is been generated during the callibration proccess.

Unfortunately, that would be a no. Microsoft has kept most everything OS level off limits to developers. Are you looking to recreate the calibration process? Or is this for something else entirely?
If you are looking to recreate the calibration app, here is a GitHub link to a custom app used to calculate the IPD of the user by using a photograph.
https://github.com/alexdrenea/HoloLensIPD
Since all the calibration app is doing is basically calculating the distance between your eyes. Maybe you can find what you're looking for in there.

Related

How to prevent an offline Angular+Express based application from getting stolen?

Last year, I developed a simple Angular-Express-SQLite based application for a local Warehouse(Logistics Hub) which was used to keep track of daily incoming and outgoing trucks with information like their weight, origin, etc. and I deployed the app on an offline desktop.
Everything went well until I came to know that the computer operator of the Warehouse resold the app to other Warehouses for a decent amount.
Now, the first Warehouse owner has contacted me again with some changes in the app with some crucial inputs as per the new guidelines from the government, I'm looking for some solution to prevent the app from getting stolen again.
I'm looking for a solution that is as light in size as possible because of the type of desktops the app runs on are way too cheap(with lowest possible configuration), hence the choice of SQLite instead of some other Database providers.
The app should be deployed in such a manner that it can't be copy-pasted from one machine to other. It could be achieved by simple, not so secure methods too as the operators aren't that tech-savvy and only know the bare minimum knowledge about Computers, like copy-paste.
So I came across a low-level workaround since I'll be the one who'd set up the application on the client machine.
While initialising the application, an encrypted entry in the database could be set up with the name of the computer by reading the environment variable using express/node.
process.env.COMPUTERNAME
Or using some other system variable unique to that particular Computer and then comparing the stored value and current value on every login.
As Joachim already said in his comment, if the App has internet access, you can check for a license-key or something similar on a server.
Perhaps something like PKG can help, which compiles your sources into a single executable file. PKG on npmjs

Prevent from screen recording

I am working on an educational e-commercial website .. In which the user need to authenticate and then the videos on particular topics will be available.. so how can I prevent my video to be screen-recorded...
Different OS's and applications support different mechanisms to try to tackle this - for example:
Microsoft Edge on Windows 10 uses integrated 'Protected Media Path' for encrypted content which will stop simple screenshots working
Website and web app developers may use a number of CCS 'tricks' to achieve a similar affect, although these can usually be workaround with standard web developer and debug tools.
Mobile video typically uses protected memory for encrypted content which will usually give a black screen on capture.
As mentioned in comments and other answers these are all 'barriers' but they don't make it impossible to copy the content - the best example being pointing a camera at the screen a copying that way.
The idea is generally to make it hard enough compared to the value of the content so that people are not prepared to invest the time to work around your barriers.
It is not possible, for a variety of reasons:
There is no Web API for that.
Even if there was, it would be possible to reverse engineer the browser/OS to allow for screen recording.
Even if, for some reason, you couldn't access and modify the software running on the computer, you could connect the computer to a capture card instead of your monitor.
And if you also couldn't do that, you could just point a camera at the screen and start recording.

On-Screen Keyboard hide and run within excel instance to use functionality

To give a brief backstory to bring things up to my current position / reason for my question:
I originally wanted to use sendkeys to send keyboard presses to a Citrix Xenapp Remote Terminal Application (VT320 Emulator).
This does not work.
After some investigation it became apparent that this has been a reasonably common issue.
I eventually found a work-around that involved opening the windows 'On-Screen Keyboard' application and sending mouseclicks using VBA to the OSK app itself. The key transmissions would be successfully received in the remote terminal application.
This solution is a rather awkward and not very practical solution as it relies on many factors e.g. screen resolution, co-ordinates / current position of the OSK etc.
With the above in mind, I am looking to achieve a more full proof method and here's my thoughts:
Rather than using simulated mouseclicks I would ideally like to be able to either 'embed' the OSK app into the excel instance and reference each key
or hide the app and find a way to make the application receive the VBA keys requested.
I'm aware that Sendkeys has its limitations so I have also tried using SendInput via a Keyb_Event and this also didn't work.
To any half experienced expert, I'm clearly a beginner so I'm suffering from a lack of knowledge here perhaps.
If anyone can point me in the right direction for solving this issue, I'd really appreciate it!
Many thanks.
EDIT
I've looked into this a little more and found this post:
Finding the class name of the On-Screen Keyboard?
Which would suggest that if I know the class of the on screen keyboard, I could use its commands within excel VBA?
I did try to use the code within the question but couldn't get it to work.
So hopefully my question is a little easier to answer?
Can I use the class name of the on-screen keyboard app / declare an API function that will allow me to send simulated key functions as if it's the OSK app being clicked by the mouse?
Hopefully someone can help!!
Trying to automate apps locally can be quite fiddly. Doing it through a Citrix HDX connection is just painful.
Do you have any say over the Citrix environment? If so I'd try writing an automation app that actually runs on the Citrix server in the same session as the published app you're trying to automate. This has the advantage that you're effectively automating a local app which would make life easier.
Depending on how your automation works you may need to communicate between your automation app running in the Citrix session and your client. You could use WCF to bridge the two together.
So that's how I would try and do, as regarding your specific question I've provided some thoughts below...
OSK automation thoughts
I've done some limited automation of the OSK. There are actually two OSKs if you're using Win8. Osk.exe is the old one which has been around a while. TabTip.exe is the new Win8 specific OSK.
One problem to keep in mind is that both of these processes run as high integrity processes which means normal (medium) integrity processes have very limited abilities to automate them. So while I could automate some stuff, many messages would just get ignored. So this maybe why you are finding the OSK is not responding like you expect.
You can work around this by running your automation app as a high integrity process, but this generally means you need local admin (or local system) privilege to start the high integrity process. I never looked into the specifics of how you create high integrity processes. I know there's a command line tool you can use to force a process to run at a certain level (icacls.exe), e.g.
https://msdn.microsoft.com/en-us/library/bb625960.aspx
I imagine there would be APIs to do this as well.

Sharing Data between Windows Phone 8 and Windows 8 Store App

I am about to begin a fairly simple application, but I want to make sure I structure the backend of the application correctly because I plan to expand on it greatly in the future. Here's my question:
I am creating both a Windows Phone 8 and Windows 8 Store application. In this case, it is a unit conversion application where the user is given the ability to define custom unit conversion units. I would like to allow the user to essentially sync those custom units between the two platforms so that they don't need to define them multiple times.
What backend approach should I take?
XML storage coupled with SkyDrive, Azure, a local database that syncs over USB....There are a lot of options, and I'm not sure which way is preferred in the scenario I described above. Any help or suggestions would be greatly appreciated.
As for actual data sharing I would suggest using Azure, which is a bit more reliable and also transparent for the user (as opposed to a local db syncing over USB) and cleaner than XML-files in SkyDrive (the user doesn't need to see these files anyway).
As for code sharing you could use two techniques:
Portable Class Libraries
Linked Files
I have recently written two articles on this:
http://www.kenneth-truyers.net/2013/03/27/portable-class-libraries-or-source-code-sharing/
http://www.kenneth-truyers.net/2013/02/24/patterns-for-sharing-code-in-windows-phone-and-windows-8-applications/
It doesn't actually have to be Azure, if you are shooting for lower price range. You can also choose a webhosting and use build a WebAPI service, which will help you sync your data and put them on all devices. Of course, Azure is being preferred as the ultimate solution, because it offers much more features.
I have used windows 8 roaming data support for one app. In my case, data is simply the history of user operations in the app and data size is < 1k. windows 8 roaming data support can support up to 100k of data as per documentation and is a good start for w8 apps with very low investment. it covers for all w8 devices. it is certainly good for simple key/value pair kind of data for user.
Now the caveats - currently, it does not support windows phone roaming currently. It is a feature ask for phone 8 - it can be voted up. Finally, this will not roam to android and other mobile devices.
Another way to think about it - when do you need to build it?
If it is simply per user data storage - backend need not come in place in first release. You can start with w8 roaming data support and in future release x, it can be moved from windows 8 roaming data to skydrive or your web api or azure. what I mean to say, it need not be built affront.
If the backend is going to allow sharing of data between users or experience over aggregated data from multiple users - then, it is all together different problem. in that case, roaming data is not a solution. a backend web api or service is must.
HTH.
Other references: guidelines for windows 8 roaming data.

j2me MIDP: detecting if phone has a data plan

Is there a way to determine what kind of data plan a device has so an app provides a less rich experience if a data plan is not available? I imagine the connector factory would still be able to return me an HTTPConnection but it would cost the user serious money for lots of data, and I'd like to be nice and prevent that.
I thought there would be a way to query device capabilities in the MIDP API, but maybe it's in CLDC?
Since you mention it in your comments, you can probably make a Symbian OS C++ application that only connects via a specific set Wi-Fi access points (and just stay offline if none of these are available) but I can't think of a way to figure out the current user data plan or whether a given Wi-fi network is free.None of that is available in J2ME, at least not until something like JSR 307 is implemented.
You might want to look into how the Nokia IAPInfo API behaves on actual phones (including Sony-Ericsson and Samsung Series60 phones, potentially) since it is the closest thing to what you want.
No there is no way to do this.
As far as I know there is no way to do this. To address this precise issue, on first download we provide a big bold letter warning saying our apps require data plan. You can do something similar.
Or you can provide an option on first download for the user to say whether he has a data plan or not, and provide a degraded user experience if he doesnt. Dont forget to keep this as an option in application settings and allow the user to enable data services later, as he/she may get a data plan and want to use your app.

Resources