diff options
Diffstat (limited to 'fddnotify/PTInstaller/PT-Installer.c')
-rw-r--r-- | fddnotify/PTInstaller/PT-Installer.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/fddnotify/PTInstaller/PT-Installer.c b/fddnotify/PTInstaller/PT-Installer.c new file mode 100644 index 0000000..4010331 --- /dev/null +++ b/fddnotify/PTInstaller/PT-Installer.c @@ -0,0 +1,62 @@ +#include <windows.h>
+#include <stdio.h>
+#include "pt_ioctl.c"
+
+HANDLE hPortTalk;
+
+BOOL isWindowsNT(void)
+{
+ OSVERSIONINFOEX osvi;
+ BOOL bOsVersionInfoEx;
+
+ ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
+ osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
+ if(!(bOsVersionInfoEx = GetVersionEx((OSVERSIONINFO *) &osvi))) {
+ osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+ if(!GetVersionEx((OSVERSIONINFO *)&osvi))
+ osvi.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS;
+ }
+ return osvi.dwPlatformId==VER_PLATFORM_WIN32_NT;
+}
+
+void AddKeysToRegistry(void)
+{
+ HKEY hk;
+ DWORD dwData;
+ LPTSTR pszData = "PortTalk";
+
+
+ if (RegCreateKeyEx(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Services\\PortTalk", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hk, NULL))
+ return;
+
+ dwData = 1;
+ RegSetValueEx(hk, "Type", 0, REG_DWORD, (LPBYTE)&dwData, sizeof(DWORD));
+
+ dwData = 1;
+ RegSetValueEx(hk, "ErrorControl", 0, REG_DWORD, (LPBYTE)&dwData, sizeof(DWORD));
+
+ dwData = 2;
+ RegSetValueEx(hk, "Start", 0, REG_DWORD, (LPBYTE)&dwData, sizeof(DWORD));
+
+ RegSetValueEx(hk, "DisplayName", 0, REG_EXPAND_SZ, (LPBYTE)pszData, (DWORD)lstrlen(pszData)+1);
+
+ RegCloseKey(hk);
+}
+
+int main(void)
+{
+ if (!isWindowsNT()) {
+ printf("PortTalk cannot be installed on non-NT systems (as a matter of fact you won't need it) :)\n");
+ return 0;
+ }
+
+ if (OpenPortTalk())
+ return 1;
+
+ ClosePortTalk();
+
+ AddKeysToRegistry();
+
+ printf("PortTalk succesful installation\n");
+ return 0;
+}
|