mihmig |
|
Статус: Активный участник Группы: Участники
|
Установлено: Код:
В чём может быть дело? Также вопрос: |
|
|
Евгений Афанасьев |
|
Статус: Сотрудник Группы: Участники Сказал(а) «Спасибо»: 20 раз |
Здравствуйте. |
Тех. поддержка |
|
|
|
mihmig |
|
Статус: Активный участник Группы: Участники
|
Нет, установка JCP производилась под учётной записью администратора (иначе бы не удалось записать jar-файлы в папку C:Program FilesJavajre7libext) |
|
|
Евгений Афанасьев |
|
Статус: Сотрудник Группы: Участники Сказал(а) «Спасибо»: 20 раз |
Проверьте с помощью regedit, какими права обладает узел HKEY_LOCAL_MACHINESoftwareJavaSoftPrefs и HKEY_LOCAL_MACHINESoftwareJavaSoftPrefsru. |
Тех. поддержка |
|
|
|
mihmig |
|
Статус: Активный участник Группы: Участники
|
Разрешение на чтение есть: Быть может апплет, запущенный с правами обычного пользователя пытается открыть эти ключи с правами «на запись»? |
|
|
mihmig |
|
Статус: Активный участник Группы: Участники
|
При запуске же «от имени администратора» (см. значок Far-manager-а — красный в таком случае) Дополню ещё вопросом: почему при просмотре свойств сертификата на всех его свойствах стоит восклицательный знак? |
|
|
mihmig |
|
Статус: Активный участник Группы: Участники
|
В конспекте выступления пользователя maxdm на втором дне мастер-класса 01.08.2014 |
|
|
Пользователи, просматривающие эту тему |
Guest |
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
- Remove From My Forums
-
Question
-
I have an application that stores the application database location in the registry under HKEY_LOCAL_MACHINESOFTWAREEasySoft. The VB6 application uses the registry API (RegOpenKey and RegQueryValue) to locate the database and works correctly on both XP and Vista. When run on Windows 7, the call to RegOpenKey fails returning an error code of 5 (access denied). The application install creates the registry entry with read access for all users. I have verified this happened on the windows 7 install using RegEdit. The entry is being created and the permission is being set to READ (same as in Vista and XP). To see if I could better understand the problem, I tried many unacceptable solutions including manually setting full control for all users, running the application as administrator and even turning off UAC. In every case, RegOpenKey returned error code 5 (getting access denied with user access control turned off seems impossible but this also failed). Any help, even suggestions about other things to check/test, would be greatly appreciated.
Ken
Answers
-
Well, I finally figured out the problem. In the code example I downloaded (as with many others like http://www.codetoad.com/vb_modify_registry.asp) there was the constant ERROR_ACCESS_DENIED = 5 defined. While looking at potential issues with ADVAPI32.DLL, where the function I am call resides, I found another example with the constant ERROR_ACCESS_DENIED = 8 and another constant ERROR_CANTWRITE = 5 defined. When I changed my application to ignore ERROR_CANTWRITE, it now works correctly.
I can understand adding a new return code since Windows 7 changed the access levels of this registry tree, but why change the meaning of an existing return value instead of adding a new one? And why not tell the development community what you did? One very simple note anywhere on the web and this would have been a 5 minute fix. Instead I spent many hours and wasted 2 weeks. Thanks for the great New Years present.
And one final note, how come no one monitoring this Forum couldn’t provide any useful help? My initial explanation of the problem gave the critical clue (…returning and error code of 5 — access denied…). Did any of you even bother to check the error code?
Ken
-
Proposed as answer by
Sunday, January 3, 2010 6:53 PM
-
Marked as answer by
Rong-Chun Zhang
Monday, January 4, 2010 10:17 AM
-
Proposed as answer by
I am having trouble opening a registry key with the RegOpenKeyEx function. The particular program I am writing installs fonts onto a computer, and they must be added to the registry to remain installed after a reboot. I am brand new to using the registry, so I have been looking much up, but I have run into a problem. Here is an example that shows the arguments I am sending to RegOpenKeyEx:
int main() {
HKEY key;
long code = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts", 0, KEY_ALL_ACCESS, &key);
if(code != ERROR_SUCCESS) {
std::cout << code << std::endl;
return 1;
}
RegCloseKey(key);
return 0;
}
The function returns 1 (ERROR_INVALID_FUNCTION). However, the following does work, and returns 0:
HKEY key;
RegOpenKeyEx(HKEY_LOCAL_MACHINE, NULL, 0, KEY_ALL_ACCESS, &key);
I do not know how to proceed, so any help would be greatly appreciated.
EDIT: I confirmed with regedit that the key does exist. It seems that if the second argument to RegOpenKeyEx is anything other than NULL, it returns error code 2.
EDIT 2: I have tried multiple solutions, including using the TEXT() function on the subkey and changing the access rights to KEY_SET_VALUE, but I still get the same error. I also tried using RegCreateKeyEx. Strangely, I still get error code 2, though sometimes I get error code 122 (ERROR_INSUFFICENT_BUFFER).
EDIT 3: I changed the error handling so it directly uses the return value of the function instead of GetLastError(). I now get error code 5 (ERROR_ACCESS_DENIED).
Originally reported on Google Code with ID 8253
Jul 10, 2013 10:14:00 AM java.util.prefs.WindowsPreferences <init>
WARNING: Could not open/create prefs root node SoftwareJavaSoftPrefs at root 0x80000002.
Windows RegCreateKeyEx(...) returned error code 5.
Compiling module app.app
[ERROR] Failure in unit cache map load.
java.util.concurrent.ExecutionException: java.lang.StackOverflowError
at java.util.concurrent.FutureTask$Sync.innerGet(Unknown Source)
at java.util.concurrent.FutureTask.get(Unknown Source)
at com.google.gwt.dev.javac.PersistentUnitCache.awaitUnitCacheMapLoad(PersistentUnitCache.java:466)
at com.google.gwt.dev.javac.PersistentUnitCache.find(PersistentUnitCache.java:391)
at com.google.gwt.dev.javac.CompilationStateBuilder.addArchive(CompilationStateBuilder.java:365)
at com.google.gwt.dev.ArchivePreloader.preloadArchives(ArchivePreloader.java:65)
at com.google.gwt.dev.Precompile.precompile(Precompile.java:243)
at com.google.gwt.dev.Precompile.precompile(Precompile.java:229)
at com.google.gwt.dev.Precompile.precompile(Precompile.java:141)
at com.google.gwt.dev.Compiler.run(Compiler.java:232)
at com.google.gwt.dev.Compiler.run(Compiler.java:198)
at com.google.gwt.dev.Compiler$1.run(Compiler.java:170)
at com.google.gwt.dev.CompileTaskRunner.doRun(CompileTaskRunner.java:88)
at com.google.gwt.dev.CompileTaskRunner.runWithAppropriateLogger(CompileTaskRunner.java:82)
at com.google.gwt.dev.Compiler.main(Compiler.java:177)
Caused by: java.lang.StackOverflowError
Reported by smithamohanan89
on 2013-07-10 04:49:34
I also have the registry error, although no subsequent exception is thrown in my case.
Reading on the Internet, I found out that this is due the fact that the GWT compiler
is trying to write in the Windows registry in HKEY_LOCAL_MACHINE, but it can't because
I haven't started it with Administrator privileges. Question is why I should need to.
Using GWT 2.4.0.
Reported by mauromol@tiscali.it
on 2013-10-15 12:59:09
I had the same issue: GWT compiler error with java.util.prefs.WindowsPreferences.
If I run as Administrator, it thankfully works. Why should I? Also, I don't even
get a stack trace.
Prefs can't be written to some <user.home>.gwt file?
Reported by zoran3
on 2013-10-18 20:39:28
I'm also having the same issue, no admin right resulting in an ERROR saying it's a WARNING.
This breaks integration with other tools that see this proclaimed error as an error
and logically consider that the compilation failed because of that.
Reported by nicolas.hurion
on 2014-03-27 08:56:12
The first WARNING refers to the registry permission problem.
The ERROR is a different issue, possibly caused by multiple running instances corrupting
the gwt-unitCache folder. I just have reproduced with same results (StackOverflowError).
Stopping all running GWT instances and removing the gwt-unitCache folder solved for
me.
Reported by forhecz.andras
on 2014-03-27 15:27:19
The first warning is caused by the update check (GWT stores in the preferences when
it last checked for updates so it only checks at most once per day), but it uses Preferences.userNodeForPackage()
(which uses HKEY_CURRENT_USER) so I can't see a) why it'd need to run as Administrator
or with UAC turned off and b) what could be changed in GWT to workaround the issue.
I'd rather punt and say it's a JDK bug.
If it really is a problem for you, then disable the update check with the -XdisableUpdateCheck
command-line argument.
The exception from the original report is an unrelated issue, as pointed out in comment
#4.
Reported by t.broyer
on 2014-03-28 10:07:16
- Status changed:
AsDesigned
dankurka is correct. This is indeed a JDK bug.
The problem is in the source for java/util/prefs/WindowsPreferences.java
from the JDK. Since both userNode
and systemNode
are declared static is means both of them will be created when the class is first loaded even if the systemNode
is never directly referenced. A fix seems to have been committed on 2016-0613 and 2016-06-15, so we will have to wait until this filters into Java 8 or Java 9.
As far as I can tell there’s no workaround that can be implemented in the GWT compiler as this is not an exception, it is actually a logged warning from the JDK’s internal logger.
Problem
The IBM Identity Insight Visualizer is not launching. When looking at the error output, it displays:
WARNING: Could not create windows registry node SoftwareJavaSoftPrefscom at root 0x80000001. Windows RegCreateKeyEx(…) returned error code 5.
java.util.prefs.WindowsPreferences WindowsRegOpenKey1
WARNING: Trying to recreate Windows registry node SoftwareJavaSoftPrefscom at root 0x80000001.
java.util.prefs.WindowsPreferences openKey
WARNING: Could not open windows registry node SoftwareJavaSoftPrefscom at root 0x80000001. Windows RegOpenKey(…) returned error code 2.
Cause
The Java Runtime Environment (JRE) path bit width specified for the Visualizer in the security.xml file was specified as 32 bit but the Operating System is 64 bit.
Resolving The Problem
Modify the security.xml file to point to the 64bit JRE.
1. Modify the security.xml file (located in $INSTALLDIR/ewas/pro/config/cells/DefaultCell:
(make a copy of the security.xml before modifying)
Search for the following line (look for the “jdbcLibPath” string):
<options xmi:id=»Property_1267653943709″ name=»jdbcLibPath» value=»/opt/IBM/db2/V9.7/lib» required=»false»/>
and change the directory path from “lib” to “lib64” (in bold below):
<options xmi:id=»Property_1267653943709″ name=»jdbcLibPath» value=»/opt/IBM/db2/V9.7/lib64» required=»false»/>
Notice the only change was adding the ’64’ to the ‘lib’ directory.
Save the changes and restart the Visualizer. The 64 bit JRE should be picked up now.
[{«Product»:{«code»:»SS2HSB»,»label»:»InfoSphere Identity Insight»},»Business Unit»:{«code»:»BU059″,»label»:»IBM Software w/o TPS»},»Component»:»—«,»Platform»:[{«code»:»PF033″,»label»:»Windows»}],»Version»:»8.0;8.1″,»Edition»:»»,»Line of Business»:{«code»:»LOB10″,»label»:»Data and AI»}}]
SlangID |
|
Статус: Участник Группы: Участники Сказал «Спасибо»: 2 раз |
Добрый день! Выполняю получение данных из отделённой подписи из файла sig через COM с помощью лицензионной КриптоПро CSP 4.0.xxxxx. Сервера времени нет. Подписание выполняю так (в сокращённом виде): Set SignedData = CreateObject(«CAdESCOM.CadesSignedData») signature = SignedData.SignCades(oSigner, CADES_BES, True, CAPICOM_ENCODE_BASE64) Получение данных из подписи выполняю так (Другого способа не нашёл в COM): Set SignedData = CreateObject(«CAdESCOM.CadesSignedData») Call SignedData.VerifyCades(signature, CADES_BES, True) Как результат, если серификаты которыми осуществлялась подпись не просрочены в SignedData.Signers заполняется параметрами, в том числе oSign.Certificate и oSign.SigningTime (oSign типа CAdESCOM.CPSigner). Но если сертификаты например просрочены, то oSign.Certificate заполняется, но oSign.SigningTime нет, даже если не считать уведомление о том что подпись не действительна. Можно как-то иначе чем через Call SignedData.VerifyCades(signature, CADES_BES, True), заполнить данными SignedData.Signers, чтобы можно было прочитать достпные параметры, в том числе oSign.SigningTime, хоть и была она поставлена на основании данных локального ПК, где выполнялась подпись? Мои попытки найти варинты данного решениея пока что не увенчались успехом. Находил объект CAdESSignature, но для COM такого похоже нет, а есть он на Java. Также вопрос, если выполнить получение этих данных на Java, нужна ли для этого лицензия КриптоПро JCP? |
|
|
SlangID |
|
Статус: Участник Группы: Участники Сказал «Спасибо»: 2 раз |
Решил попробовать посмотреть атрибуты подписи, по результтам проверки, даже если сертифкат одного или всех подписавших просрочен. Set signers = SignedData.Signers ForAll oSign In signers If oAttr.oid.Value = «1.2.840.113549.1.9.5» Then End If Next Что не так делаю и как получить значение атрибута и при необходимости расшифровать его? Отредактировано пользователем 10 марта 2022 г. 13:38:29(UTC) |
|
|
SlangID |
|
Статус: Участник Группы: Участники Сказал «Спасибо»: 2 раз |
Можно было бы подумать, что в AuthenticatedAttributes2 на самом дле не заполнен параметр для oid 1.2.840.113549.9.5 (Время подписания), но если вызвать Call SignedData.Display(), отобразится оконо со свойствами подписи, где атрибут «Время подписания» заполнен. |
|
|
SlangID |
|
Статус: Участник Группы: Участники Сказал «Спасибо»: 2 раз |
Решил перепроверить через ASN.1 Decoder (https://lapo.it/asn1js/) файл с подписями *.sig, вдруг всё таки нет там в атрибутах даты или она не там. Попробовал и дата оказалась на месте (см. рисунок). Получается дата и время на месте и OID соответствует (1.2.840.113549.1.9.5), но при попытке его получить через COM (КриптоПро 4.0.хххх) AuthenticatedAttributes2, выдаётся ошибка CAdESCOM.CPAttribute.1: Встречено неверное значение тэга ASN1. Делаю вывод. В коде получения значения атрибута ошибка или есть какой-то способ получения про который ни где не написали. Как всё таки корректно получить данный атрибут? Не писать же в самом деле ASN.1 декодер :). |
|
|
Санчир Момолдаев |
|
Статус: Сотрудник Группы: Модератор, Участники Сказал(а) «Спасибо»: 83 раз |
Добрый день! C# Код:
Java Код:
N.B. время в UTC |
Техническую поддержку оказываем тут |
|
|
|
1 пользователь поблагодарил Санчир Момолдаев за этот пост. |
SlangID
оставлено 11.03.2022(UTC) |
SlangID |
|
Статус: Участник Группы: Участники Сказал «Спасибо»: 2 раз |
Спасибо, добрый человек! Через комплект jar из Java CSP получилось реализовать получение Времени подписи по данному OID. Немного только иначе, но суть та же. Ниже код в котором немного «разложил» получение каждого из объектов чтобы было понятнее на данном этапе и было ясно что необходимо подключить в проект. Может быть кому-то однажды пригодиться. Код:
|
|
|
SlangID |
|
Статус: Участник Группы: Участники Сказал «Спасибо»: 2 раз |
Единственно, в процессе выполнения кода идёт обращение к записям реестра, видимо Java CSP это необходимо, и пишет в консоль предпреждения (см. ниже). Но Java CSP не устанавливал и не планируется ещё отдельно его ставить пользователям или на сервер. Jar-ы подключаются в проект как есть, плюс используется своя JVM, а не те которые ставятся в Windows. Код:
|
|
|
SlangID |
|
Статус: Участник Группы: Участники Сказал «Спасибо»: 2 раз |
Также вопрос в продолжение темы. Приведу пример: Код:
А дальше в коде уже можно воспользоваться данными функциями для дальнейшей работы. Использовать то скорее всего нужно «cadescom.dll«. А вот что в ней, пока не понял, если подскажете или намекнёте, будет просто отлично. |
|
|
two_oceans |
|
Статус: Эксперт Группы: Участники Сказал(а) «Спасибо»: 110 раз |
Автор: SlangID Также вопрос в продолжение темы. Использовать то скорее всего нужно «cadescom.dll«. А вот что в ней, пока не понял, если подскажете или намекнёте, будет просто отлично. Да, интересный вопрос. Однако, с учетом замечания выше «через Com не выйдет», то, полагаю, подключив cadescom.dll попадете на те же грабли. Ну в худшем случае конечно можно подключить asn1 библиотеки, так что подход не совсем уж безнадежный. |
|
|
1 пользователь поблагодарил two_oceans за этот пост. |
SlangID
оставлено 11.03.2022(UTC) |
Санчир Момолдаев |
|
Статус: Сотрудник Группы: Модератор, Участники Сказал(а) «Спасибо»: 83 раз |
Автор: SlangID Единственно, в процессе выполнения кода идёт обращение к записям реестра, видимо Java CSP это необходимо, и пишет в консоль предпреждения (см. ниже). Но Java CSP не устанавливал и не планируется ещё отдельно его ставить пользователям или на сервер. Jar-ы подключаются в проект как есть, плюс используется своя JVM, а не те которые ставятся в Windows. Код:
видимо вы используете java8. там необходимо элевация прав до админа.либо хотябы раз запустить от админа. эти ошибки уйдут, но появятся другие. но их тоже можно решить. попробуйте java10+ (java-csp-A) настройки будут в контексте пользователя |
Техническую поддержку оказываем тут |
|
|
|
Пользователи, просматривающие эту тему |
Guest |
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Name: rmT116609 Date: 10/31/2002
FULL PRODUCT VERSION :
java version «1.4.1»
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1-b21)
Java HotSpot(TM) Client VM (build 1.4.1-b21, mixed mode)
FULL OPERATING SYSTEM VERSION :
Microsoft Windows 2000 [Version 5.00.2195] Service Pack 1
A DESCRIPTION OF THE PROBLEM :
Preferences nodes below the system and user root cannot be read by Windows restricted users.
It is possible to read registry keys at the system and user root itself (SoftwareJavaSoftPrefs), but not to access any keys below the root, because the Preferences.node() function always throws an exception, even when the node
already exists.
It should be possible for a restricted user to have read access to any Java Preference nodes stored for the system or the user, but not to change them. Windows allows read access to the registry for restricted users, but not write
access.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
1. Compile source code provided.
2. Run program as a Windows standard user: it creates a node «test» in the Windows Registry and prints «value».
3. Run program as a Windows restricted user: error.
EXPECTED VERSUS ACTUAL BEHAVIOR :
I expected step 3 to print «value» as step 2, but I got an error.
ERROR MESSAGES/STACK TRACES THAT OCCUR :
28-Oct-2002 16:32:51 java.util.prefs.WindowsPreferences openKey
WARNING: Could not open windows registry node SoftwareJavaSoftPrefs at root 0x
80000002. Windows RegOpenKey(…) returned error code 5.
Exception in thread «main» java.lang.SecurityException: Could not open windows r
egistry node SoftwareJavaSoftPrefs at root 0x80000002: Access denied
at java.util.prefs.WindowsPreferences.openKey(Unknown Source)
at java.util.prefs.WindowsPreferences.openKey(Unknown Source)
at java.util.prefs.WindowsPreferences.<init>(Unknown Source)
at java.util.prefs.WindowsPreferences.childSpi(Unknown Source)
at java.util.prefs.AbstractPreferences.node(Unknown Source)
at java.util.prefs.AbstractPreferences.node(Unknown Source)
at Test.main(Test.java:7)
REPRODUCIBILITY :
This bug can be reproduced always.
———- BEGIN SOURCE ———-
import java.util.prefs.*;
public class Test
{
public static void main( String[] args )
{
Preferences prefs = Preferences.systemRoot().node( «test» );
System.out.println( prefs.get( «key», «value» ) );
}
}
———- END SOURCE ———-
(Review ID: 166333)
======================================================================
Name: rmT116609 Date: 10/31/2002
DESCRIPTION OF THE PROBLEM :
When a user runs a java program that access the system preferences by using the following code:
private static final Preferences systemPrefs;
static {
systemPrefs = Preferences.systemRoot().node
(«/my/system/pref»);
}
a SecurityException is thrown from java.util.prefs.WindowsPreferences. Running the same code with administrator’s privilage is fine.
If accessing to system preferences is only limited to user with high previlages, it seriously deminishes the purpose of providing the API. I notice this problem has been reported in Java Discussion Forums
(http://forum.java.sun.com/thread.jsp? forum=31&thread=261679) with a 10 duke dollar reward. But I think a work around to the problem, if it exists, will be
contorted.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
1. Run code with «user» previlage in windows 2000:
import java.util.prefs.Preferences;
public class Test {
private static final Preferences systemPrefs;
static {
systemPrefs = Preferences.systemRoot().node
(«/my/system/pref»);
}
public static void main (String [] args) {}
}
You will get a java.lang.SecurityException.
2. Run same code with administrator’s privilage, everything
is fine.
3.
EXPECTED VERSUS ACTUAL BEHAVIOR :
Expected result: code runs fine by users in both
the «users» user group and the «administrators» user group.
Actual result: code runs only by users in
the «administrators» user group. code throws
SecurityException when run by a user in the «users» user
group.
ERROR MESSAGES/STACK TRACES THAT OCCUR :
E:javamy>whoami
test
E:javamy>java Test
Oct 31, 2002 6:13:07 AM java.util.prefs.WindowsPreferences openKey
WARNING: Could not open windows registry node SoftwareJavaSoftPrefs at root
0x80000002. Windows RegOpenKey(…) returned error code 5.
Exception in thread «main» java.lang.ExceptionInInitializerError
Caused by: java.lang.SecurityException: Could not open windows registry node
SoftwareJavaSoftPrefs at root 0x80000002: Access denied
at java.util.prefs.WindowsPreferences.openKey
(WindowsPreferences.java:477)
at java.util.prefs.WindowsPreferences.openKey
(WindowsPreferences.java:449)
at java.util.prefs.WindowsPreferences.<init>
(WindowsPreferences.java:372)
at java.util.prefs.WindowsPreferences.childSpi
(WindowsPreferences.java:789)
at java.util.prefs.AbstractPreferences.node
(AbstractPreferences.java:816)
at java.util.prefs.AbstractPreferences.node
(AbstractPreferences.java:800)
at Test.<clinit>(Test.java:5)
E:javamy>whoami
Administrator
E:javamy>java Test
E:javamy>
REPRODUCIBILITY :
This bug can be reproduced always.
———- BEGIN SOURCE ———-
import java.util.prefs.Preferences;
public class Test {
private static final Preferences systemPrefs;
static {
systemPrefs = Preferences.systemRoot().node(«/my/system/pref»);
}
public static void main (String [] args) {}
}
———- END SOURCE ———-
(Review ID: 166468)
======================================================================
Name: rmT116609 Date: 11/01/2002
DESCRIPTION OF THE PROBLEM :
Accessing an existing system preference by a user who is *not* in the administrator group results in a SecurityException. Using nodeExists: if the node does not exist in the system preferences
(HKEY_LOCAL_MACHINESOFTWAREJavaSoftPrefs) it returns false and everyone is happy. If the node does exist in the system preferences and the user is not in the administrator group, then Windows RegOpenKey returns an error and a SecurityException is thrown.
This is new to Java 1.4 as Preferences didn’t exist before it.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
1. As a user in the Administrators group create a system
preference (test/pref key=not value=working).
2. As a user *not* in the Administrator group
Preferences prefs = Preferences.systemRoot();
if ( prefs.nodeExists( «test/pref» ) ) {
System.out.println( «test/pref node exists» );
}
3. relax and enjoy the SecurityException
EXPECTED VERSUS ACTUAL BEHAVIOR :
Expected:
test/pref node exists
Reality:
Nov 1, 2002 8:41:48 AM java.util.prefs.WindowsPreferences
openKey
WARNING: Could not open windows registry node
SoftwareJavaSoftPrefs at root 0x80000002. Windows
RegOpenKey(…) returned error code 5.
java.lang.SecurityException: Could not open windows registry
node SoftwareJavaSoftPrefs at root 0x80000002: Access denied
ERROR MESSAGES/STACK TRACES THAT OCCUR :
Nov 1, 2002 8:41:48 AM java.util.prefs.WindowsPreferences openKey
WARNING: Could not open windows registry node SoftwareJavaSoftPrefs at root 0x
80000002. Windows RegOpenKey(…) returned error code 5.
java.lang.SecurityException: Could not open windows registry node SoftwareJavaS
oftPrefs at root 0x80000002: Access denied
at java.util.prefs.WindowsPreferences.openKey(WindowsPreferences.java:477)
at java.util.prefs.WindowsPreferences.openKey(WindowsPreferences.java:449)
at java.util.prefs.WindowsPreferences.<init>(WindowsPreferences.java:372)
at java.util.prefs.WindowsPreferences.childSpi(WindowsPreferences.java:789)
at java.util.prefs.AbstractPreferences.node(AbstractPreferences.java:816)
at java.util.prefs.AbstractPreferences.node(AbstractPreferences.java:796)
at PrefsTest.main(PrefsTest.java:31)
REPRODUCIBILITY :
This bug can be reproduced always.
———- BEGIN SOURCE ———-
As Administrator:
import java.util.prefs.Preferences;
public class AdminAddPref {
public static void main( String[] args ) {
Preferences prefs = Preferences.systemRoot();
prefs = prefs.node( «test/pref» );
prefs.put( «not», «working» );
}
}
As a non-administrator user:
import java.util.prefs.Preferences;
import java.util.prefs.BackingStoreException;
public class UserCheckPref {
public static void main( String[] args ) throws BackingStoreException {
Preferences prefs = Preferences.systemRoot();
if ( prefs.nodeExists( «test/pref» ) ) {
System.out.println( «Yes, it’s there» );
} else {
System.out.println( «No, it’s not» );
}
}
}
———- END SOURCE ———-
CUSTOMER WORKAROUND :
Add all users to the Administrators group.
(Review ID: 166548)
======================================================================
posted 9 years ago
-
Number of slices to send:
Optional ‘thank-you’ note:
Hello,
I do not have admin rights on my machine. I have written a simple java source code which trying to create a registry for RMI calls. But the code is breaking because of lack of admin rights. Is there any way through which i can create registry even if i have no admin rights?
Following is additional information :
Code snippet :
Exception : Jun 11, 2013 4:57:49 PM java.util.prefs.WindowsPreferences openKey
WARNING: Could not open windows registry node SoftwareJavaSoftPrefscomnecjpdianascopeprefs at root 0x80000002. Windows RegOpenKey(…) returned error code 5.
Exception in thread «main» java.lang.SecurityException: Could not open windows registry node SoftwareJavaSoftPrefscomnecjpdianascopeprefs at root 0x80000002: Access denied
at java.util.prefs.WindowsPreferences.openKey(WindowsPreferences.java:513)
at java.util.prefs.WindowsPreferences.openKey(WindowsPreferences.java:480)
at java.util.prefs.WindowsPreferences.openKey(WindowsPreferences.java:466)
at java.util.prefs.WindowsPreferences.putSpi(WindowsPreferences.java:612)
at java.util.prefs.AbstractPreferences.put(AbstractPreferences.java:251)
at com.nec.jp.dianascope.util.PreferencesUtil.setRmiPortPreference(PreferencesUtil.java:35)
at com.nec.jp.dianascope.CoreServer.main(CoreServer.java:5562)
Bartender
Posts: 3323
posted 9 years ago
-
Number of slices to send:
Optional ‘thank-you’ note:
Please UseCodeTags (← click) when posting code as it makes it easier for people to read your code. I’ve added them for you this time.
I don’t think this is related to RMI but rather to using the preferences api to store data in the registry. What does your PreferencesUtil class do?
Anu Gaur
Greenhorn
Posts: 11
posted 9 years ago
-
Number of slices to send:
Optional ‘thank-you’ note:
Hi,
Snippet for PreferencesUtil.java method — setRmiPortPreference()
So this is basically getting the node from system where in it is failing because of lack of admin rights. Is it correct?
Also, i tried by comment out of this method call, but still it failed on next line where in it is trying to create the registry.
Please suggest.
posted 9 years ago
-
Number of slices to send:
Optional ‘thank-you’ note:
Swastik
Tony Docherty
Bartender
Posts: 3323
posted 9 years ago
-
Number of slices to send:
Optional ‘thank-you’ note:
So this is basically getting the node from system where in it is failing because of lack of admin rights. Is it correct?
That’s what it looks like to me.
Also, i tried by comment out of this method call, but still it failed on next line where in it is trying to create the registry.
You’ll need to post the full error message and stack trace you are getting for the new failure. The one you posted earlier is from using the preferences api.
Java: «1.4.2_06»
OS: Windows 2000
Prefedit: 0.6
Me: holyj1@fel.cvut.cz
Description:
PrefEdit won’t start because there is some problem
with registry. In my java application I had the same
problem — though the preferences got created in win.
registry, I couldn’t change them later on. Is it a
problem of registry permissions (but NetBeans, eclispe,
jEdit work OK and perhaps they use prefs. too) or of
st. else? Thanks!
**********
THE ERROR:
C:> java -jar prefedit.jar
10.1.2005 13:18:16 java.util.prefs.WindowsPreferences
<init>
WARNING: Could not open/create prefs root node
SoftwareJavaSoftPrefs at root 0
x80000002. Windows RegCreateKeyEx(…) returned error
code 5.
10.1.2005 13:18:16 java.util.prefs.WindowsPreferences
WindowsRegOpenKey1
WARNING: Trying to recreate Windows registry node
SoftwareJavaSoftPrefs at roo
t 0x80000002.
10.1.2005 13:18:16 java.util.prefs.WindowsPreferences
openKey
WARNING: Could not open windows registry node
SoftwareJavaSoftPrefs at root 0x
80000002. Windows RegOpenKey(…) returned error code 2.
Exception in thread «main»
java.util.prefs.BackingStoreException: Could not open
windowsregistry node SoftwareJavaSoftPrefs at root
0x80000002.
at
java.util.prefs.WindowsPreferences.childrenNamesSpi(Unknown
Source)
at
java.util.prefs.AbstractPreferences.childrenNames(Unknown
Source)
at
de.jppietsch.prefedit.PreferencesTreeNode.<init>(PreferencesTreeNode.
java:58)
at
de.jppietsch.prefedit.RootTreeNode.<init>(RootTreeNode.java:43)
at
de.jppietsch.prefedit.PrefEditWindow.<init>(PrefEditWindow.java:154)
at
de.jppietsch.prefedit.PrefEdit.main(PrefEdit.java:60)