summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfireice-uk <fireice-uk@users.noreply.github.com>2017-12-08 11:04:07 +0000
committerGitHub <noreply@github.com>2017-12-08 11:04:07 +0000
commit99b681453aa7b0e34b211b629f810b2de27e69a7 (patch)
treea075394183a42a05283a58897ff337abfbd54360
parent28fc6b475668041bd12f21dd2eec798dbb388111 (diff)
parent62a13f03d4dfcab48ce153f733001dc796b96dcb (diff)
downloadxmr-stak-99b681453aa7b0e34b211b629f810b2de27e69a7.zip
xmr-stak-99b681453aa7b0e34b211b629f810b2de27e69a7.tar.gz
Merge pull request #305 from psychocrypt/topic-optionalUACDialog
allow to diable UAC dialog
-rw-r--r--.appveyor.yml2
-rw-r--r--CMakeLists.txt6
-rw-r--r--doc/compile.md5
-rw-r--r--doc/tuning.md6
-rw-r--r--doc/usage.md22
-rw-r--r--xmrstak/cli/cli-miner.cpp57
6 files changed, 65 insertions, 33 deletions
diff --git a/.appveyor.yml b/.appveyor.yml
index efa65bf..b463d0d 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -22,7 +22,7 @@ build_script:
- mkdir build
- cd build
- set CMAKE_PREFIX_PATH=C:\xmr-stak-dep\hwloc;C:\xmr-stak-dep\libmicrohttpd;C:\xmr-stak-dep\openssl;
- - cmake -G "Visual Studio 14 2015 Win64" -T v140,host=x64 .. -DWIN_UAC=OFF -DCUDA_ARCH=30
+ - cmake -G "Visual Studio 14 2015 Win64" -T v140,host=x64 .. -DCUDA_ARCH=30
- cmake --build . --config Release --target install
test_script:
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a444085..9540d7a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -521,12 +521,6 @@ set(LIBRARY_OUTPUT_PATH "bin")
target_link_libraries(xmr-stak ${LIBS} xmr-stak-c xmr-stak-backend)
-option(WIN_UAC "Add UAC manifest on Windows" ON)
-
-if(WIN_UAC AND CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
- set_property(TARGET xmr-stak PROPERTY LINK_FLAGS "/level='requireAdministrator' /uiAccess='false'")
-endif()
-
################################################################################
# Install
################################################################################
diff --git a/doc/compile.md b/doc/compile.md
index 4fa940f..e97affa 100644
--- a/doc/compile.md
+++ b/doc/compile.md
@@ -52,11 +52,6 @@ After the configuration you need to compile the miner, follow the guide for your
- native means the miner binary can be used only on the system where it is compiled but will archive the highest hash rate
- use `cmake .. -DXMR-STAK_COMPILE=generic` to run the miner on all CPU's with sse2
-### only available for Windows
-- `WIN_UAC` will enable or disable the "Run As Administrator" prompt on Windows.
- - UAC confirmation is needed to use large pages on Windows 7.
- - On Windows 10 it is only needed once to set up the account to use them.
-
## CPU Build Options
- `CPU_ENABLE` allow to disable/enable the CPU backend of the miner
diff --git a/doc/tuning.md b/doc/tuning.md
index 8eeefcb..8b28a43 100644
--- a/doc/tuning.md
+++ b/doc/tuning.md
@@ -1,6 +1,7 @@
# Tuning Guide
## Content Overview
+* [Windows](windows)
* [NVIDIA Backend](#nvidia-backend)
* [Choose Value for `threads` and `blocks`](#choose-value-for-threads-and-blocks)
* [Add more GPUs](#add-more-gpus)
@@ -10,6 +11,11 @@
* [Increase Memory Pool](#increase-memory-pool)
* [Scratchpad Indexing](#scratchpad-indexing)
+## Windows
+"Run As Administrator" prompt (UAC) confirmation is needed to use large pages on Windows 7.
+On Windows 10 it is only needed once to set up the account to use them.
+Disable the dialog with the command line option `--noUAC`
+
## NVIDIA Backend
By default the NVIDIA backend can be tuned in the config file `nvidia.txt`
diff --git a/doc/usage.md b/doc/usage.md
index b516333..60cf69b 100644
--- a/doc/usage.md
+++ b/doc/usage.md
@@ -30,27 +30,7 @@ The number of files depends on the available backends.
## Command Line Options
The miner allow to overwrite some of the settings via command line options.
-
-```
-Usage: xmr-stak [OPTION]...
-
- -h, --help show this help
- -v, --version show version number
- -V, --version-long show long version number
- -c, --config FILE common miner configuration file
- --currency NAME currency to mine: monero or aeon
- --noCPU disable the CPU miner backend
- --cpu FILE CPU backend miner config file
- --noAMD disable the AMD miner backend
- --amd FILE AMD backend miner config file
- --noNVIDIA disable the NVIDIA miner backend
- --nvidia FILE NVIDIA backend miner config file
-
-The Following options temporary overwrites the config file settings:
- -o, --url URL pool url and port, e.g. pool.usxmrpool.com:3333
- -u, --user USERNAME pool user name or wallet address
- -p, --pass PASSWD pool password, in the most cases x or empty ""
-```
+Run `xmr-stak --help` to show all available command line options.
## Docker image usage
diff --git a/xmrstak/cli/cli-miner.cpp b/xmrstak/cli/cli-miner.cpp
index 06acaea..546d226 100644
--- a/xmrstak/cli/cli-miner.cpp
+++ b/xmrstak/cli/cli-miner.cpp
@@ -66,6 +66,9 @@ void help()
cout<<" -v, --version show version number"<<endl;
cout<<" -V, --version-long show long version number"<<endl;
cout<<" -c, --config FILE common miner configuration file"<<endl;
+#ifdef _WIN32
+ cout<<" --noUAC disable the UAC dialog"<<endl;
+#endif
#if (!defined(CONF_NO_AEON)) && (!defined(CONF_NO_MONERO))
cout<<" --currency NAME currency to mine: monero or aeon"<<endl;
#endif
@@ -269,6 +272,41 @@ void do_guided_config(bool userSetPasswd)
std::cout<<"Configuration stored in file '"<<params::inst().configFile<<"'"<<std::endl;
}
+#ifdef _WIN32
+/** start the miner as administrator
+ *
+ * This function based on the stackoverflow post
+ * - source: https://stackoverflow.com/a/4893508
+ * - author: Cody Gray
+ * - date: Feb 4 '11
+ */
+void UACDialog(const std::string& binaryName, std::string& args)
+{
+ args += " --noUAC";
+ SHELLEXECUTEINFO shExInfo = {0};
+ shExInfo.cbSize = sizeof(shExInfo);
+ shExInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
+ shExInfo.hwnd = 0;
+ shExInfo.lpVerb = "runas";
+ shExInfo.lpFile = binaryName.c_str();
+ // disable UAC dialog (else the miner will go into a infinite loop)
+ shExInfo.lpParameters = args.c_str();
+ shExInfo.lpDirectory = 0;
+ shExInfo.nShow = SW_SHOW;
+ shExInfo.hInstApp = 0;
+
+ if(ShellExecuteEx(&shExInfo))
+ {
+ printer::inst()->print_msg(L0,
+ "This window has been opened because xmr-stak needed to run as administrator. It can be safely closed now.");
+ WaitForSingleObject(shExInfo.hProcess, INFINITE);
+ CloseHandle(shExInfo.hProcess);
+ // do not start the miner twice
+ std::exit(0);
+ }
+}
+#endif
+
int main(int argc, char *argv[])
{
#ifndef CONF_NO_TLS
@@ -302,6 +340,7 @@ int main(int argc, char *argv[])
}
bool userSetPasswd = false;
+ bool uacDialog = true;
for(int i = 1; i < argc; ++i)
{
std::string opName(argv[i]);
@@ -424,6 +463,10 @@ int main(int argc, char *argv[])
}
params::inst().configFile = argv[i];
}
+ else if(opName.compare("--noUAC") == 0)
+ {
+ uacDialog = false;
+ }
else
{
printer::inst()->print_msg(L0, "Parameter unknown '%s'",argv[i]);
@@ -432,6 +475,20 @@ int main(int argc, char *argv[])
}
}
+#ifdef _WIN32
+ if(uacDialog)
+ {
+ std::string minerArgs;
+ for(int i = 1; i < argc; i++)
+ {
+ minerArgs += " ";
+ minerArgs += argv[i];
+ }
+
+ UACDialog(argv[0], minerArgs);
+ }
+#endif
+
// check if we need a guided start
if(!configEditor::file_exist(params::inst().configFile))
do_guided_config(userSetPasswd);
OpenPOWER on IntegriCloud